三次握手和四次揮手


建立連接的過程是利用客戶服務器模式,假設主機 A 爲客戶端,主機 B 爲服務器端。
(1) TCP 的三次握手過程:主機 A 向 B 發送連接請求;主機 B 對收到的主機 A 的報文段進行確認;主機 A 再次對主機 B 的確認進行確認。
(2)採用三次握手是爲了防止失效的連接請求報文段突然又傳送到主機 B,因而產生錯誤。失效的連接請求報文段是指:主機 A 發出的連接請求沒有收到主機 B 的確認,於是經過一段時間後,主機 A 又重新向主機 B 發送連接請求,且建立成功,順序完成數據傳輸。考慮這樣一種特殊情況,主機 A 第一次發送的連接請求並沒有丟失,而是因爲網絡節點導致延遲達到主機 B,主機 B 以爲是主機 A 又發起的新連接,於是主機 B 同意連接,並向主機 A 發回確認,但是此時主機 A根本不會理會,主機 B 就一直在等待主機 A 發送數據,導致主機 B 的資源浪費。
(3)採用兩次握手不行,原因就是上面說的失效的連接請求的特殊情況,因此採用三次握手剛剛好,兩次可能出現失效,四次甚至更多次則沒必要,反而複雜了四次揮手:先由客戶端向服務器端發送一個 FIN,請求關閉數據傳輸。當服務器接收到客戶端的 FIN 時,向客戶端發送一個 ACK,其中 ack 的值等於 FIN+SEQ然後服務器向客戶端發送一個 FIN,告訴客戶端應用程序關閉。當客戶端收到服務器端的 FIN 是,回覆一個 ACK 給服務器端。其中 ack 的值等於 FIN+SEQ爲什麼要 4 次揮手?確保數據能夠完成傳輸。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章