版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机网络课程设计书学院计算机与信息工程学院专业网络工程课程名称计算机网络题目滑动窗口协议仿真完成期限自2015年6月23日至2015年6月29日共1周一、项目的目的掌握滑动窗口协议的工作原理,并能够用所学计算机高级 语言进行编程模拟其运行过程;培养学生的动手实践和思考能 力。二,项目任务的主要容和要求(1) 本次设计任务是根据滑动窗口协议的工作原理,在Visual C+ 6.0的平台上用C+语言编写一个基本TCP滑动窗口协议的 模拟程序。(2) 要求该程序能够实现滑动窗口协议的发送和接收数据帧 功能,在此功能上体现滑动窗口协议的运作。容及任务(3) 程序按照滑动窗口协议实现端对端的数据传送。
2、包括协 议的各种策略,如包丢失、停等应答、超时等都应有所仿真实现;(4) 显示数据传送过程中的各项具体数据。双方帧的个数变 化,帧序号,发送和接受速度,暂停或重传提示等;三、项目设计(研究)思路(1) 查阅相关资料,理解滑动窗口协议的工作原理;(2) 设计滑动窗口协议实现端对端数据传送的功能流程图;(3) 编写代码实现滑动窗口协议工作的模拟程序,包括包丢失、停等应答、超时等;(4) 测试程序功能的实现情况。四、具体成果形式和要求(1) 滑动窗口协议实现端对端数据传送的模拟程序。(2) 按照要求撰写课程设计报告并准备答辩。起止日期工作容2015.6.23-2015了解网络协议编程的基本知识;进.
3、6. 24度2015.6. 25-2015了解滑动窗口协议的工作机制;安.6. 26排2015. 6. 27-2015使用编程语言编写一个滑动窗口协议的模拟.6. 28程序,按要现程序。2015. 6. 29最后汇总,调试,答辩1希仁.计算机网络M. 4版.:电子工业,2003.2仁发.何彦.基于虛拟实验方法的滑动窗口协议分析J.主系统仿真学报.2002. 8 (14) ; 1026 - 1063.要3建中,冬冬.滑动窗口规模的动态调整算法J.软件学报.参2004. 12 (15):1800 - 1814.考4王栩,建中,王伟平.基于滑动窗口的数据流压缩技术及连资续查询处理方法J .计算机研究
4、与发展.2004. 10 (41):料1639- 1644.5特南鲍姆.计算机网络(第四版).清华指导教师意见(签字):X年X月X日系(教研室)主任(签字):X年X月X日意见学院名称: 班级名称: 学生:_ 学 号: 题指导教师姓 名:计算机网络课程设计说明书(封面)计算机与信息工程学院网络工程一班201321滑动窗口协议仿真邵雪梅起止日期:2015.6. 23-2015.6. 29第一部分:正文部分一,选题背景早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送 数据。由于大家不知道网络拥塞状况,一起发送数据,导致中间结点 阻塞掉包,谁也发不了数据。在数据传输过程中,我们总是希望数据 传
5、输的更快一些,但如果发送方把数据发送的过快,接收方就可能来不及 接收,这就造成数据的丢失。因此就有了滑动窗口机制来解决这些问 题。早期我们使用的是lbit滑动窗口协议,一次只发送一个帧,等 收到ack确认才发下一个帧,这样对信道的利用率太低了。因此提出 了一种采用累积确认的连续ARQ协议,接收方不必对收到的帧逐个发送 ack确认,而是收到几个帧后,对按序到达的最后一个帧发送ack确认。 同lbit滑动窗口协议相比,大大减少了 ack数量,并消除了延迟ack对 传输效率的影响。但是,这会产生一个新的问题,如果发送方发送了 5个 帧,而中间的第3个帧丢失了。这时接收方只能对前2个帧发出确认。发 送
6、方无法知道后面三个帧的下落,只好把后面的3个帧再重传一次,这就 是回退N协议。为了解决这个问题,又提出了选择重传协议。当接收方 发现某帧出错后,继续接受后面送来的正确的帧,只是不交付它们, 存放在自己的缓冲区中,并且要求发送方重传出错的那一帧。一旦收 到重传来的帧后,就可以将存于缓冲区中的其余帧一并按正确的顺序 递交给主机。本文主要介绍如何根据滑动窗口协议的原理,在Visual C+ 的平台上设计一个滑动窗口协议模拟程序,并最终使该程序得以实现。本 次程序设计分两部分:第一部分是发送方,第二部分是接收方。通过发送 方和接收方之间的数据帧传输模拟,学习滑动窗口协议控制流量的原理和 方法,以及滑动
7、窗口协议的工作机制。二、设计理念2.1滑动傷口协议工作原理TCP滑动窗口用来暂存两台计算机间要传送的数据分组。每台运行TCP协议 的计算机有两个滑动窗口: 一个用于数据发送,另一个用于数据接收。发送端待 发数据分组在缓冲区排队等待送出。被滑动窗口框入的分组,是可以在未收到接 收确认的情况下最多送出的部分。滑动窗口左端标志X的分组,是已经被接收端 确认收到的分组。随着新的确认到来,窗口不断向右滑动。滑动窗口算法工作过程如下:首先,发送方为每1帧赋一个序号(sequence number),记作SeqNum。现 在,我们忽略SeqNuni是由有限大小的头部字段实现的事实,而假设它能无限增 大。发送
8、方维护3个变量:发送窗口大小(send window size),记作SWS,给 出发送方能够发送但未确认的帧数的上界;LAR表示最近收到的确认帧(last acknowledgement received)的序号;LFS 表示最近发送的帧(last frame sent) 的序号,发送方还维持如下的不变式:LAR-LFSWSWS 。2-1滑动窗口协议工作图窗口协议算法有三个功能:在不可靠链路上可靠地传输帧保持帧的传输顺序支持流量控制2.2选择重传协议在选择重传协议中,当接收方发现某帧出错后,其后继续送来的正确的帧虽 然不能立即递交给接收方的高层,但接收方仍可收下来,存放在一个缓冲区中, 同时
9、要求发送方重新传送出错的那一帧。一旦收到重新传来的帧后,就可以原已 存于缓冲区中的其余帧一并按正确的顺序递交髙层。这种方法称为选择重发 (SELECTICE REPEAT),其工作过程如图所示。显然,选择重发减少了浪费,但要 求接收方有足够大的缓冲区空间。娅帧0 12ld4l5l67234579 10 W窪wxw接收帧0 1卜;卜41 11 Z.itZ16-J2f791()111213 14R存*递交,毅6依次递交尙层2-2选择重传协议原理图三、过程论述(1) 发送方程序流程图:发送方按收方校验和检査发送幷燉定时器恢炒报文滋主机不对对期待峽号4 期待祯号收到帕的仔夸 钢待輸号巻待发送帧号釧 发
10、送帧号警待 Ack腋|0 一发送皆号 %|从主亦对5刃3-1发送方程序流程图(2) 接收方程序流程图:32接受方程序流程图3.2功能实现(1)发送方程序:本程序设有四个变量:一是窗口大小变量,二是第一帧序列号变量,三是最近发送的帧变量,最后一个是最近收到的确认帧变量。swpstatel. head=NlLL; /变量初始值为空swpstate1. sendq=sendq rear=(structsendq slot*)malloc(sizeof(structsen dq_slot);if (!swpstate1. sendq) exit (1):sendq_rear-next=NULL;pri
11、ntf(请输入窗口大小:”);scanf (M%ld,r tftswpstatel. sws) ;/输入窗 口大小 swpstatel. rws=swpstatel. sws; /把窗 口大小的值赋给变量 if (swpstate1. sws0)printf(请输入第一帧的序列号:”);scanf (U%1 d,r,&swpstate 1. hdr. seqnum) ;/输入第一帧序列号swpstatel. nfe=swpstatel. hdr. seqnum; /把第一帧的值放进缓冲池 sendp= (struct sendq_slot*) malloc (size of (struct s
12、endq slot): if (!sendp) exit (1); sendp-msg=swpstate1. hdr seqnum; sendp-t imeout=l; sendp-next二NULL; sendq_rear-next=sendp; sendq_rear=sendp; 一一swpstate1. sws;swpstatel. lfs=swpstatel. hdr. seqnum; /最近发送的帧取值 swpstatel. lar=swpstatel. hdr. seqnum; /最近收到的确认帧取值 dowhile(swpstatel. sws0) 当窗口大小大于0时,执行以下的
13、循环sendp=(struct sendq_slot*)malloc(sizeof(struct sendqslot); if (!sendp) exit (1);sendp-msg二swpstatel. lfs+1;/如果输入的帧序号大于之前帧序号,那么窗口向前滑动sendp-t imeout=l; /时延为 1sendp-next=NULL;sendq_rear-next=sendp;sendq rear=sendp;swpstate1. sws;+swpstate1. lfs;swpstatel. hdr. acknum二0; /ACK 清空swpstatel. hdr. flags=0
14、; /存储缓冲池清空 printf (n 最近收到的 ACK 的帧序号:%ldnH, swpstatel. lar); 输出最近收到的ACK帧序号 printf (最近发送的帧序号(发送新帧后):%ldnu, swpstatel. lfs); /输出最近发送帧序号(2)接收方的接收原则从总体上看是先判断输入的数据帧是否在接收围之,若 是,则继续判断是否符合其他接收条件;若不是,则马上丢弃该数据帧,不再进 行其他条件的判断。struct sendq slot *sendq_rear, *sendp, *p3, *p4;/设定变量struct recvqslot *recvp,*recvq_rea
15、r,*pl,*p2;if(swpstate1 hdr flags=0)上次输入的数据帧被放置在缓存区,输入区被清空do 如果继续接收数据帧则实施下面循环printf(H请输入收到的数据帧号:);scanf(”Id,&a);if (a=swpstatel. nfe&anext=NULL;recvq_rear-next=recvp; recvq_rear=recvp;elseprintf (*所输数据不在接收窗口 !);break ;/跳出该循环(3) 若输入数据帧在接收围则继续判断并进行以下循环。recvp-msg=a;if (recvp-msg=swpstatel. nfe) /是否放入缓存判
16、断recvp-received二1;elserecvp-received二0;一一swpstate1. rws;if(recvp-received=l) /数据帧被接收,则进行下面语句 a=a-l;do a=a+l;if (swpstate1. head=NULL)break;pl=swpstate1. head;flag=O;while (a!=pl-msg)&(pl-next!=NULL)p2=pl;pl=pl-next;)if (a=pl-msg)flag=l;if(pl=swpstate1 head)swpstate1. head=swpstatel. head-next;else p
17、2-next=pl-next;swpstate1. nfe=a+l:swpstate1 hdr acknuma+l:swpstate1. hdr flags=l;while(flag=l);printf (UACK 号(期待的下一帧的序号):%ldnh, swpstatel. nfe); printf(没按序接受的序号:nw);pl=swpstate1. head;while(pl!=NULL)printf (M%ldtr,,pl-msg);pl二pl-next;(4) 当接收完一个数据帧时,我们可以选择终止下面的继续接收,也可以选择 继续接收。如果继续接收,那么程序跳到判断循环,继续判断是否
18、接收下一个数 据帧,原理与上面相当。while(swpstatel. rws0)&(b=l);if (swpstate1. hdr flags=l)p3=swpstate1. sendq-next;flag=O;while(swpstate1. hdr acknum)!=p3-msg&p3一next!二NULL)p4=p3;p3二p3-next;if(swpstate1. hdr acknum二二p3一msg)flag=l;if(p3-msg=swpstate1. sendq-next-msg)swpstateI. sendq-next=p3; else swpstate1. sendq-ne
19、xt=p3;swpstate1. sws=swpstate1. sws+(swpstate1. sendq一next一msg一swpstate1. lar );swpstate1. lar二swpstate1. sendq一nextmsg;swpstate 1. hdr seqntnn 二 swpstate 1 hdr ack num;printf(w最近收到的 ACK 的帧序号(收到 ACK 后):%ldn,r, swpstatel. lar);printf(”最近发送的帧序号(此时还未发送新的数 据):%ldnu, swpstatel. lfs);四、结果分析滑动窗口协议的基本原理就是在任
20、意时刻,发送方都维持了一个连续 的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续 的允许接收的帧的序号,称为接收窗口。发送窗口和接收窗口的序号的上 下界不一定要一样,甚至大小也可以不同。不同的滑动窗口协议窗口大小 一般不同。发送方窗口的序号代表了那些已经被发送,但是还没有被确认 的帧,或者是那些可以被发送的帧。接受方为其窗口的每一个序号保留了一个 缓冲区。与每个缓冲区相关联的还有一位,用来指明该缓冲区是满的还是空的。若从滑动窗口的观点来统一看待1比特滑动窗口、后退n及选择重传三 种协议,它们的差别仅在于各自窗口尺寸的大小不同而已。1比特滑动窗口 协议:发送窗口 =1,接收窗口
21、=1;后退N协议:发送窗口 1,接收窗口 =1; 选择重传协议:发送窗口 1,接收窗口五、结论(或总结)下面我以窗口大小为11,第一帧序列号为3,做程序的测试贰 *Ht Dobucj&2W 口协设锻跻沃、冠口大小;匚1憩址尝劉阿U:K迥狮序号,3 簷瞰萸器羅点聲严切13 養糜瞬噱唤杪3 址线按收血 若绘.锹入,.若不是.没技序聂或h序弓*迪纶挨也忱7若是.舗入1若不是. 馨譎站3 和纶養ifei彤若是播入,.若不是.没按序谑或亦序号=地金挨也忱7若是.舗入1若不是. 加朋删譎為 衩按序按涵序号=堆纶養世助?若是.做入,.若不是.没技序按洒序号:矗维挨收忱彳若是.触入一 若不是. 川驚翻樂瞬諾号一 9 汝按序扶受药序号=输入叭锚入叭锚入叭锚入叭图5测试结果(1)整体窗口展示,命令行界面5-1图(2)输入窗口大小及第一帧序列号-rj|x滑动宙口协谊.Rie購1 序曜皤 T的Kfr龙 sAc呗的 T呦旳列 mB更收 收苓八帧3 3新 务35-2图(3)当输入的接收帧并不是ACK期待的帧,那么根据滑动窗口协议该帧不被 接收,且把该帧存放在缓冲区。ACK (期持的卞一帧的序号):3 没按序養芟旳序号:65-3图(4)若输入的帧超过了窗口大小,那么系统会显示该帧不在接收围,并拒绝接
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高分子材料与工程基础知识单选题100道及答案解析
- 地铁配电箱招投标资料
- 口腔疾病诊所专家招聘合同模板
- 女性职场权益维护公正公平
- 医疗护理管理准则提升服务质量
- 桥梁安全评估施工合同
- 住宅小区廉政合同施工
- 施工合同变更审批流程
- 城市停车场施工管理合同
- 2024医疗健康信息管理系统开发与应用合同
- 中国民族民俗:白族三道茶
- 燃气锅炉房安全风险分级清单
- 自动扶梯与自动人行道2023版自行检测规则
- TD-T 1044-2014 生产项目土地复垦验收规程
- 《鲁滨逊漂流记》读书心得600字左右5篇
- Unit 1 Art 单词默写 高中英语人教版(2019)选择性必修第三册
- 初期雨水及超标废水收集工程施工方案
- 九招致胜课件完整版
- 中国智库名录地区索引-北京地区
- ICU建设与管理指南
- GB/T 18283-2008商品条码店内条码
评论
0/150
提交评论