TCP 套接字連接是否具有「保持活動狀態」?
與 HTTP 保持活動狀態不同,TCP 套接字連線不會無限期地保持開啟。相反,它們受到 TCP Keep-Alive 強制執行的逾時限制。
簡介
TCP 連接涉及兩個套接字,每個套接字駐留在連接的一端。通常,這些套接字保持開啟狀態,直到一端終止連線(由 FIN 資料包指示)。但是,如果發生意外的套接字終止,TCP Keep-Alive 會偵測並關閉過時的連線。
Keep-Alive Process
在Linux 系統上,TCP Keep-Alive使用以下預設設定運行:
如果連接空閒時間超過tc_p_ACK_ACK_ACK_ACK_ACK.ACK_ACK_ACK_ACK_ACK_ACK_ACK_ACK_ACK。如果在指定次數的偵測後沒有回應,則透過 RST 終止連線。
問題
2 小時預設值: 默認,Keep-Alive 過程僅在2 小時不活動後啟動,這可能會導致過時的連接持續存在。
Keep-Alive 是可選的: 回應 Keep-Alive 封包是可選的,並且某些實作可能會丟棄它們。
更改TCP 逾時
要修改TCP 超時,請參考以下特定作業系統的說明:
Linux:
Mac OS X:
系統範圍:
編輯HKEY_LOCAL_MACHINESystemCurrentControlSetServicesTCPIPParameters以上是TCP 保持活動狀態如何運作以及套接字連線保持開啟狀態多久?的詳細內容。更多資訊請關注PHP中文網其他相關文章!