1、先上圖:
2、全部11種狀態
2.1、客戶端獨有的:(1)syn_sent (2)fin_wait1 (3)fin_wait2 (4)closing (5)time_wait 。
2.2、伺服器獨有的:(1)listen (2)syn_rcvd (3)close_wait (4)last_ack 。
2.3、共有的:(1)closed (2)established 。
3、狀態變遷
3.1、建立連線時的狀態變遷
一開始,建立連線之前伺服器和客戶端的狀態都為closed。伺服器建立socket後開始監聽,變為listen狀態。客戶端請求建立連線,向伺服器傳送syn報文,客戶端的狀態變為syn_sent。伺服器收到客戶端的報文後向客戶端傳送ack和syn報文,此時伺服器的狀態變為syn_rcvd。然後,客戶端收到ack、syn,就向伺服器傳送ack,客戶端狀態變為established,伺服器收到客戶端的ack後也變為established。此時,3次握手完成,連線建立!
3.2、斷開連線時的狀態變遷
由於tcp連線是全雙工的,斷開連線會比建立連線麻煩一點點。客戶端先向伺服器傳送fin報文,請求斷開連線,其狀態變為fin_wait1。伺服器收到fin後向客戶端發生ack,伺服器狀態變為close_wait。客戶端收到ack後就進入fin_wait2狀態。此時連線已經斷開了一半了。如果伺服器還有資料要傳送給客戶端,就會繼續傳送。直到發完了,就傳送fin報文,此時伺服器進入last_ack狀態。客戶端收到伺服器的fin後,馬上傳送ack給伺服器,此時客戶端進入time_wait狀態,再過了2msl長的時間後進入closed狀態。伺服器收到客戶端的ack就進入closed狀態。
至此,還有乙個狀態沒有提及:closing狀態。closing狀態表示客戶端發生了fin,但沒有收到伺服器的ack,卻收到了伺服器的fin。這種情況發生在伺服器傳送的ack丟包的時候,因為網路傳輸有時會有意外。
2012-10-23
TCP連線的11種狀態變遷
tcp連線的11種狀態變遷 1 先上圖 2 全部11種狀態 2.1 客戶端獨有的 1 syn sent 2 fin wait1 3 fin wait2 4 closing 5 time wait 2.2 伺服器獨有的 1 listen 2 syn rcvd 3 close wait 4 last a...
TCP狀態變遷
連線建立 連線建立分要經過三次握手過程 quote 1 客戶端傳送乙個syn段到指明客戶打算連線的伺服器的埠,報文段中要設定客戶端初始序號。2 伺服器發回包含伺服器的初始序號的syn報文段作為應答。同時,將確認序號設定為客戶的初始序號加1,並設定ack位標誌報文段為確認報文段。3 客戶端必須將確認序...
TCP連線各狀態數量 以及TCP各狀態變遷流程
檢視linux系統中tcp連線情況 檢視系統tcp連線中各個狀態的連線數。netstat an awk tcp end 檢視和本機80埠建立連線並狀態在established的所有ip netstat an grep 80 grep esta awk awk begin sort uniq 輸出每個...