2022年滑动窗口协议模拟程序的设计方案与实现.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年滑动窗口协议模拟程序的设计方案与实现.docx》由会员分享,可在线阅读,更多相关《2022年滑动窗口协议模拟程序的设计方案与实现.docx(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品学习资源长沙理工高校网络协议编程课程设计报告梁碧莹学院运算机与通信工程专业网络工程班级网络 08-02学号 202158080205同学姓名梁碧莹指导老师王静课程成果完成日期2021 年 7 月 2 日欢迎下载精品学习资源课程设计任务书运算机与通信工程学院网络工程专业欢迎下载精品学习资源课程名称网络协议编程课程设计时间20212021 学年其次学期1819 周欢迎下载精品学习资源同学姓名梁碧莹指导老师王静题目滑动窗口协议模拟程序的设计与实现主要内容:(1) ) 明白网络协议编程的基本学问;(2) ) 明白滑动窗口协议的工作机制;(3) ) 使用编程语言编写一个滑动窗口协议的模拟程序,按要求
2、实现程序;要求:(1) )按要求编写课程设计报告书,能正确阐述设计结果;(2) 通过课程设计培育同学严谨的科学态度,仔细的工作作风和团队协作精神;(3) )学会文献检索的基本方法和综合运用文献才能;(4) )在老师的指导下,要求每个同学独立完成课程设计的全部内容;应当提交的文件:(1) ) 课程设计报告;(2) ) 课程设计附 件(源程 序、各类 图纸、试验 数据、 运行截图等);课程设计成果评定欢迎下载精品学习资源学院运算机通信工程专业网络工程班级网络 08-02 班学号 202158080205同学姓名梁碧莹指导老师王静课程成果完成日期 2021年 7 月 2 日指导老师对同学在课程设计中
3、的评判评分工程课程设计中的制造性成果同学把握课程内容的程度课程设计完成情形课程设计动手才能文字表达学习态度规范要求课程设计论文的质量优良中及格不及格指导老师对课程设计的评定看法综合成果指导老师签字年月日滑动窗口协议模拟程序的设计与实现同学:梁碧莹指导老师:王静欢迎下载精品学习资源摘要: 本文主要介绍如何依据滑动窗口协议的原理,在 Visual C+ 的平台上设计一个滑动窗口协议模拟程序,并最终使该程序得以实现;本次程序设计分两部分:第一部分是发送方,其次部分是接收方;通过发送方和接收方之间的数据帧传输模拟,学习滑动窗口协议掌握流量的原理和方法,以及滑动窗口协议的工作机制;关键词: 滑动窗口协议
4、流量掌握 工作机制 模拟程序Design and Implementation of Sliding Window Protocol ProceduresStudent: Liang BiyingInstructor: Wang JingAbstract:This paper describes the principle of Sliding Window Protocol and how to design and implement a procedure about the Sliding Window Protocol. The program design in two parts
5、, one is the sender, the other is the receiver.After all, studying the principle and method of how the Sliding Window Protocol control the flow, and how the Sliding Window Protocol works through the transmission of data between the sender and the receiver.Keywords: Sliding window protocolFlow contro
6、l Working mechanism Simulation program目录1 引言 1欢迎下载精品学习资源1.1 滑动窗口协议概述 11.2 本次设计任务 1 2 滑动窗口协议介绍 22.1 滑动窗口协议工作原理 22.2 滑动窗口算法 3 3 设计方案及分析 53.1 窗口机制总体设计及分析53.2 协议挑选及分析 63.3 发送方与接收方设计流程 7 4 程序测试 125 总结 155.1 程序改进与完善 155.2 设计总结 15参考文献 16附录 17欢迎下载精品学习资源1 引言随着网络的不断壮大,用户数量、信息量的需求不断增加,网络负荷越来越重;此时,我们迫切需要一种机制来掌握
7、网络的流量,削减网络拥堵的几 率,提高传输的效率;因此,一种名为滑动窗口的协议应运而生;滑动窗口协议,是TCP 使用的一种流量掌握方法;该协议答应发送方在停止并等待确认前可以连续发送多个分组;由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输;经测试证明,该协议仍能有效地解决 TCP 的高协议处理开销和 UDP 的低牢靠性之间的冲突 ,1.1 滑动窗口协议概述滑动窗口协议,是TCP 使用的一种流量掌握方法;滑动窗口协议也称为Go-Back-NGBN 协议;在该协议中,答应发送方传输多个分组(当有多个分组时)而不需等待确认,但它也受限于在流水账中未确认的分组数不能超过最大
8、答应数 N;只有在接收窗口向前滑动时(与此同时也发送了确认),发送窗口才有可能向前滑动;收发两端的窗口依据以上规律不断地向前滑动,因此这种协议又称为滑动窗口协议;当发送窗口和接收窗口的大小都等于1时,就是停止等待协议;当发送窗口大于1,接收窗口等于 1 时,就是回退 N 步协议;当发送窗口和接收窗口的大小均大于1 时,就是挑选重发协议;协议中规定,对于窗口内未经确认的分组需要重传;这种分组的数量最多可以等于发送窗口的大小,即滑动窗口的大小 n 减去 1(由于发送窗口不行能大于( n-1 ),起码接收窗口要大于等于 1);1.2 本次设计任务本次的设计任务是依据滑动窗口协议的工作原理,在Visu
9、al C+ 6.0的平台上用 C+语言编写一个基于 TCP滑动窗口协议的模拟程序;要求该程序能够实现滑动窗口协议的发送和接收数据帧功能,在此功能上表达滑动窗口协议的运作,如:发送帧被接收与否的判定,帧超时重发,帧缓欢迎下载精品学习资源存等;2滑动窗口协议介绍2.1 滑动窗口协议工作原理TCP 协议在工作时,假如发送端的 TCP 协议软件每传输一个数据分组后, 必需等待接收端的确认才能够发送下一个分组,由于网络传输的时延,将有大量时间被用于等待确认,导致传输效率低下;为此TCP 在进行数据传输时使用了滑动窗口机制;TCP 滑动窗口用来暂存两台运算机间要传送的数据分组;每台运行TCP 协议的运算机
10、有两个滑动窗口:一个用于数据发送,另一个用于数据接收;发送端待发数据分组在缓冲区排队等待送出;被滑动窗口框入的分组,是可以在未收到接收确认的情形下最多送出的部分;滑动窗口左端标志X 的分组,是已经被接收端确认收到的分组;随着新的确认到来,窗口不断向右滑动;TCP 协议软件依靠滑动窗口机制解决传输效率和流量掌握问题;它可以在收到确认信息之前发送多个数据分组;这种机制使得网络通信处于劳碌状态, 提高了整个网络的吞吐率,它仍解决了端到端的通信流量掌握问题,答应接收端在拥有容纳足够数据的缓冲之前对传输进行限制;在实际运行中,TCP滑动窗口的大小是可以随时调整的;收发端TCP 协议软件在进行分组确认通信
11、时, 仍交换滑动窗口掌握信息,使得双方滑动窗口大小可以依据需要动态变化,达 到在提高数据传输效率的同时,防止拥塞的发生;称窗口左边沿向右边沿靠近为窗口合拢,这种现象发生在数据被发送和确认时;当窗口右边沿向右移动时将答应发送更多的数据,称之为窗口张开;这种 现象发生在另一端的接收进程读取已经确认的数据并释放了TCP 的接收缓存时;当右边沿向左移动时,称为窗口收缩; Host Requirements RFC剧烈建议不要使用这种方式;但 TCP必需能够在某一端产生这种情形时进行处理;假如左边沿到达右边沿,就称其为一个零窗口;欢迎下载精品学习资源2.2 滑动窗口算法滑动窗口算法工作过程如下:第一,发
12、送方为每 1 帧赋一个序号( sequence number),记作 SeqNum;现在,我们忽视SeqNum 是由有限大小的头部字段实现的事实,而假设它能无限增大;发送方保护 3 个变量:发送窗口大小( send window size),记作 SWS, 给动身送方能够发送但未确认的帧数的上界;LAR 表示最近收到的确认帧( last acknowledgement received)的序号; LFS 表示最近发送的帧( last frame sent)的序号,发送方仍保护如下的不变式:LAR-LFS SWS ;图 2-1 滑动窗口算法的时间线当一个确认到达时,发送方向右移动LAR ,从而答
13、应发送方发送另一帧;同时,发送方为所发的每个帧设置一个定时器,假如定时器在ACK 到达之前超时,就重发此帧;留意:发送方必需储备最多SWS 个帧,由于在它们得到确认之前必需预备重发;接收方保护下面3 个变量:接收窗口大小( receive window size),记为 RWS,给出接收方所能接收的无序帧数目的上界;LAF 表示可接收帧( largest acceptable fram)e 的序号; LFR 表示最近收到的帧( last framerece ived)的序号;接收方也保护如下不变式: LFS-LAR SWS图 2-2 接收方的滑动窗口当一个具有次序号SeqNum 的帧到达时,接
14、收方实行如下行动:假如欢迎下载精品学习资源SeqNum LFR 或 SeqNum LAF ,那么帧不在接收窗口内,于是被丢弃;假如 LFR SeqNum LAF,那么帧在接收窗口内,于是被接收;现在接收方需要决 定是否发送一个 ACK ;设 SeqNum To ACK 表示未被确认帧的最大序号,就序号小于或等于 SeqNum To ACK 的帧都已收到;即使已经收到更高序号的分组,接 收 方 仍 确 认 SeqNum To ACK的 接 收 ; 这 种 确 认 被 称 为 是 累 积 的( cumulative );然后它设置LFA = SeqNum To ACK ,并调整 LFA = LFR
15、 +LFRRWS;图 2-3 接收方的滑动窗口窗口协议算法有三个功能:在不行靠链路上牢靠地传输帧保持帧的传输次序支持流量掌握欢迎下载精品学习资源3设计方案及分析3.1 窗口机制总体设计及分析图 3-1发送方和接收方状态示意图设计分析:(1) ) 初始态,发送方没有帧发出,发送窗口前后沿相重合;接收方0 号窗口打开,等待接收 0 号帧;(2) ) 发送方打开 0 号窗口,表示已发出 0 帧但尚未确认返回信息;此时接收窗口状态不变;(3) ) 发送方打开 0、1 号窗口,表示 0、1 号帧均在等待确认之列;至此,发送方打开的窗口数已达规定限度,在未收到新的确认返回帧之前,发送 方将暂停发送新的数据
16、帧;接收窗口此时状态仍未变;(4) ) 接收方已收到 0 号帧, 0 号窗口关闭, 1 号窗口打开,表示预备接收1 号帧;此时发送窗口状态不变;(5) ) 发送方收到接收方发来的 0 号帧确认返回信息,关闭 0 号窗口,表示从重发表中删除 0 号帧;此时接收窗口状态仍不变;欢迎下载精品学习资源(6) ) 发送方连续发送 2 号帧, 2 号窗口打开,表示2 号帧也纳入待确认之列;至此,发送方打开的窗口又已达规定限度,在未收到新的确认返回帧之前,发送方将暂停发送新的数据帧,此时接收窗口状态仍不变;(7) ) 接收方已收到 1 号帧, 1 号窗口关闭, 2 号窗口打开,表示预备接收2 号帧;此时发送
17、窗口状态不变;(8) ) 发送方收到接收方发来的 1 号帧收毕的确认信息,关闭1 号窗口,表示从重发表中删除 1 号帧;此时接收窗口状态仍不变;3.2 协议挑选及分析在设计过程中,我主要运用了挑选重传协议,该协议能很好地补偿了1 比特滑动窗口协议和后退n 协议的缺点,是比较完善的滑动窗口协议;在挑选重传协议中,当接收方发觉某帧出错后,其后连续送来的正确的帧虽然不能立刻递交给接收方的高层,但接收方仍可收下来,存放在一个缓冲区中,同时要求发送方重新传送出错的那一帧;一旦收到重新传来的帧后,就可以原已存于缓冲区中的其余帧一并按正确的次序递交高层;这种方法称为挑选重发SELECTICE REPEAT,
18、其工作过程如下列图;明显,挑选重发削减了铺张,但要求接收方有足够大的缓冲区空间;图 3-2挑选重传协议原理图欢迎下载精品学习资源3.3 发送方与接收方设计流程由于我设计的程序为模拟程序,因此我把发送方和接收方集合在同一版面上;它们各自的功能同时在同一版面上实现及显示;在程序实现后,我们可以通过在同一版面依据提示输入相关信息,即可得到模拟过程;虽然只有一个版面,但是发送方和接收方的功能是清楚的、相对齐全的;发送方和接收方的设计流程如下:图 3-3 发送方与接收方设计流程依据流程图的实现步骤,我编写了以下的代码;(1) )发送方程序:本程序设有四个变量:一是窗口大小变量,二是第一帧序列号变量,三是
19、最近发送的帧变量,最终一个是最近收到的确认帧变量;swpstate1.head=NULL;/变量初始值为空swpstate1.sendq=sendq_rear=structsendq_slot*mallocsizeofstructsendq_sl;ot if.swpstate1.sendq exit1;欢迎下载精品学习资源sendq_rear-next=NULL;printf 请输入窗口大小: ;scanf%ld,&swpstate1.sws; /输入窗口大小欢迎下载精品学习资源swpstate1.rws=swpstate1.sw;s if swpstate1.sws0/把窗口大小的值赋给变量
20、欢迎下载精品学习资源printf 请输入第一帧的序列号: ;scanf%ld,&swpstate1.hdr.seqnum; /输入第一帧序列号swpstate1.nfe=swpstate1.hdr.seqnu;m/把第一帧的值放进缓冲池内sendp=struct sendq_slot*mallocsizeofstruct sendq_slot; if.sendp exit1 ;sendp-msg=swpstate1.hdr.seqnu;m sendp-timeout=1;sendp-next=NULL;sendq_rear-next=send;p sendq_rear=send;p-swpst
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 滑动 窗口 协议 模拟 程序 设计方案 实现
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内