下载此文档

北邮 计网 滑动窗口.doc


文档分类:IT计算机 | 页数:约14页 举报非法文档有奖
1/14
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/14 下载此文档
文档列表 文档介绍
滑动窗口协议实验报告班级:姓名学号: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_f

北邮 计网 滑动窗口 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数14
  • 收藏数0 收藏
  • 顶次数0
  • 上传人yunde113
  • 文件大小0 KB
  • 时间2014-01-28