基于窗口的tcp流量控制会导致一种称为糊涂窗口综合症的现象发生,此时,发送端会发送不满一个mss的小报文,接收端也会通告一个小窗口,这种现象会降低网络的利用率。如何避免这种现象发生呢。

首先,对于接收方来说:

不能通告一个比当前窗口大的窗口,除非窗口增加了一个报文段(mss)大小,或者增加了接收方缓存空间的一半。这条规则应用的前提条件是接收方的接收缓存由0变为非0,或者接收方要回复一个窗口探查报文。也就是说,当接收方缓存变为非零,可以接收数据时,或者它要回复窗口探查报文时,要考虑上述规则,不能通告小窗口。

对于发送方来说,以下三点至少有一点满足时才能发送报文:

1、可以发送一个满长的报文

2、可以发送接收方曾经通告过的最大窗口的一半的报文

3、如果连接上未开启Nagle算法或者没有未被确认的数据时就可以发送任意大小的必须发送的数据