zoukankan      html  css  js  c++  java
  • 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,表示对端不可达。

    在连接空闲两小时后,在一个连接上主动发送一个探查分组来完成保活功。主要是为服务器应用程序提供的。

    保活定时器默认设置是每隔两小时发送一次报文,每次重发10次,每次75秒超时。

     

  • 相关阅读:
    详解 字符转换流
    详解 编码和解码
    详解 字符流
    详解 序列输入流
    详解 数据输入输出流
    八皇后
    这次我们从底层把线程说清楚
    四数之和递归
    PCB 内网实现《OCR文字识别》实现逻辑
    PCB 线路板人生
  • 原文地址:https://www.cnblogs.com/howo/p/7892564.html
Copyright © 2011-2022 走看看