TCP中拥有四种计时器,分别为:
- 重传计时器
重传时间到了.如果还没有接收到对方的ACK,就从发此包,避免陷入无限等待中 - 坚持计时器
目的:解决零大小窗口导致的死锁问题
死锁产生原因:当接收端窗口大小为0时,发送端停止发送,此后如果接收端有空余空间来接收数据,则发送一个新窗口大小的报文,如果该报文丢失了则导致双方都处于等待状态,产生死锁
工作原理:当发送端接收到接收端发送的零大小窗口的报文时,就启动坚持计时器,当计时器到达计时时间,发送端就主动发送一个报文段告诉接收端你发送的新窗口大小的报文丢失了,需要重新发送
坚持时间:开始先设置为超时重传时间,如果超时了还是没有收到接收端发送的新窗口大小报文,则将计时器的值加倍并且复位,直到大于门限值60s,在此之后每隔60s向接收端发送一个询问报文 - 保活计时器
目的:避免空闲连接长时间的占用服务器资源
工作原理:当服务器收到数据时都将保活计时器重新设置(一般2h),过了2h后,服务器如果没有收到数据,每隔75s发送一个探测报文给客户端,当连续发送10次后,仍然没有收到客户端的回复,则服务器断开连接 - 时间等待计时器
时间等待计时器是在四次握手的时候使用的。时间是2MSL(最长报文生存时间)