概念

TCP协定中的window,用于向对端发送本人的TCP接管音讯的缓冲区大小。其作用为疏导对方在必要的时候调整数据发送的速度,以便本地能够的解决缓冲区的音讯,避免缓冲区被填满,从而产生有效的音讯传输。

例子

在TCP两端进行数据传输的过程中,会不断更新本人的window,从而实现流量管制的目标。一个形象的例子为TCP两端通过一根水管(TCP 连贯)连贯,两端各有一个水桶(接收缓冲区)用来接管对端流过来的水(发送的数据)。而window就用来示意以后水桶残余的闲暇容量(残余的接收缓冲区大小)。如果window过小,对端就会缩小发送水流(数据)速度,留更多的工夫以便水桶中的水被应用(数据被利用应用)。在桶中的水(数据)被耗费后,window变大,再进步水流(发送数据)的速度。

Window scale

window的大小最后被定义为2个byte,最大能够示意65535Byte。随着网络带宽的进步,不能满足大数据量的利用需要。为了进步window大小,并且尽可能的缩小对已有利用的影响,TCP协定并没有间接减少window的位数,而是通过Window scale对window进行裁减。在反对Window scale的状况下,理论的window大小(由Calculated window size代表)为windowWindow size scaling factor。最大为655352^14,略微小于1GB,远高于以前的65535B。

在TCP3次握手的时候,单方会协商是否反对Window scale,如果反对Window scale则在第一个音讯(SYN或者SYN,ACK)中携带Window scale Option。只有单方都反对Window scale时,后续单方才会应用Window scale。

参考资料
https://blog.csdn.net/TWTFHVK...
https://www.qacafe.com/resour...