Security
TCP Keepalive:為什麼空閒的 ESTABLISHED 連接在 60 秒後結束,而不是 tcp_keepalive_time?
我正在研究減輕伺服器抵禦 DoS 類型攻擊的方法。在一種情況下,我打開了數百個到我的網路伺服器的 TCP 連接。初始 TCP 握手後我不發送任何數據;TCP 握手後的空閒連接。伺服器顯示此連接處於 ESTABLISHED 狀態。
在 60 秒沒有活動後,連接被伺服器終止(移動到 FIN_WAIT2 狀態)。
為什麼會在 60 秒後發生這種情況?有沒有控制這個的核心值?我希望連接在“tcp_keepalive_time”秒後終止(目前設置為 7200)。
空閒連接不必等待 7200 秒即可終止,這很好,但我想了解它為什麼會在 60 秒後發生。
這是在執行 2.6.32 核心的 CentOS 6.4 伺服器上。
空閒連接的處理與 TCP keep alive 無關,只與伺服器程序內部的設置有關。TCP keep alive 只關心及時檢測斷開的連接,即因為中間的某些東西損壞或一個對等點崩潰而無法交換數據包。當連接空閒時,不會交換實際數據,但仍然可以交換具有零負載的 TCP 保持活動數據包。