1.listen
監聽狀態,表示伺服器程序監聽某埠等待著為到來的tcp客戶端提供服務。
2.syn_recv
表示伺服器接收到了tcp客戶端傳送來的syn資料報後,伺服器已經發出了對應的響應ack包和自己的syn包給客戶端。
3.syn_send
此狀態通常用在客戶端發起到伺服器的連線,表示客戶端主機主動向伺服器發出了syn包後的狀態。
4.established
在客戶端受到伺服器的ack應答包和syn包後,向伺服器發出ack包以響應其syn包後,tcp連線已經正是建立。
通過上面的過程其實就是tcp三次握手的整個過程。
下面的狀態與tcp連線的斷開有關
5.time_wait
當tcp連線建立後雙方傳輸資料時tcp狀態為established,如果有一方主動提出斷開請求則其狀態轉為time_wait。
下面是tcp狀態轉化的圖:
斷開連線的時候,當發起主動關閉的左邊這方傳送乙個fin過去後,右邊被動關閉的這方要回應乙個ack,這個ack是tcp回應的,而不是應用程式傳送的,此時,被動關閉的一方就處於close_wait狀態了。如果此時被動關閉的這一方不再繼續呼叫closesocket,那麼他就不會傳送接下來的fin,導致自己老是處於close_wait。只有被動關閉的這一方呼叫了closesocket,才會傳送乙個fin給主動關閉的這一方,同時也使得自己的狀態變遷為last_ack。
TCP連線狀態描述
狀 態 說 明 closed 不存在tcp連線 listen 乙個應用層協議已經發布了乙個被動開啟,並且有意接收 tcp連線試圖 syn sent 乙個應用層協議已經傳送了乙個主動開啟,並且傳送了乙個 syn段 syn rcvd 乙個syn 段被接收,並且乙個 syn ack 被傳送 establi...
查詢TCP連線狀態
include iphlpapi.h include include winsock2.h include pragma comment lib,iphlpapi.lib pragma comment lib,ws2 32.lib static char tcpstate 32 int ismytc...
tcp連線狀態描述
狀 態 說 明 closed 不存在tcp連線 listen 乙個應用層協議已經發布了乙個被動開啟,並且有意接收tcp連線試圖 syn sent 乙個應用層協議已經傳送了乙個主動開啟,並且傳送了乙個syn段 syn rcvd 乙個syn段被接收,並且乙個syn ack被傳送 established ...