-
-
LISTEN:套接字正在監聽連接[調用listen后],表示服務器端的某個SOCKET處於監聽狀態,可以接受客戶端的連接。
-
SYN_SENT:套接字正在試圖主動建立連接[發送SYN后還沒有收到ACK],很短暫,基本上用netstat很難看到這種狀態
-
SYN_RECEIVED:正在處於連接的初始同步狀態[收到對方的SYN,但還沒收到自己發過去的SYN的ACK]
-
ESTABLISHED:連接已建立
-
CLOSE_WAIT:遠程套接字已經關閉:正在等待關閉這個套接字[被動關閉的一方收到FIN]。正在等待關閉,當對方close()一個SOCKET后發送FIN報文給自己,你的系統毫無疑問地將會回應一個ACK報文給對方,此時TCP連接則進入到CLOSE_WAIT狀態
-
FIN_WAIT_1:套接字已關閉,正在關閉連接[發送FIN,沒有收到ACK也沒有收到FIN],FIN_WAIT_1狀態實際上是當SOCKET在ESTABLISHED狀態時,它想主動關閉連接,向對方發送了FIN報文,此時該SOCKET進入到FIN_WAIT_1 狀態。而當對方回應ACK報文后,則進入到FIN_WAIT_2 狀態。這個狀態通過NETSTAT比較少見到
-
CLOSING:套接字已關閉,遠程套接字正在關閉,暫時掛起關閉確認[在FIN_WAIT_1狀態下收到被動方的FIN],比較少見:當雙方幾乎在同時close()一個SOCKET的話,就出現了雙方同時發送FIN報文的情況,這是就會出現CLOSING 狀態,表示雙方都正在關閉SOCKET連接。
-
LAST_ACK:遠程套接字已關閉,正在等待本地套接字的關閉確認[被動方在CLOSE_WAIT狀態下發送FIN]
-
FIN_WAIT_2:套接字已關閉,正在等待遠程套接字關閉[在FIN_WAIT_1狀態下收到發過去FIN對應的ACK]
-
TIME_WAIT:這個套接字已經關閉,正在等待遠程套接字的關閉傳送[FIN、ACK、FIN、ACK都完畢,這是主動方的最后一個狀態,在過了2MSL時間后變為CLOSED狀態]
參考資料:
https://time.geekbang.org/course/intro/100026801
https://blog.csdn.net/wentinghe/article/details/9455399
https://www.cnblogs.com/qingergege/p/6603488.html