TCP保活机制

时间:2021-08-23
本文章向大家介绍TCP保活机制,主要包括TCP保活机制使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

what(保活机制是什么):

  服务器端设置一个保活定时器,当定时器开始工作时,就会定时的向网络通信的另一端发送保活探测的TCP报文。如果服务器接收到了ACK报文,那么对方是存活的,否则网络存在故障。

why(保活机制为何要存在):

  1、通过保活机制可以保证通信双方连接不被释放,即:长连接的场景;

  2、确保网络连接出问题的TCP连接能够被释放掉。如:客户端或者服务器端发生了错误或者宕机;

how(保活机制是如何工作的):

  如果一个连接在最大非活跃时间(tcp_keepidle或者net.ipv4.tcp_keepalive_time)内没有动作,则向客户端发送探测报文(以后间隔tcp_keepintvl或者net.ipv4.tcp_keepalive_intvl再发送)。客户端必须处理以下4种状态:

  1、客户端正常,并且可达,服务器在两小时(tcp_keepidle或者net.ipv4.tcp_keepalive_time)后,服务端的保活定时器复位。如果两小时(tcp_keepidle或者net.ipv4.tcp_keepalive_time)之间,有应用程序的通讯通过该连接,定时器在交换完数据后会复位;

  2、客户端已经崩溃,并且关闭或者正在重新启动。这种情况下,客户端是没有反应的,服务器会在75秒(tcp_keepintvl或者net.ipv4.tcp_keepalive_intvl)后超时重试,服务器一共重试10次(tcp_keepcnt 或者net.ipv4.tcp_keepalive_probes)。如果服务器没有收到一个响应,它就认为客户主机已经关闭,并终止连接;

  3、客户端崩溃后,已经重启动。这时服务器会收到一个复位响应,那么服务器将会终止这个连接;

  4、客户端正常,但是客户端和服务器相互不可达。处理和2相同;

原文地址:https://www.cnblogs.com/sfzlstudy/p/15174662.html