分类: LINUX
2007-08-02 17:25:34
当接收方向发送方回复的ACK中指明Window为0时,发送方应该立刻停止发送数据,一直到接收方再反馈一个窗口不为0的ACK。但是这个用于恢复发送方传输的ACK有可能丢失,TCP必须要能够处理这种情况,因为ACK的传输并不可靠,因为TCP并不的ACK进行确认。
TCP的发送方使用一个坚持定时器来周期性的向接收方查询,必便发现窗口是否已经增大,这些从发送方发送出去的探察报文成为“窗口探察”。
当收到一个窗口为0的ACK后,TCP的发送方就启动一个坚持定时器,当此timer在expire之前没有收到窗口大于0的ACK,则发送一个窗口探察,大概4毫秒后收到接收方的ACK,如果此ACK中窗口依然是0,在再次启动坚持定时器,不过此次timer的时间要延长一定,这个时间也呈类似于“指数退避”的算法来设置。