文章目錄
- 一、客戶端主機宕機后迅速重啟
- 1、服務端有數據發送
- 2、服務端開啟「保活」機制
- 3、服務端既沒有數據發送,也沒有開啟「保活」機制
- 二、客戶端主機宕機后一直沒有重啟
- 1、服務端有數據發送
- 2、服務端開啟「保活」機制
- 3、服務端既沒有數據發送,也沒有開啟「保活」機制
一、客戶端主機宕機后迅速重啟
1、服務端有數據發送
服務端發出的數據報文得不到響應,一段時間(RTO)后觸發「超時重傳」機制,重傳期間,重啟客戶端主機,重傳報文到達后,Linux 內核回復 RST
2、服務端開啟「保活」機制
服務端發出的探測報文得不到響應,一段時間(tcp_keepalive_intvl)后繼續嘗試發送探測報文,期間重啟客戶端主機,探測報文到達后,Linux 內核回復 RST
3、服務端既沒有數據發送,也沒有開啟「保活」機制
服務端會一直維護這個連接,并且保持 ESTABLISHED 狀態,直到重啟服務進程
二、客戶端主機宕機后一直沒有重啟
1、服務端有數據發送
服務端發出的數據報文得不到響應,一段時間(RTO)后觸發「超時重傳」機制,當重傳總間隔時長超過某個閾值后,就會斷開 TCP 連接
2、服務端開啟「保活」機制
服務端發出的探測報文得不到響應,一段時間(tcp_keepalive_intvl)后繼續嘗試發送探測報文,連續幾次達到保活探測次數(tcp_keepalive_probes)后,則認為當前的 TCP 連接已經死亡,由 Linux 內核通知進程
3、服務端既沒有數據發送,也沒有開啟「保活」機制
服務端會一直維護這個連接,并且保持 ESTABLISHED 狀態,直到重啟服務進程