本文最后更新于:2020年6月30日 晚上

* 经过两天的总结,已经总结了大部分运输层的知识原理,那今天就再来看看TCP中的四种定时器。。。→_→ *

  1. 超时重传计时器(Retransmission Timeout Timer)(与超时重传相关)
  • A向B发送一个数据报文段,为了保证可靠传输,A会为这个数据报文段设置一个超时重传计时器(Retransmission Timeout Timer)

  • 如果在超时重传时间内,A收到了B的确认报文段,则撤销这个数据报文段的超时重传计时器

  • 如果超时重传时间到期时,A还没有收到B的确认报文段,则 A就重传这个数据报文段并重新设置超时计时器,直到收到B的确认为止

  1. 持续计时器(Persistent Timer)(与流量控制相关)
  • B向A发送了零窗口报文段后,B的接收缓存又有了空间。于是B向A发送非零窗口的报文段,但此报文段传送过程中丢失了A一直等待接收B发送的非零窗口的通知,B也一直等待A发送的数据,此时陷入了死锁

  • TCP为每一个连接设有一个持续计时器(Persistent Timer)。只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个零窗口探测报文(仅携带1字节的数据),而对方就在确认这个探测报文时给出了现在的窗口值。

  • 如果窗口值仍为零,那么收到报文段的一方就重新设置持续计时器

  • 传送门:TCP可靠传输——流量控制

  1. 时间等待计时器(TIME-WAIT Timer)(与四次挥手相关)
  1. 保活计时器(Keepalive Timer)(与HeartBeat心跳机制相关)
  • 客户端与服务器端建立了TCP连接后,客户端突然出现了故障,此时应使用保活计时器

  • 传送门:TCP三次握手与四次挥手的过程及原因

  • 服务器每收到一次客户端的数据,就重新设置保护计时器,时间通常是两个小时。若两个小时没有收到客户的数据,服务器就发送一个探测报文段,以后则每隔75分钟发送一次。若一连发送10个探测报文段后仍无客户端响应,服务器端就认为客户端发生故障,应关闭这个连接