linux 網路編程之TIME_WAIT狀態

來源:互聯網
上載者:User

                                                          Linux 網路編程之TIME_WAIT狀態

 

 

                                                       

 

剛剛開始看TCP socket的4次握手終止流程圖的時候,對於最後的TIME_WAIT狀態不是很理解.現在在回過頭來研究,發現TIME_WAIT狀態是一個很微妙狀態.之所以設計TIME_WAIT狀態的原因有2個原因:

 

  1. 使得TCP的全雙工系統串連能夠可靠的終止.
  2.  使得串連終止後網路上任然殘餘的發送給該串連的資料被丟棄而不至於被新串連接收.

在具體詳解這兩個原因之前,我們需要理解MSL(maxinum segment lifetime)這個概念.

每一個TCP 都必須有一個MSL值.這個值一般是2分鐘,但也不是固定的,不同的系統不一樣.無論是否出錯或者串連被斷開,總之,一個資料包在網路上能停留的最大時間是MSL.也就是說MSL是資料包的生命週期時間.操作這個時間,該資料包將會被丟棄而不被發送.而TIME_WAIT狀態持續的時間是MSL的兩倍,也就是2MSL時間.

 

  • TCP的全雙工系統串連能夠被可靠終止

TCP的可靠終止需要經過4次握手終止.如所示:首先,client 主動close,導致FIN發送給server,server接收到FIN後,給client回複一個ACK,之後,server會關閉和client的串連,即向client發送一個FIN,client接收到FIN之後,會發送一個ACK給server.此時client就進入TIME_WAIT狀態.如果server沒有收到ACK,server會重新發送一個FIN資訊給client,client會重發ACK,server然後繼續等待client發送一個ACK.這樣保證了雙方的可靠終止.2端都知道對方已經終止了.那麼,在這個TIME_WAIT時間中,可以重發ACK,如果client沒有收到FIN資訊,則TCP會向server發送一個RST資訊,這個資訊會被server解釋成error.

 

  • 串連終止後網路上任然殘留的發送到該串連的資料被丟棄而不至於被新串連接收.

舉個例子:

在10.12.24.48 port:21和206.8.16.32 port:23(不必關心哪一端是server哪一端是client)之間建立了一個TCP串連A.然後此連結A被close掉了.然後此時又在10.12.24.48 port:21和206.8.16.32 port:23(不必關心哪一端是server哪一端是client)之間建立了一個新的TCP串連B.很可能A和B串連是有不同的應用程式建立的.那麼,當我們close掉A之後,網路上很有可能還有屬於A串連兩端的資料m正在網路上被傳送.而此時A被close掉了,重建立立了B串連,由於A和B串連的地址和連接埠都是一樣的.這樣,m資料就會被最終發送到B串連的兩端.這樣就造成了混亂,B接收到了原本資料A的資料.處於TIME_WAIT狀態的串連會禁止新的同樣的串連(如A,B)串連被建立.除非等到TIME_WAIT狀態結束,也就是2MSL時間之後.其中,一個MSL時間是為了網路上的正在被發送到該連結的資料被丟棄,另一個MSL使得應答資訊被丟棄.這樣,2MSL之後,保證重建立立的所得到的資料絕對不會是發往就串連的資料.

 

 

著作權申明:
轉載文章請註明原文出處http://blog.csdn.net/feiyinzilgd/archive/2010/09/19/5894446.aspx

並請聯絡譚海燕本人或者前往譚海燕個人首頁留言

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.