1. 程式人生 > 其它 >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相同;