tcp传输窗口解析——借助wireshark深入分析
tcp传输报文时,会有“往返”的需要。因为发包之后并不知道对方能否收到,要一直等到确认包到达,这样就花费了一个往返时间。假如每发一个包就停下来等确认,
一个往返时间里就只能传一个包,这样的传输效率太低了。最快的方式应该是一口气把所有包发出去,然后一起确认。但现实中也存在一些限制:接收方的缓存(接收窗口)可能一下子接受不了这么多数据;网络的带宽也不一定足够大,一口气发太多会导致丢包事故。所以,发送方要知道接收方的接收窗口和网络这两个限制因素中哪一个更严格,然后在其限制范围内尽可能多发包。这个一口气能发送的数据量就是传说中的 TCP发送窗口。发送窗口对性能的影响有多大?一图胜千言,下图显示了发送窗口为 1个 MSS(即每个 TCP包所能携带的最大数据量)和 2个 MSS时的差别。在相同的往返时间里,右边比左边多发了两倍的数据量。而在真实环境中,发送窗口常常可以达到数十个 MSS。
1.每个包的 TCP层都含有“ window size:”(也就是 win =)的信息。这个值表示发送窗口的大小吗?
这不是发送窗口,而是在向对方声明自己的接收窗口。
从下截图中可以看到, 61.135.169.121 向 192.168.1.121 声明自己的接收窗口是 772字节。 192.168.1.121 收到之后,就会把自己的发送窗口限制在 772字节之内。很多教科书上提到的滑动窗口机制,说的就是这两个窗口的关系