毕业论文

打赏
当前位置: 毕业论文 > 计算机论文 >

C#滑动窗口协议的软件设计与实现(2)

时间:2017-05-30 08:17来源:毕业论文
1.1 滑动窗口协议的概述 在滑动窗口协议中,允许发送方发送多个分组(当分组有多个时)而不需要等待确认,但它也受限于在流水账中未确认的分组数


1.1    滑动窗口协议的概述
在滑动窗口协议中,允许发送方发送多个分组(当分组有多个时)而不需要等待确认,但它也受限于在流水账中未确认的分组数不能超过最大允许数N。只有在接收窗口向前滑动时(此时也发送了确认信息),发送窗口才可能向前滑动。收发两端的窗口在工作时按上述规律不断地向前滑动,因此该协议又称为滑动窗口协议。
1.2    滑动窗口协议的分类
滑动窗口协议分为三类:当发送窗口和接收窗口的大小都等于 1时,称为停等协议(stop-and-wait),也叫1比特滑动窗口协议;当发送窗口大于1,接收窗口等于1时,就是回退N步协议。当发送窗口和接收窗口的大小均大于1时,就是选择重发协议。
1.2.1  停等协议
发送方这时自然发送并且每次只能发送一个,而且必须等待这个数据包的ACK,才能发送下一个。虽然效率很低,带宽利用率也较低,不过在网络环境差,或者是带宽本身很低的情况下还是适用的。
具体的流程图如下图1:
 
图1  发送方与接收方设计流程

1.2.2  回退N步协议
停等协议虽然简单,也能较好的适用于恶劣的网络环境,但是效率十分地。所以有了回退N步协议,这也是滑动窗口协议的真正用处。这里发送的窗口大写为N,接收方的窗口仍然为1.具体看下面的图2,这里假设N=9:
图2  回退N步协议

首先发送方一口气发送10个数据帧,前面两个帧正确返回,数据帧2出现错误,这时发送方被迫重新发送2到8这7个帧,接收方也必须丢弃之前收到的3到8这几个帧。
回退N步协议的好处无疑是提高了传输效率,可是一旦网络情况糟糕,则会导致大量数据重新发送,这反而极大的降低了效率,而实际上这却是很常见的,具体可以参考TCP拥塞控制。
 1.2.3  选择重发协议
回退N步协议的问题在于当有错误帧出现后,总是要重发该帧之后的所有帧,毫无疑问其在网络不好的情况下会进一步恶化网络状况,选择重发协议便是用来解决这个问题。原理也很简单,接收端总会缓存所有受到的帧,当某个帧出现错误时,只会要求重发这一个帧,只有当这个序号后的所有的帧都正确收到后,才会一起提交给高层应用。选择重发协议的缺点在于接收端需大量的缓存。
 
图3  选择重发协议
选择重发协议的大致原理如上图3。发送方发送帧,0、1号下届帧被接收方正常接收,当2号帧丢失后,接收方任然将发送方发送来的3~8号帧暂时存入缓冲区;发送方发送8号帧后,发送方还没有接收到2号帧的ACK,发送方重新发送2号帧;再当接收方接收到2号帧时,将2~8号帧交网络层窗口滚动7格,之后正常接收9、10……号帧。

1.3  本次设计的任务
    在Visual Studio 2010开发环境下,使用C#程序设计语言,利用控制台应用程序模拟出滑动窗口的发送、接收信号,再转化为Windows窗体应用程序模拟。掌握TCP滑动窗口协议的工作原理,熟练使用C#程序设计语言,模拟滑动窗口协议的工作过程。
2  滑动窗口协议介绍

2.1  滑动窗口协议工作原理
TCP协议在工作时,如发送端的TCP协议应用程序每传输一个数据分组后,必须等待接收端的确认后才能够发送下一个分组,由于网络传输伴有时延性,会有大量的时间被用于等待确认,导致传输效率低。因此TCP在进行数据传输时使用滑动窗口机制。
TCP滑动窗口用来暂时存储两台计算机间所要传送的数据分组。每台运行TCP协议的计算机都有两个滑动窗口:一个用于数据发送,即发送端;另一个用于数据接收,即接收端。发送端待发送的数据分组在缓冲区排队等待发送。被滑动窗口框入的数据分组,是可以在未收到接收确认之前最多送出的部分。滑动窗口左端的分组,是已经被接收端确认收到的分组。随着新确认的到来,窗口会不断向右滑动。 C#滑动窗口协议的软件设计与实现(2):http://www.youerw.com/jisuanji/lunwen_8003.html
------分隔线----------------------------
推荐内容