版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ARQ协议ARQ协议ARQ协议ARQ协议ARQ协议任务1.
同学编写数据链路层通信协议,由《发送端程序》和《接收端程序》实现,确保数据可靠传输;2.
总结实验过程(实验报告,左侧装订):方案、编程、调试、结果、分析、结论。成绩评定若完全实现无差错传输(无丢失、无差错、不重叠、不乱序、...)且实验报告出色,5分;若完成部分无差错传输,依据实验结果定成绩,3~4分;若没有完成基本的传输任务,依据实验结果定成绩,1~2分;没有进行实验和无实验报告者,0分;实验环境Windows9x/NT/2000/XP/2003TCP/IP协议同学程序认真复习数据链路层内容,熟悉编程语言C、C++和WINDOWS程序设计技术(查阅参考书);开发工具:VisualC++6.0、VisualBasic6.0、C++Builder、Java、C#、TurboC/C++或其它;程序示例:理想信道的《发送端程序》和《接收端程序》(含源码VC6.0);ARQ基本协议1:_引入检错和应答帧ARQ基本协议2:_引入超时计时器ARQ基本协议3:_引入数据帧携带发送序号0~1ARQ基本协议4:_引入确认帧携带发送序号0~1ARQ基本协议5:_引入应答帧含有校验码ARQ基本协议6:_引入数据帧和确认帧含有发送序号0~7,Ws=1,Ws=1下载:ARQ基本协议1~6及数字信道仿真程序示例实验指导协议设计建议-协议中不考虑成帧数据帧和应答帧以字节为单位;数据帧:低4位D3~D0为数据段(取值0000B~1001B,即0~9),最高位为校验位(D7),发送序号段:D6~D4;应答帧:确认帧ACK:低4位D3~D0取值1111B(FH),否认帧NAK:低4位D3~D0取值1110B(EH),发送序号段:D6~D4;按上述定义,发送序号个数最大为8;实际使用时,可自行选取发送序号个数2或4,甚至不使用。-协议中考虑成帧参见授课讲义和教材的相关内容;数据帧:帧头+发送序号+数据段+校验段+帧尾;应答帧:帧头+发送序号+校验段+帧尾;-协议方案提示基本ARQ协议;否认帧不必携带出错数据帧的发送序号。连续ARQ协议-回退N帧ARQ协议;应采用滑动窗口技术和否认帧应携带出错数据帧的发送序号。连续ARQ协议-选择重发ARQ协议;基本同上;信道仿真程序功能:可仿真信道上的信息(数据帧或应答帧)产生丢失、产生差错和传输时延;下载:V1.21,解压后,直接运行!界面:实验系统原理《发送端程序》、《信道仿真程序》和《接收端程序》采用UDP(TCP/IP)通信;若单机实验:《发送端程序》、《信道仿真程序》和《接收端程序》的IP地址设置为(本机);《发送端程序》的端口=6666、《信道仿真程序》的端口=7777、《接收端程序》的端口=8888;用户程序(《发送端程序》和《接收端程序》)的信息发送到信道(《信道仿真程序》),《信道仿真程序》经过处理(产生丢失、产生差错和传输时延),然后转发到对方。参考程序段1.设置(偶)校验位//---------------------------------------------------voidSetCheck(char&c)//设置(偶)校验位D7(一个字节){inti,sum=0;BYTEx=0x01;for(i=0;i<7;i++)//求D6~D0位的有1的个数->sum{if(c&x)sum++;x=x<<1;}if(sum%2)c=c|0x80;//若sum为奇数,则置D7=1elsec=c&0x7F;//若sum为偶数,则置D7=0}//---------------------------------------------------2..校验(偶)校验位//---------------------------------------------------boolcheckSum(BYTEc)//(偶)校验计算(一个字节){inti,sum=0;BYTEx=0x01;for(i=0;i<8;i++)//求D7~D0位的有1的个数->sum{if(c&x)sum++;x=x><<1;}if(sum%2)returnfalse;//若sum为奇数,则有差错!returntrue;//若sum为偶数,则无差错}//-----------------------------------------------------3.定时器函数(WIN32API函数)//---------------------------------------------------#defineID_TIMER1//定时器标号#defineID_TIMER_c1000L//超时时间:1000L=1000ms//消息处理LRESULTCALLBACKWndProc(HWNDhW,UINTmsg,WPARAMwP,LPARAMlP){switch(msg){caseWM_XXXXX://其它事件触发.......SetTimer(hW,ID_TIMER,ID_TIMER_c,NULL);//启动Timer.......KillTimer(hW,ID_TIMER);//停止Timer.......break;caseWM_TIMER://Timer事件触发.......KillTimer(hW,ID_TIMER);//停止Timer.wlcSend(aa[Sendi]);//物理层:发送一个字节,重发.SetTimer(hW,ID_TIMER,ID_TIMER_c,NULL);//启动Timer.break;caseWM_XXXXX://其它事件触发.......break;}}//------------------------------------------------------实验:数据链路层-ARQ协议-指导示例0:理想信道情况实现:假设:信道是理想信道,即数据信号在信道中传输过程中,不会出现差错、丢失和随机延迟;《发送端程序》直接发生数据,《接收端程序》直接接收数据。问题:若信道是理想的,《发送端程序》发送的数据能否可靠传输地到达《接收端程序》?若信道不是理想的,《发送端程序》发送的数据能否可靠传输地到达《接收端程序》?会出现什么现象?示例1:采用检错手段,解决差错问题实现:数据帧含有一位(偶)校验位D7;《接收端程序》对数据帧的进行检错,通过应答帧告诉发送端接收正确与否,(应答帧是确认帧ACK和否认帧NAK的统称);ACK码=0FH,NAK码=0EH;《发送端程序》得到ACK,将发送下一个数据;《发送端程序》得到NAK,将重发刚才发送的数据。问题:在什么情况下,发送端发送的数据可以无误地到达接收端?在什么情况下,发送端发送的数据不能可靠地传输到达接收端?会出现什么问题?示例2:采用超时计时器,解决因数据帧或应答帧的丢失所产生的“死锁”问题实现:发送端设立一个超时计时器,发送完一个数据帧时,就启动它;如果在规定时间tout内得不到应答帧,就判定为超时,重传数据帧;设置tout=1000ms。问题:如果tout的设置较长或较短,会出现什么问题?如何选取tout的长短?还存在什么问题?示例3:数据帧携带发送序号0~1,解决“重复帧”问题实现:使每个数据帧携带不同的发送序号Ns=0~1;如果接收端收到相同Ns的数据帧,则丢弃,并回送一个ACK;数据帧含有一位比特的发送序号D6(0/1)。问题:能彻底解决“重复帧”问题吗?还存在什么问题?示例4:ACK帧携带发送序号0~1,解决什么问题?实现:使每个ACK携带不同的发送序号Ns=0~1;如果发送端收到ACK中的Ns与刚才发送的数据帧中的Ns相同,则发送下一个数据帧,否则,...;ACK含有一位比特的发送序号D6(0/1)。问题:ACK有必要携带Ns吗?还存在什么问题?示例5:应答帧含有一位(偶)校验位D7实现:...;...。问题:在应答帧中含有校验位有必要吗?还存在什么问题?示例6:发送
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论