TCP of linux
TCP(Transmission Control Protocol)在使用時,與每個 TCP 連接相關的狀態是動態變化的,而這些狀態通常被監控以確保系統的正常運作。以下是一些 TCP 狀態及其相關的描述:
ALLOCATED
:- 這通常不是一個 TCP 狀態,而是表示資源已被分配(allocate)給一個 TCP 連接,但可能還沒有被使用。
LISTEN
:- 當一個服務器正在等待客戶端連接時,該 TCP 連接處於
LISTEN
狀態。在這種狀態下,該連接可以接受新的連接請求。
- 當一個服務器正在等待客戶端連接時,該 TCP 連接處於
SYN-SENT
:- 客戶端發送一個 SYN(同步)請求,進入
SYN-SENT
狀態等待伺服器的確認。在這種狀態下,TCP 連接正在初始化。
- 客戶端發送一個 SYN(同步)請求,進入
SYN-RECEIVED
:- 伺服器在接收到客戶端的 SYN 請求後,發送自己的 SYN 和 ACK(確認)請求,進入
SYN-RECEIVED
狀態。在這種狀態下,TCP 連接正在確認並同時初始化。
- 伺服器在接收到客戶端的 SYN 請求後,發送自己的 SYN 和 ACK(確認)請求,進入
ESTABLISHED
:- 一旦三次握手完成,連接進入
ESTABLISHED
狀態,表示數據可以在雙方之間傳輸。
- 一旦三次握手完成,連接進入
FIN-WAIT-1
、FIN-WAIT-2
:- 當一方(通常是客戶端或伺服器)決定結束連接,它會進入
FIN-WAIT-1
狀態,等待對方的確認。在對方發送確認後,它進入FIN-WAIT-2
狀態,等待對方的結束請求。
- 當一方(通常是客戶端或伺服器)決定結束連接,它會進入
TIME-WAIT
:- 在一方發送結束請求後,進入
TIME-WAIT
狀態,等待可能在網絡上延遲的最後一個 ACK。這是為了確保已傳送的 ACK 得到正確處理。
- 在一方發送結束請求後,進入
CLOSE-WAIT
:- 表示對方已經結束連接,而自己還可以發送數據。
CLOSING
:- 表示雙方都在同時結束連接,但仍然需要進行一些確認。
LAST-ACK
:- 表示自己已經結束連接,並等待對方的確認。
CLOSED
:- 表示連接已經完全結束,不再存在。
這些狀態描述了 TCP 連接的生命週期中的不同階段。關於 TCP 狀態的監控,通常會關注一些與之相關的指標,例如 node_sockstat_TCP_alloc
(如果有的話)以及 netstat
命令的輸出。這些指標和工具可以提供關於 TCP 連接數量、狀態轉換等信息,進而幫助進行系統監控和調試。