1. 程式人生 > >tcp協議的端口狀態

tcp協議的端口狀態

連接 異常 常用 初始 round icm tcp icmp 斷開連接

Listening

Syn_sent

syn_rcvd

established

close_wait

time_wait

---------

對方主動關閉(對方調用close()), 我方的狀態變為 close_wait

我方主動關閉(我方調用close()), 我方的狀態變為 time_wait

統計各種端口狀態的數目:netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}‘

技術分享圖片

3. 什麽是2MSL

MSL是Maximum Segment Lifetime,譯為“報文最大生存時間”,他是任何報文在網絡上存在的最長時間,超過這個時間報文將被丟棄。
因為TCP報文(segment)是IP數據報(datagram)的數據部分,而IP頭中有一個TTL域,TTL是time to live的縮寫,中文可以譯為“生存時間”,這個生存時間是由源主機設置初始值但不是存的具體時間,而是存儲了一個IP數據報可以經過的最大路由數,每經過一個處理他的路由器此值就減1,當此值為0則數據報將被丟棄,同時發送ICMP報文通知源主機。
RFC 793中規定MSL為2分鐘,實際應用中常用的是30秒,1分鐘和2分鐘等
---------------------
作者:overstack
來源:CSDN
原文:https://blog.csdn.net/overstack/article/details/8833894
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

我覺得:下面這張圖有誤, 右邊是time_wait?

技術分享圖片

--------------------------------------------------------------------------------------------

TCP協議規定需要三次握手才能成功連接、四次握手才能成功斷開連接,在cmd命令行中輸入netstat -an即可查看網絡端口狀態;

1.Listening:

  處於監聽狀態;

2.Established:

  建立連接表示正在通信;

3.Close_wait:

  對方主動關閉連接或者網絡異常導致連接中斷,這時我方的狀態會變成CLOSE_WAIT 此時我方要調用close()來使得連接正確關閉;

4.Time_wait:

  我方主動調用close()斷開連接,收到對方確認後狀態變為TIME_WAIT;

5.Syn_sent:

  表示請求連接,當你要訪問其它的計算機的服務時首先要發個同步信號給該端口,此時狀態為SYN_SENT,如果連接成功了就變為ESTABLISHED,此時SYN_SENT狀態非常短暫;

tcp協議的端口狀態