滑动窗口

会有一股神秘感。 提交于 2019-11-27 12:50:22

一、以字节为单位的滑动窗口

    假定从A收到B发来的确认报文段,窗口大小是20(字节),确认号是31(表名B期望收到的下一序号是31,而序号30为止的数据已经收到了)。根据这两个数据,A就构造出自己的发送窗口,位置如下:

                       

       A的发送窗口表示:在没有收到B的确认的情况下,A可以连续吧窗口内的数据都发送出去。凡是已经发送过得数据,在未收到确认之前都必须暂时保留,以便在超时重传时使用。发送窗口里面的序号表示允许发送的序号,显然窗口越大,发送方就可以在收到对方确认之前连续发送更多的数据;发窗口后沿后边的部分表示已发送且已收到确认;发送窗口前沿的前面部分表示不允许发送的,因为接收方没有为这部分数据保留临时存放的缓存空间。

      发送窗口的位置由窗口前沿和后沿的位置共同确定。

      发送窗口后沿的变化有两种情况:不动(没有收到新的确认)和前移(收到了新的确认),发送窗口后沿不可能向后移动,因为不能撤销掉已收到的确认。

       发送窗口前沿通常是不断向前移动,但也有可能不动。对应于两种情况:一是没有收到新的确认,对方通知的窗口大小也不变;二是收到新的确认,但对方通知的窗口缩小了,使得发送窗口前沿正好不动。

二、利用滑动窗口实现流量控制

      所谓流量控制就是让发送方发送的速率不要太快,要让接收方来得及接收。

      利用滑动窗口机制可以很方便的在TCP连接上实现对发送方的流量控制。在连接建立时,发送方的发送窗口不能超过接收方给出的接收窗口的数值,在此TCP的窗口单位是字节。

      如:A向B发送数据,在连接建立时,B告诉A“我的接收窗口rwnd=400”,设每一个报文段为100字节长,数据报文段序号的初始值为1,则有:

                             

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!