TCP报文窗口字段介绍
在TCP报文头部,有一个16比特的窗口字段,用来表示接受方的缓冲区大小,发送方可以根据这个值的大小来调节发送的数据量,从而起到流控的目的。
TCP的流量控制由连接的每一端通过声明的窗口大小来提供 。窗口大小为字节数 ,起始于确认序号字段指明的值,这个值是接收端期望接收的字节。窗口大小是一个16 bit字段,因而窗口大小最大为65535字节。
窗口大小对性能的影响
TCP基于通告窗口大小的机制,运行发送方在停止并等待确认前可以连续发送多个分组。由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输。TCP传输速率和窗口大小成正相关,在某些情况下,提高窗口大小能够提高传输速率。但TCP窗口大小只有16bit,最大表示65535字节,对当前千兆接口已经是标配,在数据中心对服务器上开始部署10G接口的现实情况下,65535字节的窗口显然是不够的。
窗口扩大因子
TCP头部的最后一个选项字段(options)是可变长的可选信息。这部分最多包含40字节。RFC 7323 TCP Extension for High Performance中对相关选项进行了详细介绍,更详细信息可参考这个文档。
常见对TCP选项有7种,其中kind=3是窗口扩大