为什么要关心TCP窗口?因为它提高了数据传输的速度,因此也提高了用户访问应用程序的体验。TCP Window size 以下简称“TCP接收窗口”。
什么是TCP接收窗口?
简而言之,它是TCP接收缓冲区,用于尚未由应用程序处理的传入数据。使用TCP头的窗口大小值字段将TCP接收窗口的大小传达给连接伙伴。该字段告诉链路伙伴在接收到确认之前可以在线路上发送多少数据。如果接收器无法尽快处理数据,则接收缓冲区将逐渐填充,并且确认数据包中的TCP窗口将减少。这将警告发送方它需要减少发送的数据量或让接收方有时间清除缓冲区。
在上图中,客户端和服务器在通信时正在通告其窗口大小值。每个TCP标头将显示最新的窗口值,该值可以随着连接的进行而增大或缩小。在此示例中,客户端具有65,535字节的TCP接收窗口,而服务器具有5,840字节。对于许多应用程序,由于客户端倾向于接收数据而不是发送数据,因此客户端通常具有更大的分配窗口大小。握手后,客户端将HTTP GET请求发送到服务器,该请求将得到快速处理。来自服务器的两个响应数据包到达客户端,客户端发送确认以及更新的窗口大小。客户端能够尽快处理来自TCP缓冲区的数据包,因此不会减小窗口大小。 客户端仍然具有可用于接收数据的完整窗口 65,535字节。
在另一个示例中,客户端正在从服务器请求数据并开始接收数据。但是,在这种情况下,客户端将无法快速处理传入的数据。如减小的窗口值所示,TCP缓冲区开始填充。