数据链路层-ARQ协议-指导.docx_第1页
数据链路层-ARQ协议-指导.docx_第2页
数据链路层-ARQ协议-指导.docx_第3页
数据链路层-ARQ协议-指导.docx_第4页
数据链路层-ARQ协议-指导.docx_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ARQ协议ARQ协议ARQ协议ARQ协议ARQ协议 任务 1. 同学编写数据链路层通信协议,由发送端程序和接收端程序实现,确保数据可靠传输; 2. 总结实验过程(实验报告,左侧装订):方案、编程、调试、结果、分析、结论。 成绩评定 1. 若完全实现无差错传输(无丢失、无差错、不重叠、不乱序、.)且实验报告出色,5分; 2. 若完成部分无差错传输,依据实验结果定成绩,34分; 3. 若没有完成基本的传输任务,依据实验结果定成绩,12分; 4. 没有进行实验和无实验报告者,0分; 实验环境 1. Windows 9x/NT/2000/XP/2003 2. TCP/IP协议 同学程序 1. 认真复习数据链路层内容,熟悉编程语言C、C+和WINDOWS程序设计技术(查阅参考书); 2. 开发工具:Visual C+ 6.0、Visual Basic 6.0、C+ Builder、Java、C#、Turbo C/C+或其它; 3. 程序示例: 理想信道的发送端程序和接收端程序(含源码VC6.0); 1. ARQ基本协议1:_引入检错和应答帧 2. ARQ基本协议2:_引入超时计时器 3. ARQ基本协议3:_引入数据帧携带发送序号01 4. ARQ基本协议4:_引入确认帧携带发送序号01 5. ARQ基本协议5:_引入应答帧含有校验码 6. ARQ基本协议6:_引入数据帧和确认帧含有发送序号07,Ws=1,Ws=1 7. 下载: ARQ基本协议16及数字信道仿真程序 4. 示例实验指导 协议设计建议 协议中不考虑成帧1. 数据帧和应答帧以字节为单位; 2. 数据帧:低4位D3D0为数据段(取值0000B1001B,即09),最高位为校验位(D7),发送序号段:D6D4; 3. 应答帧:确认帧ACK:低4位D3D0取值1111B(FH),否认帧NAK:低4位D3D0取值1110B(EH),发送序号段:D6D4; 4. 按上述定义,发送序号个数最大为8;实际使用时,可自行选取发送序号个数2或4,甚至不使用。 协议中考虑成帧1. 参见授课讲义和教材的相关内容; 2. 数据帧:帧头+发送序号+数据段+校验段+帧尾; 3. 应答帧:帧头+发送序号+校验段+帧尾; 协议方案提示1. 基本ARQ协议;否认帧不必携带出错数据帧的发送序号。 2. 连续ARQ协议回退N帧ARQ协议;应采用滑动窗口技术和否认帧应携带出错数据帧的发送序号。 3. 连续ARQ协议选择重发ARQ协议;基本同上; 信道仿真程序 1. 功能:可仿真信道上的信息(数据帧或应答帧)产生丢失、产生差错和传输时延; 2. 下载:V1.21,解压后,直接运行! 1. 界面: 实验系统原理 1. 发送端程序、信道仿真程序和接收端程序采用UDP(TCP/IP)通信; 2. 若单机实验:发送端程序、信道仿真程序和接收端程序的IP地址设置为127.0.0.1(本机); 3. 发送端程序的端口=6666、信道仿真程序的端口=7777、接收端程序的端口=8888; 4. 用户程序(发送端程序和接收端程序)的信息发送到信道(信道仿真程序),信道仿真程序经过处理(产生丢失、产生差错和传输时延),然后转发到对方。 参考程序段 1.设置(偶)校验位/-void SetCheck(char& c) /设置(偶)校验位D7 (一个字节) int i,sum = 0; BYTE x = 0x01; for(i=0; isum if(c & x) sum+; x = x 1; if(sum % 2) c = c|0x80; /若sum为奇数,则置D71 else c = c & 0x7F; /若sum为偶数,则置D70 /-2.校验(偶)校验位/-bool checkSum(BYTE c) /(偶)校验计算(一个字节) int i,sum = 0; BYTE x = 0x01; for(i=0; isum if(c & x) sum+; x = x1; if(sum % 2) return false; /若sum为奇数,则有差错! return true; /若sum为偶数,则无差错 /-3.定时器函数(WIN32 API函数)/-#define ID_TIMER 1 /定时器标号 #define ID_TIMER_c 1000L /超时时间:1000L=1000 ms/消息处理 LRESULT CALLBACK WndProc(HWND hW, UINT msg, WPARAM wP, LPARAM lP) switch( msg ) case WM_XXXXX: /其它事件触发. . . SetTimer(hW, ID_TIMER, ID_TIMER_c, NULL);/启动 Timer. . . KillTimer(hW, ID_TIMER); /停止 Timer. . . break; case WM_TIMER: /Timer事件触发. . . KillTimer(hW, ID_TIMER); /停止 Timer. wlcSend(aaSendi); /物理层:发送一个字节,重发. SetTimer(hW, ID_TIMER, ID_TIMER_c, NULL); /启动Timer. break; case WM_XXXXX: /其它事件触发. . . break; /- 实验:数据链路层ARQ协议指导示例0:理想信道情况 实现: 1. 假设:信道是理想信道,即数据信号在信道中传输过程中,不会出现差错、丢失和随机延迟; 2. 发送端程序直接发生数据,接收端程序直接接收数据。 问题: 1. 若信道是理想的,发送端程序发送的数据能否可靠传输地到达接收端程序? 2. 若信道不是理想的,发送端程序发送的数据能否可靠传输地到达接收端程序?会出现什么现象? 示例1:采用检错手段,解决差错问题 实现: 1. 数据帧含有一位(偶)校验位D7; 接收端程序对数据帧的进行检错,通过应答帧告诉发送端接收正确与否,(应答帧是确认帧ACK和否认帧NAK的统称); 2. ACK码0FH,NAK码0EH; 3. 发送端程序得到ACK,将发送下一个数据; 4. 发送端程序得到NAK,将重发刚才发送的数据。 问题: 1. 在什么情况下,发送端发送的数据可以无误地到达接收端? 2. 在什么情况下,发送端发送的数据不能可靠地传输到达接收端?会出现什么问题? 示例2:采用超时计时器,解决因数据帧或应答帧的丢失所产生的“死锁”问题 实现: 1. 发送端设立一个超时计时器,发送完一个数据帧时,就启动它; 如果在规定时间tout内得不到应答帧,就判定为超时,重传数据帧; 2. 设置tout1000ms。 问题: 1. 如果tout的设置较长或较短,会出现什么问题?如何选取tout的长短? 2. 还存在什么问题? 示例3:数据帧携带发送序号01,解决“重复帧”问题 实现: 1. 使每个数据帧携带不同的发送序号Ns01; 2. 如果接收端收到相同Ns的数据帧, 则丢弃, 并回送一个ACK; 3. 数据帧含有一位比特的发送序号D6(0/1)。 问题: 1. 能彻底解决“重复帧”问题吗? 2. 还存在什么问题? 示例4:ACK帧携带发送序号01,解决什么问题? 实现: 1. 使每个ACK携带不同的发送序号Ns01; 2. 如果发送端收到ACK中的Ns与刚才发送的数据帧中的Ns相同, 则发送下一个数据帧,否则,.; 3. ACK含有一位比特的发送序号D6(0/1)。 问题: 1. ACK有必要携带Ns吗? 2. 还存在什么问题? 示例5:应答帧含有一位(偶)校验位D7 实现: 1. .; 2. .。 问题: 1. 在应答帧中含有校验位有必要吗? 2. 还存在什么问题? 示例6:发送序号为07,发送窗口Ws1,接收窗口Wr1 实现: 1. 数据帧含有发送序号NsD6D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论