用netstat -an命令查看!再stat下面有一些英文,簡單說一下這些英文具體都表明什麼:html
LISTEN:(Listening for a connection.)偵聽來自遠方的TCP端口的鏈接請求服務器
SYN-SENT:(Active; sent SYN. Waiting for a matching connection request after having sent a connection request.)再發送鏈接請求後等待匹配的鏈接請求tcp
SYN-RECEIVED:(Sent and received SYN. Waiting for a confirming connection request acknowledgment after having both received and sent connection requests.)再收到和發送一個鏈接請求後等待對方對鏈接請求的確認post
ESTABLISHED:(Connection established.)表明一個打開的鏈接ui
FIN-WAIT-1:(Closed; sent FIN.)等待遠程TCP鏈接中斷請求,或先前的鏈接中斷請求的確認google
FIN-WAIT-2:(Closed; FIN is acknowledged; awaiting FIN.)從遠程TCP等待鏈接中斷請求url
CLOSE-WAIT:(Received FIN; waiting to receive CLOSE.)等待從本地用戶發來的鏈接中斷請求spa
CLOSING:(Closed; exchanged FIN; waiting for FIN.)等待遠程TCP對鏈接中斷的確認orm
LAST-ACK:(Received FIN and CLOSE; waiting for FIN ACK.)等待原來的發向遠程TCP的鏈接中斷請求的確認htm
TIME-WAIT:(In 2 MSL (twice the maximum segment length) quiet wait after close. )等待足夠的時間以確保遠程TCP接收到鏈接中斷請求的確認
CLOSED:(Connection is closed.)沒有任何鏈接狀態
TCP鏈接創建
首先要說明的是要明確TCP鏈接創建的過程須要3次握手,下面舉例說明各類狀態存在的時刻:
1. 首先在服務器A上開啓FTP服務,開始偵聽來自遠端TCP端口的鏈接請求,這個時候查看服務器A狀態爲:LISTENING
2. 在客戶端B上向A發送FTP鏈接請求,這個時候數據包同步位置1,這是TCP三次握手的第一步。在發送後沒收到確認時,在客戶端B上其狀態爲:SYN-SENT。此時客戶端B啓動鏈接定時器。若是在75秒內沒有收到應答,則放棄鏈接創建。
3. 在服務器A上收到從B上發送的SYN同步包後,確認,而後再向B發送SYN的同步包,此數據包同時將TCP標記中的同步位和確認位置1,它既對第一步中的客戶端同步數據包進行確認,表示願意與客戶端同步,同時再對客戶端主機進行同步請求,這是TCP鏈接的第一步。這個時候在服務器A上,狀態爲:SYN-RECEIVED。此時服務器A啓動鏈接定時器。若是在75秒內沒有收到應答,則放棄鏈接創建。
4. 在客戶端B上接收到從A上發過來的確認同步包後進行確認,此數據包中將TCP標記中的確認位置1,表示這是一個確認數據包,此時在客戶端B狀態轉換爲:ESTABLISHED
5. 服務器A接收到從B發過來的確認包後,狀態轉換爲:ESTABLISHED
此時TCP鏈接正式創建。
TCP鏈接關閉
6. 應用程序在在鏈接不須要的時候,經過客戶端B向服務器A發送的終止信息的FIN包後,客戶端B處於FIN-WAIT-1狀態。
7. 從服務器A接收到客戶端B發送的終止數據包,它告訴客戶端B已成功接收客戶端的上數據包,此時等待應用程序來關閉鏈接,此時服務器A進入CLOSE_WAIT狀態。
8. 客戶端B接收到帶有確認位的數據包後,對此進行確認,贊成關閉TCP鏈接此時客戶端B轉移到FIN-WAIT-2狀態。當鏈接從FIN-WAIT-1狀態轉移到FIN-WAIT-2狀態時,將一個FIN-WAIT-2定時器設置爲10分鐘。
9. 服務器A在應用程序贊成終止鏈接後,向客戶端B發送終止FIN包,此時服務器狀態轉爲LAST-ACT。
10. 客戶端B在接收到從服務器A發送的終止包後,贊成終止鏈接,而後再向服務器端發送確認信息,此時客戶端B轉向TIME-WAIT狀態。當鏈接進入TIME-WAIT狀態時,該定時器被激活。
11. 服務端A在收到客戶端B的確認後,關閉鏈接,服務器A狀態轉向CLOSED。
12. 客戶端B在TIME-WAIT定時器超時時,與該鏈接相關的內核數據塊被刪除,鏈接終止,轉向CLOSED狀態。
此時TCP鏈接正式關閉。
備註
1. 一個由客戶端發起的關閉TCP鏈接的示意圖:
2. 鏈接終止請求對與創建鏈接的雙方是能夠同時發出的,在發出終止請求後,雙方都進入FIN-WAIT-1狀態,隨着定時器的超時,雙方都進入CLOSING狀態,在這個定時器再次超時後,均轉入TIME-WAIT狀態,在TIME-WAIT的定時器超時後,雙方均放棄此次鏈接,鏈接轉爲CLOSE狀態。如圖示: