TIME_WAIT是什嗎?

來源:互聯網
上載者:User

在TCP斷開的過程中會有四個狀態變化過程,如所示:

在串連撤銷過程中,有如下過程:                                          
1.HOST1上的應用程式關閉己方的串連導致TCP發送一個FIN訊息給HOST2。2.HOST2發送一個確認訊息給HOST1,並且HOST2把FIN作為EOF遞交給HOST2上的應用程式。3.一段時間過後,HOST2上的應用程式關閉它那邊的串連,引發一個FIN訊息給HOST1。4.HOST1給HOST2發送一個確認訊息,然後HOST2關閉串連並釋放資源,然而,HOST1卻沒有關閉串連,而是進入了TIME_WAIT狀態,並為兩個最大段存留時間(2MSL)保留在此狀態.  為什麼需要TIME_WAIT ? 1.因為在第四步的時候,HOST1發送的ACK可能丟失並導致HOST2重新發送FIN訊息,TIME_WAIT維護串連狀態.  如果執行主動關閉的一方HOST1 不進入到TIME_WAIT狀態就關閉串連那會發生什麼呢?當重傳的FIN訊息到達時,因為TCP已經不再有串連的資訊了,所以就用RST(重新啟動)訊息應答,導致HOST2進入錯誤的狀態而不是有序終止狀態,如果發送最後ACK訊息的一方處於TIME_WAIT狀態並仍然記錄著串連的資訊,它就可以正確的響應對等方HOST2的FIN訊息了.2.TIME_WAIT為串連中”離群的段”提供從網路中消失的時間.  考慮一下,如果延遲或者重傳段在串連關閉後到達時會發生什麼呢?通常情況下,因為TCP僅僅丟棄該資料並響應RST訊息,所以這不會造成任何問題。當RST訊息到達發出延時段的主機時,因為該主機也沒有記錄串連的任何資訊,所以它也丟棄該段。然而,如果兩個相同主機之間又建立了一個具有相同連接埠號碼的新串連,那麼離群的段就可能被看成是新串連的,如果離群的段中資料的任何序號恰恰在新串連的當前接收視窗中,資料就會被重新接收,其結果就是破壞新串連。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.