TCP滑动窗口详解

女生的网名这么多〃 提交于 2019-12-06 03:01:35

TCP滑动窗口详解

每个TCP活动连接的两端都维护一个发送窗口结构接收窗口结构。如下图展示了一个TCP发送窗口结构。


图1

TCP发送端滑动窗口结构记录了已确认,在传以及还未传的数据的序列号。提供窗口的大小是接收端返回的ACK中窗口大小字段控制的。


TCP是以字节为单位维护其窗口结构的,如上图的标号1-13分别表示第1-13的字节。接收端返回的窗口里面的窗口称为提供窗口


图2

这是通过tcpdump命令看到的信息,其中的win就是窗口大小。可以看到这里的窗口大小是6379。

滑动窗口到底怎么滑呢?

所以滑动窗口到底怎么滑呢?下面来具体分析一下:

现在我们假设tcp发送端发送了一个像图1一样的报文(字节1-13)至服务端。对应的tcp信息应该是这样,其他信息我们暂时不关注:

send -> rcv seq 1:6 ,win 6 ···else···

但接收端当前只能确认前三个字节(ACK=3),并通告了一个6字节大小的窗口,那么返回的tcp信息应该是这样。

rcv->send ack 3, win 6 ···else···

大概是这个样子的:

TCP接收端滑动窗口结构帮助了解其下次应接受的数据序列号,若接收到的数据序列号在窗口内,则可以存储,否则丢弃。

这时候,发送端可以计算其可用窗口,即它可以立即发送的数据,可用窗口计算值为提供窗口大小减去在传(已发送但未得到确认)的数据值。

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