理解 TCP(四) 狀態流轉

2021-09-11 12:58:40 字數 1127 閱讀 5382

更好閱讀體驗:《理解 tcp 和 udp》— by gitbook

無論客戶端還是伺服器,在雙方 tcp 通訊的過程中,都會有著乙個「狀態」的概念,狀態會隨著 tcp 通訊的不同階段而變化。

tcp 狀態流轉圖.png

closed:表示初始狀態

listen:表示伺服器端的某個 socket 處於監聽狀態,可以接受連線

syn_sent:在服務端監聽後,客戶端 socket 執行 connect 連線時,客戶端傳送 syn 報文,此時客戶端就進入 syn_sent 狀態,等待服務端確認。

syn_rcvd:表示服務端接收到了 syn 報文。

established:表示連線已經建立了。

fin_wait_1:其中一方請求終止連線,等待對方的 fin 報文。

fin_wait_2:在fin_wait_2之後, 當對方回應 ack 報文之後,進入該狀態。

time_wait:表示收到了對方的 fin 報文,並傳送出了 ack 報文,就等 2msl 之後即可回到 closed 狀態。

closing:一種罕見狀態,發生在傳送 fin 報文之後,本應是先收到 ack 報文,卻先收到對方的 fin 報文,那麼就從 fin_wait_1 的狀態進入 closing 狀態。

close_wait:表示等待關閉,在 established 過渡到 last_ack 的乙個過渡階段,該階段需要考慮是否還有資料傳送給對方,如果沒有,就可以關閉連線,傳送 fin 報文,然後進入 last_ack 狀態。

last_ack:被動關閉一方傳送 fin 報文之後,最後等待對方的 ack 報文所處的狀態。

closed:當收到 ack 保溫後,就可以進入 closed 狀態了。

《後台開發 核心技術與應用實踐》

《計算機網路》

理解 TCP(四) 狀態流轉

更好閱讀體驗 理解 tcp 和 udp by gitbook 無論客戶端還是伺服器,在雙方 tcp 通訊的過程中,都會有著乙個 狀態 的概念,狀態會隨著 tcp 通訊的不同階段而變化。closed 表示初始狀態 listen 表示伺服器端的某個 socket 處於監聽狀態,可以接受連線 syn se...

TCP狀態轉換的理解

虛線為伺服器狀態轉換 實現為客戶端狀態轉換 正常tcp連線中客戶端與服務端狀態轉換 伺服器端狀態 1.listen 服務啟動後處於監聽狀態 2.syn recv 收到乙個連線請求,尚未確認 3.established 連線建立,正常資料傳輸狀態 4.close wait 被動關閉 收到對方關閉請求,...

對TCP狀態轉換的理解

listen 這個也是非常容易理解的乙個狀態,表示伺服器端的某個socket處於監聽狀態,可以接受連線了。syn rcvd 這個狀態表示接收到了syn報文,在正常情況下,這個狀態是伺服器端的socket在建立tcp連線時的三次握手會話過程中的乙個中間狀態,很短暫,基本上用netstat你是很難看到這...