1/14
0/100
您的浏览器不支持进度条
下载所得到的文件列表
北邮 计网 滑动窗口.doc
文档介绍:
滑动窗口协议实验报告班级:姓名学号:ytinrete一、实验内容和实验目的利用所学数据链路层原理,自己设计一个滑动窗口协议,在仿真环境下编程实现有噪音信道环境下两站点之间无差错双工通信。信道模型为8000bps全双工卫星信道,信道传播时延270毫秒,信道误码率为10-5,信道提供字节流传输服务,网络层分组长度固定为256字节。通过该实验,进一步巩固和深刻理解数据链路层误码检测的CRC校验技术,以及滑动窗口的工作机理。滑动窗口机制的两个主要目标:实现有噪音信道环境下的无差错传输;(2)充分利用传输信道的带宽。在程序能够稳定运行并成功实现第一个目标之后,运行程序并检查在信道没有误码和存在误码两种情况下的信道利用率。为实现第二个目标,提高滑动窗口协议信道利用率,需要根据信道实际情况合理地为协议配置工作参数,包括滑动窗口的大小和重传定时器时限以及ACK搭载定时器的时限。这些参数的设计,需要充分理解滑动窗口协议的工作原理并利用所学的理论知识,经过认真的推算,计算出最优取值,并通过程序的运行进行验证。通过该实验提高同学的编程能力和实践动手能力,体验协议软件在设计上各种问题和调试难度,设计在运行期可跟踪分析协议工作过程的协议软件,巩固和深刻理解理论知识并利用这些知识对系统进行优化,对实际系统中的协议分层和协议软件的设计与实现有基本的认识。实验环境操作系统:windows7ultimate64sp1开发环境:visualstudio2010协议设计⑴帧中的各个字段的定义及编码|KIND(1)|SEQ(1)|ACK(1)|DATA(0~256)|CRC(4)|数字为所占的字大小,二进制编码Kind:帧类型,分为“FRAME_DATA”,“FRAME_NAK”,“FRAME_ACK”SEQ:帧序号ACK:ACK序号DATA:数据域(当帧类型为ack帧或nak帧时,数据域不添加数据)CRC:CRC校验位⑵两个站点间信息交换的过程控制发送方:当发送缓冲区不满时,从网络层抓取数据并发送,发送窗口右端向右滑动,当接收到nak时立即重发数据,当数据帧计时器超时时则重发该帧,当发送缓冲区左端期待的ack到来时发送窗口左端向右滑动,当发送缓冲区填满时暂停,由此循环。接收方:当接收到数据帧时,若crc校验失败则立即发送nak,若校验成功且帧序号在缓冲区范围内则将帧存储在缓冲区,当缓冲区最左端的数据到来时则滑动窗口,将存储在缓冲区的数据传给网络层,当ack计时器超时时主动发送ack,由此循环。四、软件设计我们选择的是带有NAK的选择重传协议数据结构⑴帧结构:structFRAME{ unsignedcharkind; //帧类型unsignedcharack; //ackunsignedcharseq; //帧序号unsignedchardata[PKT_LEN]; //帧数据unsignedintpadding; //附加内容};⑵定义项:#defineMAX_SEQ31 //定义了最大窗口序列#defineDATA_TIMER3800 //定义了超时重发的定时器时间#defineACK_TIMER1100 //定义了ACK定时器超时重发时间#defineNR_BUFS((MAX_SEQ+1)/2) //NR_BUFS定义了缓冲#defineinc(k)if(k<MAX_SEQ)k++;elsek=0 //宏定义了窗口更新函数,按循环式前进更新。typedefenum{False,True}boolean; //枚举类型typedefunsignedcharseq_nr; //命名帧序号类型⑶变量:unsignedcharout_buf[NR_BUFS][PKT_LEN]; //输出流缓冲unsignedcharin_buf[NR_BUFS][PKT_LEN];//输入流缓冲booleanno_nak=True; //判断表示没有NAKstaticintphl_ready=0; //表征物理层状态1为准备好,0为未准备seq_nrack_expected=0;//发送窗左侧seq_nrnext_frame_to_send=0; //发送窗右侧seq_nrframe_expected=0;//接受创左侧seq_nrtoo_far=NR_BUFS;//接收窗右侧inti;//缓冲池标记seq_nrnbuffered=0;//输出缓冲标记booleanarrived[NR_BUFS];//到达标记intevent,arg; //事件标记structFRAMEr;intlen=0; //用来保存返回的包长度。模块结构分析staticbooleanbetween(seq_nra,seq_nrb,seq_nrc)//判断是否在窗口内staticvoidsend_data_frame(unsignedcharfk,seq_nrframe_nr,seq_nrframe_expected)//根据发送数据类型是“FRAME_DATA”,“FRAME_NAK”,“FRAME_ACK”来发送不同的数据staticvoidput_frame(unsignedchar*frame,intlen)//进行CRC校验,同时添加特定的标识字段然后上交给物理层intmain(intargc,char**argv)//主函数模块,执行程序算法流程noyes实验结果分析⒈理论分析描述你所实现的协议软件是否实现了有误码信道环境中无差错传输功能。答:理论上是可以的,由于采用CRC校验和重传机制,出现错误会重新传输。(2)程序的健壮性如何,能否可靠地长时间运行。答:程序的健壮性较好,能够可靠长时间运行。协议参数的选取:滑动窗口的大小,重传定时器的时限,这些参数是怎样确定的?根据信道特性数据,分组层分组的大小,以及你的滑动窗口机制,给出定量分析详细列举出选择这些参数值的具体 答:实验中物理层提供了一种字节流传输服务,使用字节填充技术成帧,分组长度固定为256字节。滑动窗口的大小直接涉及到信道利用率和数据拥塞问题,若太小,将导致信道利用率过低,信道中长时间没有数据传送;若太大,数据发送过快,将造成接收方数据链路层来不及处理,数据物理层及信道发生拥塞现象导致数据丢失,出错率增加。滑动窗口的大小N,信道传输时延a,发送率c,帧大小f应满足关系式:N>=[2a+2*(f/c)]/(f/c),同时通过实际测试的结果分析得到合适的N值,防止N过大,最终值设为16。重传计时器的时限涉及到重传的响应时间,若太大,将导致重传等待的时间过久;若太小,将导致较为频繁的重传,两种情况均将导致信道利用率下降。通过实际测试,设为3800ms左右,ack_timer为1100左右时效率最高。(4)理论分析:根据所设计的滑动窗口工作机制(Go-Back-N或者选择重传),推导出在无差错信道环境下分组层能获得的最大信道利用率;推导出在有误码条件下重传操作及时发生等理想情况下分组层能获得的最大信道利用率。给出理论推导过程。理论推导的目的是得到信道利用率的极限数据。为了简化 内容来自淘豆网www.taodocs.com转载请标明出处.