TCP狀態描述

2021-09-08 14:55:09 字數 1156 閱讀 5712

tcp的有限狀態機用來管理乙個連線,當第一次執行時,連線從乙個初始狀態closed開始,當兩個應用程式開始通訊時,經過一系列的tcp段交換和狀態變遷,直到成功建立連線,兩端都處於established狀態,正常的資料傳送和接收都發生在這一狀態。tcp的大部分時間也處於這一狀態,當發生錯誤或程式退出通訊時,關閉連線,經歷一系列相關的狀態變遷,返回到最初的closed狀態。

標準給出了在tcp連線的各個狀態中,發生某些事件要執行的動作和狀態轉移行為。下表對tcp各個狀態進行簡單的描述。

狀態描述

closed

連線的起始狀態,這是乙個「虛構」的狀態,實際上此時還沒有連線存在,也沒有傳輸控制塊(tcb)

listen

等待客戶端的連線請求,只有伺服器才會處於這個狀態

syn-sent

主機已經發起了乙個連線請求,傳送了syn報文,正在等待與之匹配的連線確認,即對方發來的syn和ack

syn-received

主機接收了對方的連線請求,帶有syn的報文,並向對方回應了syn和ack。正在等待對方的確認,一旦收到相應的ack,連線就建立成功

established

成功建立連線,雙方可以自由交換資料,收到的資料可以提交給應用程式

fin-wait-1

應用程式主動關閉連線,傳送了fin,正在等待對方對fin的確認或對方的終止連線請求fin

fin-wait-2

收到了主機關閉連線請求fin的確認ack,正在等待對方終止連線請求fin

close-wait

已經收到對方關閉連線的請求fin,並傳送了ack,正在等待本地應用程式關閉連線

closing

已經傳送了fin,並且收到了對方發來的終止連線請求fin,向對方傳送ack,雙方同時關閉了連線,正在等待對方確認本機傳送的連線關閉請求

last-ack

本地應用程式已經關閉了連線,傳送了fin,正在等待對方對fin的ack

time-wait

雙方都已經關閉了連線,本機傳送的最後乙個報文是ack,這個狀態要等待2倍的msl(maximum segment lifetime)時間,確保對方收到了ack,防止與新連線發生重疊

tcp的狀態機比較複雜,它是整個tcp工作的基礎,理解tcp的狀態機,對掌握tcp協議很有用處。

【學習資料】 《winsock網路程式設計經絡》

TCP連線狀態描述

狀 態 說 明 closed 不存在tcp連線 listen 乙個應用層協議已經發布了乙個被動開啟,並且有意接收 tcp連線試圖 syn sent 乙個應用層協議已經傳送了乙個主動開啟,並且傳送了乙個 syn段 syn rcvd 乙個syn 段被接收,並且乙個 syn ack 被傳送 establi...

tcp連線狀態描述

狀 態 說 明 closed 不存在tcp連線 listen 乙個應用層協議已經發布了乙個被動開啟,並且有意接收tcp連線試圖 syn sent 乙個應用層協議已經傳送了乙個主動開啟,並且傳送了乙個syn段 syn rcvd 乙個syn段被接收,並且乙個syn ack被傳送 established ...

網路鏈結狀態描述

狀態 說明 closed 不存在tcp連線 listening 乙個應用層協議已經發布了乙個被動開啟,並且有意接收tcp連線試圖 synsent 乙個應用層協議已經傳送了乙個主動開啟,並且傳送了乙個syn段 synrcvd 乙個syn段被接收,並且乙個syn ack被傳送 established 針...