TCP保活定时器

Posted guhowo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP保活定时器相关的知识,希望对你有一定的参考价值。

TCP有Keepalive功能,它和HTTP的Keepalive功能目的不一样。TCP服务器希望知道客户端是否崩溃、重新启动或者中间路由不通。保活定时器就提供这种功能。

在进一步介绍TCP的保活定时器前,先了解一个概念:长连接和短连接。(TCP是长连接)

长连接:建立一个连接,多个请求复用这个连接,最后再关闭连接。

短连接:建立一个连接,传输一个请求,然后关闭连接。

 

当服务器发送探测报文时,客户端可能处于4种不同的情况:仍然正常运行、已经崩溃、已经崩溃并重启了、

由于中间链路问题不可达。在不同的情况下,服务器会得到不一样的反馈。

 (1) 客户主机依然正常运行,并且从服务器端可达

客户端的TCP响应正常,从而服务器端知道对方是正常的。保活定时器会在两小时(7200s)以后继续触发。

 (2) 客户主机已经崩溃,并且关闭或者正在重新启动

客户端的TCP没有响应,服务器没有收到对探测包的响应,此后每隔75s发送探测报文,一共发送9次。

socket函数会返回-1,errno设置为ETIMEDOUT,表示连接超时。

 (3) 客户主机已经崩溃,并且重新启动了

客户端的TCP发送RST,服务器端收到后关闭此连接。

socket函数会返回-1,errno设置为ECONNRESET,表示连接被对端复位了。

 (4) 客户主机依然正常运行,但是从服务器不可达

双方的反应和第二种是一样的,因为服务器不能区分对端异常与中间链路异常。

socket函数会返回-1,errno设置为EHOSTUNREACH,表示对端不可达。

以上是关于TCP保活定时器的主要内容,如果未能解决你的问题,请参考以下文章

TCP 的保活定时器

TCP定时器 之 重传/延迟ACK/保活 定时器初始化

TCP/IP具体解释学习笔记--TCP的坚持和保活定时器

TCP的保活机制

TCP定时器

TCP定时器