TCP 管理的 4 个定时器

2016-05-04 08:56:53   最后更新: 2016-05-04 08:56:53   访问数量:515




TCP 管理 4 个不同的定时器:

  1. 重传定时器,期望在该定时器时间段内收到另一端的确认
  2. 坚持定时器,当接收方通告窗口大小设置为 0,那么发送方必须不断向接收方查询,以希望通告窗口重新打开,这个查询时间间隔就是坚持定时器
  3. 保活定时器,用来在空闲连接上定时查询连接的存货状态
  4. 2MSL 定时器,测量一个连接处于 TIME_WAIT 状态的时间

 

TCP 发送端拥有一个重传计时器,一旦发生超时,则对报文进行重新发送

通过实际的测试可以发现,TCP 发送端重传超时分别为 1、3、6、12、24、48 和多个 64 秒,这样的倍乘关系被称为“指数退避”

最终的总时间通常为 9 分钟,solaris 中默认为 2 分钟,且可以通过 tcp_ip_abort_interval 变量进行调整

 

如上所述,一旦接收方通告窗口大小设为了 0,那么发送方必须不断查询,否则如果发送方单纯等待 ACK 报文,一旦 ACK 丢失,发送方就会永远等待,即使接收方已经打开了通告窗口

 

在很多 TCP 实现中,提供了保活定时器,用来向对端发送一个探查,借以得知客户主机的运行状态

然而,保活定时器由于会消耗不必要的带宽,并且可能让短暂的差错情况变成网络中断而存在争议

通常情况下,服务端程序并不希望在客户端崩溃以后还维持一个连接,因此这样的探查对于服务端应用来说是必要的

 

TCP 客户主机必须处于以下 4 个状态之一:

  1. 正常运行
  2. 客户主机已崩溃 -- Connection timed out
  3. 客户主机已崩溃且已经重新启动 -- Connection reset by peer
  4. 客户主机正常运行,但服务不可达 -- No route to host

 






读书笔记      技术帖      tcp      龙潭书斋      连接      定时器      tcp/ip      tcp/ip详解     


京ICP备15018585号