滑动窗口协议技术

 滑动窗口(Sliding window )是一种流量控制技术。早期的网络通讯中,通讯双方不会考虑网络的拥挤状况直接发送数据。因为你们不知道网络拥塞情况,一块儿发送数据,致使中间结点阻塞掉包,谁也发不了数据。因此就有了滑动窗口机制来解决此问题。参见滑动窗口如何根据网络拥塞发送数据仿真视频。html

 

    滑动窗口协议是用来改善吞吐量的一种技术,即允许发送方在接收任何应答以前传送附加的包。接收方告诉发送方在某一时刻能送多少包(称窗口尺寸)。 缓存

    TCP中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区能够用于接收数据。发送方能够经过滑动窗口的大小来肯定应该发送多少字节的数据。当滑动窗口为0时,发送方通常不能再发送数据报,但有两种状况除外,一种状况是能够发送紧急数据,例如,容许用户终止在远端机上的运行进程。另外一种状况是发送方能够发送一个1字节的数据报来通知接收方从新声明它但愿接收的下一字节及发送方的滑动窗口大小。   网络

(1).窗口机制   ide

滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的容许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的容许接收的帧的序号,称为接收窗口。发送窗口和接收窗口的序号的上下界不必定要同样,甚至大小也能够不一样。不一样的滑动窗口协议窗口大小通常不一样。发送方窗口内的序列号表明了那些已经被发送,可是尚未被确认的帧,或者是那些能够被发送的帧。下面举一个例子(假设发送窗口尺寸为2,接收窗口尺寸为1):   分析:①初始态,发送方没有帧发出,发送窗口先后沿相重合。接收方0号窗口打开,等待接收0号帧;②发送方打开0号窗口,表示已发出0帧但尚确认返回信息。此时接收窗口状态不变;③发送方打开0、1号窗口,表示0、1号帧均在等待确认之列。至此,发送方打开的窗口数已达规定限度,在未收到新的确认返回帧以前,发送方将暂停发送新的数据帧。接收窗口此时状态仍未变;④接收方已收到0号帧,0号窗口关闭,1号窗口打开,表示准备接收1号帧。此时发送窗口状态不变;⑤发送方收到接收方发来的0号帧确认返回信息,关闭0号窗口,表示从重发表中删除0号帧。此时接收窗口状态仍不变;⑥发送方继续发送2号帧,2号窗口打开,表示2号帧也归入待确认之列。至此,发送方打开的窗口又已达规定限度,在未收到新的确认返回帧以前,发送方将暂停发送新的数据帧,此时接收窗口状态仍不变;⑦接收方已收到1号帧,1号窗口关闭,2号窗口打开,表示准备接收2号帧。此时发送窗口状态不变;⑧发送方收到接收方发来的1号帧收毕的确认信息,关闭1号窗口,表示从重发表中删除1号帧。此时接收窗口状态仍不变。   若从滑动窗口的观点来统一看待1比特滑动窗口、后退n及选择重传三种协议,它们的差异仅在于各自窗口尺寸的大小不一样而已。1比特滑动窗口协议:发送窗口=1,接收窗口=1;后退n协议:发送窗口>1,接收窗口=1;选择重传协议:发送窗口>1,接收窗口>1。   (2).1比特滑动窗口协议   当发送窗口和接收窗口的大小固定为1时,滑动窗口协议退化为停等协议(stop-and-wait)。该协议规定发送方每发送一帧后就要停下来,等待接收方已正确接收的确认(acknowledgement)返回后才能继续发送下一帧。因为接收方须要判断接收到的帧是新发的帧仍是从新发送的帧,所以发送方要为每个帧加一个序号。因为停等协议规定只有一帧彻底发送成功后才能发送新的帧,于是只用一比特来编号就够了。其发送方和接收方运行的流程图如图所示。   视频

 

(3).后退n协议   因为停等协议要为每个帧进行确认后才继续发送下一帧,大大下降了信道利用率,所以又提出了后退n协议。后退n协议中,发送方在发完一个数据帧后,不停下来等待应答帧,而是连续发送若干个数据帧,即便在连续发送过程当中收到了接收方发来的应答帧,也能够继续发送。且发送方在每发送完一个数据帧时都要设置超时定时器。只要在所设置的超时时间内仍收到确认帧,就要重发相应的数据帧。如:当发送方发送了N个帧后,若发现该N帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不从新发送出错帧及其后的N帧。   从这里不难看出,后退n协议一方面因连续发送数据帧而提升了效率,但另外一方面,在重传时又必须把原来已正确传送过的数据帧进行重传(仅因这些数据帧以前有一个数据帧出了错),这种作法又使传送效率下降。因而可知,若传输信道的传输质量不好于是误码率较大时,连续测协议不必定优于中止等待协议。此协议中的发送窗口的大小为k,接收窗口还是1。   htm

 

(4).选择重传协议   在后退n协议中,接收方若发现错误帧就再也不接收后续的帧,即便是正确到达的帧,这显然是一种浪费。另外一种效率更高的策略是当接收方发现某帧出错后,其后继续送来的正确的帧虽然不能当即递交给接收方的高层,但接收方仍可收下来,存放在一个缓冲区中,同时要求发送方从新传送出错的那一帧。一旦收到从新传来的帧后,就能够原已存于缓冲区中的其他帧一并按正确的顺序递交高层。这种方法称为选择重发(SELECTICE REPEAT),其工做过程如图所示。显然,选择重发减小了浪费,但要求接收方有足够大的缓冲区空间。   blog

 

    滑动窗口功能:确认、差错控制、流量控制。进程

流量控制路由

TCP的特色之一是提供体积可变的滑动窗口机制,支持端到端的流量控制。TCP的窗口以字节为单位进行调整,以适应接收方的处理能力。处理过程以下:  减少窗口尺寸it

(1)TCP链接阶段,双方协商窗口尺寸,同时接收方预留数据缓存区;   

 

(2)发送方根据协商的结果,发送符合窗口尺寸的数据字节流,并等待对方的确认;   

 

(3)发送方根据确认信息,改变窗口的尺寸,增长或者减小发送未获得确认的字节流中的字节数。调整过程包括:若是出现发送拥塞,发送窗口缩小为原来的一半,同时将超时重传的时间间隔扩大一倍。   

 

     滑动窗口机制为端到端设备间的数据传输提供了可靠的流量控制机制。然而,它只能在源端设备和目的端设备起做用,当网络中间设备(例如路由器等)发生拥塞时,滑动窗口机制将不起做用。

 

(原文地址:http://blog.sina.com.cn/s/blog_7ab9fa9e01018af3.html)

相关文章
相关标签/搜索