*经过两天的总结,已经总结了大部分运输层的知识原理,那今天就再来看看TCP中的四种定时器。。。→_→*
超时重传计时器(Retransmission Timeout Timer)(与超时重传相关)
A向B发送一个数据报文段,为了保证可靠传输,A**会为这个数据报文段设置一个超时重传计时器(Retransmission Timeout Timer)**
如果在超时重传时间内,A**收到了B的确认报文段,则撤销这个数据报文段的超时重传计时器**
如果超时重传时间到期时,A还没有收到**B的确认报文段,则 **A就重传这个数据报文段并重新设置超时计时器,直到收到B的确认为止
持续计时器(Persistent Timer)(与流量控制相关)
B向A发送了零窗口报文段后,B的接收缓存又有了空间。于是B向A发送非零窗口的报文段,但此报文段传送过程中丢失了。A一直等待接收B发送的非零窗口的通知,B也一直等待A发送的数据,此时陷入了死锁
TCP为每一个连接设有一个持续计时器(Persistent Timer)。只要TCP**连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个零窗口探测报文(仅携带1字节的数据),而对方就在确认这个探测报文时给出了现在的窗口值。**
如果窗口值仍为零,那么收到报文段的一方就重新设置持续计时器
时间等待计时器(TIME-WAIT Timer)(与四次挥手相关)
当客户端进入TIME-WAIT(时间等待)状态后,必须经过时间等待计时器设置的2MSL后,才能进入到CLOSED状态
保活计时器(Keepalive Timer)(与HeartBeat心跳机制相关)
客户端与服务器端建立了TCP连接后,客户端突然出现了故障,此时应使用保活计时器
服务器每收到一次客户端的数据,就重新设置保护计时器,时间通常是两个小时。若两个小时没有收到客户的数据,服务器就发送一个探测报文段,以后则每隔75分钟发送一次。若一连发送10个探测报文段后仍无客户端响应,服务器端就认为客户端发生故障,应关闭这个连接