TCP三次握手鍊接和TCP四次揮手及大量TIME_WAIT解決方法:

20160120103737468

1.TCP創建鏈接,三次握手html

創建的TCP鏈接可靠的鏈接,必須通過三次握手創建鏈接才能正式通訊彼此傳輸數數據。網絡

客戶端請求服務端創建鏈接socket

第一次握手:客戶給服務發送一個請求報文SYN, 客戶端的狀態置SYN_SENT狀態tcp

第二次握手:服務端在收到客戶端發過來的SYN請求報文後,開始給客戶端發送ACK報文和SYN報文,狀態置爲SYN_RECE學習

第三次握手:客戶端口收到服務端口過來的SYN報文和ACK報文後,狀態由原來的SYN_SENT狀態變爲ESTABLISHED;而且給服務發送一個ACK報文告知對方已經送到服務端發送的SYN報文,服務端收到報文後,由原來的SYN_RECE變爲ESTABLISHED 操作系統

至此客戶到服務端,服務端到客戶端的雙向鏈接創建好了而且處理ESTABLISHED。雙方能夠進行數據交換了。htm

 

2.TCP斷開鏈接,四次揮手。blog

當客戶端把全部數據傳送完畢的時候,給服務端口送一個FIN報文,告知服務端:我這邊沒有數據可傳,但願關閉客戶端到服務端方向的鏈接。以後其狀態由原來的get

ESTABLISHED 變爲FIN_WAIT_1,;it

服務端收到客戶的FIN報文後,送一個ACK報文給客戶端,告知「我服務端知道你客戶端口已經沒有數據可傳,可是我這邊什麼關閉鏈接,還須要等個人數據傳完;若是我這裏數據也傳送完了,我也會給發送一個FIN報文。」。此時服務端發送ACK報文後,狀態由以前的ESTABLISHED 變爲CLOSE_WAIT

客戶端端收到服務的ACK報文,將FIN_WAIT_1置FIN_WAIT_2,同時,繼續等來的服務發送FIN報文。

當服務端數據傳送也完畢的後,開始給客戶端發送FIN包,發送FIN包後,其狀態CLOSE_WAIT置爲LAST_ACK

客戶端口收到了服務的發過來的FIN包後,又給服務端發送ACK。發送ACK後,狀態由原來的FIN_WAIT_2置爲TIME_WAIT,客戶在通過2MSL 時間進入CLOSE狀態

服務端口收到客戶端發送的ACK後,由LAST_ACK也進入CLOSE

 

3.TCP遷移狀態:

LISTEN:服務端已經啓動一個socket,其狀態處於監聽狀態,等待客戶發起請求鏈接。

ESTABLISHED:客戶端和服務端通過三次握手創建,兩個方向上鍊接狀態都創建,狀態置爲ESTABLISHED

客戶端狀態變遷:(主動端)

FIN_WAIT_1: 發送FIN給服務端口。

FIN_WAIT_2:收到服務端的ACK報文

TIME_WAIT :收到服務端發過來的FIN報文,發送ACK報文給服務端口。主動關閉鏈接端,接收到服務(TIME_WAIT是主動端關閉)以後進入2MSL時間的等待

CLOSE:2MSl事後,關閉進入初始化狀態。

 

服務端狀態變遷:(服務端)

CLOSE_WAIT:收到客戶端FIN報文,給客戶端發送ACK狀態後,表示知道客戶端要關閉鏈接請求,服務端可能數據尚未傳送完,因此處於等

                         等待關閉狀態。(CLOSE_WAIT是被動端關閉)

LAST_ACK:服務端數據傳輸完畢,發送FIN報文給客戶端,同時等待客戶端發ACK報文狀態

CLOSE:收到客戶端ACK報文後,進入初始化狀態

 

鏈接是雙方創建的。發送數據的端客戶也轉變爲接受數據的服務端口,服務端和客戶角色是相互轉換的

4.MSL時間:

MSL就是maximum segment lifetime(最大分節生命期),這是一個IP數據包能在互聯網上生存的最長時間,超過這個時間IP數據包將在網絡中消失 。MSL在RFC 1122上建議是2分鐘,而源自berkeley的TCP實現傳統上使用30秒

TIME_WAIT狀態維持時間

TIME_WAIT狀態維持時間是兩個MSL時間長度,也就是在1-4分鐘。Windows操做系統就是4分鐘。

5.用於統計當前各類狀態的鏈接的數量的命令

#netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

返回結果以下:

LAST_ACK 14

SYN_RECV 348

ESTABLISHED 70

FIN_WAIT1 229

FIN_WAIT2 30

CLOSING 33

TIME_WAIT 18122

學習參考資料 TIME_WAIT狀態原理分析:http://elf8848.iteye.com/blog/1739571

學習參考資料 TIME_WAIT狀態過多解決方法:http://blog.sina.com.cn/s/blog_8e5d24890102w9yi.html

相關文章
相關標籤/搜索