码迷,mamicode.com
首页 > 其他好文 > 详细

TCP保活定时器

时间:2017-11-24 23:59:05      阅读:346      评论:0      收藏:0      [点我收藏+]

标签:live   从服务器   keepalive   复位   tcp   进一步   不同   崩溃   res   

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保活定时器

标签:live   从服务器   keepalive   复位   tcp   进一步   不同   崩溃   res   

原文地址:http://www.cnblogs.com/howo/p/7892564.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!