第十一篇:基於TCP的一對回射客戶/伺服器程式及其執行過程分析( 下 )

穆晨發表於2017-01-29

執行分析

1. 開啟伺服器程式:

       

2. 執行netstat -a命令觀察當前的連線狀態:

       

       第1條連線記錄說明:繫結了本地主機的任意IP,埠為9877,目前處於監聽狀態。

3. 開啟客戶程式:

       

4. 執行netstat -a命令觀察當前的連線狀態,發現了兩個新的連線:

       

       以及

       

       上面一個連線說明一個連線到伺服器的連線,客戶端臨時埠是32818,目的埠正是先前的9877,連線狀態為已建立,對應已連線套接字;

       下面一個連線說明一個連線到客戶端的連線,服務端埠為9877,目的埠是32818,這個連線已經建立,對應的是已連線套接字;

       因為是在一臺機器上做的測試,因此出現了上述兩條“ 對稱 ”的結果。

5. 然後測試該回射程式:

       

6. 接下來,ctrl+D中斷連線,然後立馬netstat -a查詢連線狀態:

       可以觀察到,多了一條是客戶端的TIME_WAIT狀態的記錄( 伺服器端是沒有什麼狀態顯示的因為程式已經結束了 ):

       

7. 過一段時間,再次netstat -a,會發現上面那條記錄已經沒了。這是因為TIME_WAIT過一段時間就沒了,和設想一致。

相關文章