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相同;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM