1. 引言
若TCP连接的双方都没有向对方发送数据,则在两个TCP模块之间不交换任何信息,只要两端的主机未被重启,连接就会始终保持建立。
服务器希望知道客户主机是否崩溃并关机或是崩溃又重启,保活定时器可以提供这种功能。简单来说,保活功能就是试图在服务器端检测到客户消失前留下的半开放的连接,以免永远等待客户的数据 。
使用保活定时器也存在问题:1)出现短暂差错时可能会释放掉非常好的连接;2)会耗费不必要的带宽;3)按分组计费情况下耗费更多。
2. 描述
使用保活选项的一端称为服务器,另一端称为客户。若一个给定的连接在两小时内没有任何动作,服务器就会向客户发送一个探查报文段。客户主机处于以下4个状态之一:
- 正常运行,并从服务器可达。服务器在2h后将保活定时器复位,若期间有数据通过,则在交换数据后的2h再复位。
- 已经崩溃,且关闭或正在重启。服务器收不到对探查的响应,并在75s后超时,服务器会发送10个这样的探查,始终没有收到响应就会认为客户主机已关闭并终止连接。
- 崩溃并已重启。服务器会收到探查的响应,该响应是一个复位,使服务器终止连接。
- 正常运行,但从服务器不可达。与状态2相同。
注意:客户主机被操作员关闭或重启的情况不需要关注,因为系统被操作员关闭时所有的应用进程也会被终止(客户进程),使得客户的TCP在连接上发出一个FIN,接收到FIN将使服务器的TCP向服务器进程报告文件结束,使服务器可以检测到该情况。
3. 小结
- 保活功能的作用和缺点
- 探查客户可能发生的4种不同情况