(保留版权,欢迎转载。请保留出处,注明原始链接!谢谢。)
4种定时器:时间等待(Time_Wait),重传,坚持和保活。
坚持定时器:为防止打开通知窗口(解除0窗口)的ACK丢失,造成TCP两端死锁,TCP发端按无限次的指数避让间隔发出窗口探测包(1字节),TCP收端立刻确认并更新通知窗口。
TCP收端何时重新打开通知窗口,TCP发端何时在新的通知窗口下发送数据/多少数据,都要防止糊涂窗口综合征(SWS)。原则有三:1,仅当TCP收端缓存增加了1MSS或者1/2缓存空间,才发ACK打开通知窗口;2,TCP发端仅在如下任一条件下发送新数据:a. 待发送数据超过1MSS. b. 待发送数据超过1/2TCP收端缓存空间;c. 当Nagle算法开启时,连接上没有已经发送但未被确认的数据包。
保活定时器:使能保活功能TCP端,在连接空闲2小时后按有限次的指数避让间隔发出保活探测包(1字节),据此清理可能的半开连接(超时,重置和不可达3种反馈,类似于connect的3种失败返回值)。