1. 引言
ACK传输并不可靠,因为TCP不对ACK报文段进行确认,只确认那些包含数据的ACK报文段。
如果一个ACK丢失了,双方就有可能陷入死锁而使连接终止。为了防止这种情况发生,发送方使用坚持定时器周期性地向接收方查询窗口大小是否增加,这些从发送方发出的报文段称为窗口探查。
2. 糊涂窗口综合症
2.1 定义
指的是发送端应用进程产生数据很慢、或接收端应用进程处理接收缓冲区数据很慢,或二者兼而有之,就会使应用进程间传送的报文段很小,特别是有效载荷很小,极端情况下,有效载荷可能只有1个字节,传输开销有40字节(20字节的IP头+20字节的TCP头) 这种现象。
简单来说就是少量的数据通过连接进行交换,而非满长度的报文段。
2.2 解决方法
- 接收方不通告一个比当前窗口大的窗口,除非可以增加一个报文段大小或接收方缓存空间的一半
- 发送方只有当满足以下条件之一1)可以发送一个满长度报文段;2)可以发送至少是接收方通告窗口大小一半的报文段;3)可以发送任何数据且不希望接收ACK 时才会发送数据
3. 小结
- 连接的一方需要发送数据但对方已通告窗口大小为0时需要设置TCP的坚持定时器,不断探查已关闭的窗口。
- TCP避免通告小的窗口大小或发送小的报文段。