第19章 TCP的交互数据流

19.5 窗口大小通告

在图1 9 - 4中,我们可以观察到s l i p通告窗口大小为4 0 9 6字节,而v a n g o g h通告其窗口大小为8 1 9 2个字节。该图中的大多数报文段都包含这两个值中的一个。

然而,报文段5通告的窗口大小为 4 0 9 5个字节,这意味着在 T C P的缓冲区中仍然有一个字节等待应用程序( R l o g i n客户)读取。同样,来自客户的下一个报文段声明其窗口大小为4 0 9 4个字节,这说明仍有两个字节等待读取。

服务器通常通告窗口大小为 8 1 9 2个字节,这是因为服务器在读取并回显接收到的数据之前,其T C P没有数据发送。当服务器已经读取了来自客户的输入后,来自服务器的数据将被发送。

然而,在A C K到来时,客户的 T C P总是有数据需要发送。这是因为它在等待 A C K的过程中缓存接收到的字符。当客户 T C P发送缓存的数据时,R l o g i n客户没有机会读取来自服务器的数据,因此,客户通告的窗口大小总是小于 4 0 9 6。