您的位置:首页 > 理论基础 > 计算机网络

TCP滑动窗口杂陈

2016-04-23 19:26 435 查看
查阅相关资料整理如下,以便以后方便查看。

滑动窗口协议

滑动窗口通过序列号来进行控制,对于tcp流式数据包,每个字节都对应一个序列号,体现在tcp头部信息中就是,序列号以及选项中的MSS来体现:

比如:PSH1:1025(1024)就是一个数据类型,由于通告窗口为4096,所以窗口大小为4(4*1024=4096)


 

上图中发送数据如seq=101 win=3 就是将数据段101发送至发送缓冲区,即PUSH  101:101(1)  ack(1),win=3

1.窗口滑动形式

   1.1窗口合拢

   1.2窗口张开

   1.3窗口收缩

                         

1) 称窗口左边沿向右边沿靠近为窗口合拢。这种现象发生在数据被发送和确认时。

2) 当窗口右边沿向右移动时将允许发送更多的数据,我们称之为窗口张开。这种现象发生在另一端的接收进程读取已经确认的数据并释放了T C P的接收缓存时。(通告窗口大小控制)

3) 当右边沿向左移动时,我们称之为窗口收缩。Host Requirements RFC强烈建议不要使用这种方式。但T C P必须能够在某一端产生这种情况时进行处理。第2 2 . 3节给出了这样的一个例子,一端希望向左移动右边沿来收缩窗口,但没能够这样做。

图2 0 - 5表示了这三种情况。因为窗口的左边沿受另一端发送的确认序号的控制,因此不可能向左边移动。如果接收到一个指示窗口左边沿向左移动的A C K,则它被认为是一个重复A C K,并被丢弃。

如果左边沿到达右边沿,则称其为一个零窗口,此时发送方不能够发送任何数据。(使用零窗口控制无法发送数据)

文件传输控制发送数据以及接受数据的缓冲区大小可以提高下效率,4096不是最高效的,使用16384可以提升40%的效率

 

PUSH标志的作用:

发送方使用该标志通知接收方将所收到的数据全部提交给接收进程。这里的数据包括与P U S H一起传送的数据以及接收方TC P已经为接收进程收到的其他数据。

对于一个客户端设置此标志的tcp,向服务端发送数据,等待响应,设置此标志,将告诉tcp,不要因为等待服务端的响应而不去处理其他缓冲区的数据。同样在服务端,收到此标记的链接,它将立即将数据交付给上层,而不会考虑是否还会有数据到达。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: