这个问题描述在黑皮书《计算机网络-自顶向下》;
问题:假设A主机向B主机发送数据,当B的窗口为0,则A不能再向B发送数据。只能等到B的应用进程将缓存中的数据清空,才能有新的rwnd的值。但是这里有一个问题,当B的应用进程清空缓存后,并不会主动告知A。TCP当且仅当在它有数据需要确认和发送时才会发送报文段给主机A。这样主机A不可能知道主机B的接收缓存已经有新的空间了。
解决:TCP规范中规定,当主机B的接受窗口为0时,主机A继续发送只有一个字节数据的报文段。这个报文段会被接收方确认。最终缓存将开始清空,并且确认报文段将包含一个非0的rwnd的值。