綜合解讀TCP為什麼三次握手
TCP為什麼三次握手
首先可以先參考下面這篇文章參考。
TCP 為什麼三次握手而不是兩次握手(正解版)
以下都為個人理解。
結論先行:
三次握手本質目的是同步連線雙方的序列號(seq)和確認號(ack)並交換 TCP視窗大小資訊。
也可以理解為文章TCP 為什麼三次握手而不是兩次握手(正解版)中的結論
為了實現可靠資料傳輸, TCP 協議的通訊雙方, 都必須維護一個序列號, 以標識傳送出去的資料包中, 哪些是已經被對方收到的。 三次握手的過程即是通訊雙方相互告知序列號起始值, 並確認對方已經收到了序列號起始值的必經步驟
如果只是兩次握手, 至多隻有連線發起方的起始序列號能被確認, 另一方選擇的序列號則得不到確認
首先關於計算機網路書上對於為何需要第三次握手的解釋肯定是正確的理解
其中原文:
為什麼A最後還要傳送一次確認呢?這主要是防止已失效的連線請求報文突然又傳送到了B,因而產生錯誤。
然後對於“已失效的連線請求報文”,原文中是這樣定義的:
先假定一種異常情況,即A發出的第一個連線請求報文段並沒有丟失,而是在某些網路結點長時間滯留了,以致延誤到連線釋放以後的某個時間才到達B。本來這是一個早已失效的報文段。但B收到此失效的連線請求報文段後,就誤認為是A又發出一次新的連線請求。於是就向A發出確認報文段,同一建立連線。假定不採用報文握手,那麼只要B發出確認,新的連線就建立了。
由於現在A沒有發出建立連線的請求,因此不會理睬B的確認,也不會向B傳送資料。但B卻認為新的運輸連線已經建立了,並一致等待A傳送來資料。B的資源就這樣白白浪費了。
根據原文中可以得出:造成這種情況的本質就是B在沒有收到A對B剛剛傳送的報文段進行回應的情況下就建立了連線。
也就是說作者的假設是建立在不需要對第二次握手的報文段進行回應的情況上,這種情況就會導致B的資源白白浪費,所以需要第三次確認,也就是說本質上就是需要第三次握手,才不會導致錯誤情況。
那麼對於TCP 為什麼三次握手而不是兩次握手(正解版)文章中的解釋,其實和教科書上的解釋都是在解釋一個事情,我給你傳送了資訊,你不給我回應,我就不知道你是否收到資訊,那麼我就不應該繼續給你發訊息。
而TCP實現可靠的方式之一就是通過同步ack和seq來確保報文段的收發。
相關文章
- 白話TCP為什麼需要進行三次握手TCP
- TCP為什麼需要三次握手?用最通俗的話解釋給你聽TCP
- CCNA-Part5 - 傳輸層 ,TCP 為什麼是三次握手?TCP
- 【Java面試】TCP協議為什麼要設計三次握手?Java面試TCP協議
- 說說TCP為什麼需要三次握手和四次揮手?TCP
- TCP三次握手原理TCP
- 為什麼必須使用三次握手?
- TCP 的 三次握手 四次握手TCP
- 可靠的TCP連線為何是三次握手TCP
- TCP的三次握手過程TCP
- 自己理解的TCP三次握手TCP
- Wireshark除錯TCP三次握手流程除錯TCP
- TCP三次握手四次分手TCP
- tcp三次握手和SYN攻擊TCP
- 詳解TCP一:三次握手、四次揮手TCP
- TCP 三次握手四次揮手TCP
- TCP三次握手四次揮手TCP
- TCP三次握手&四次揮手TCP
- TCP三次握手、四次揮手概念圖詳解TCP
- 圖解TCP的三次握手和四次揮手圖解TCP
- TCP的三次握手與四次揮手詳解TCP
- TCP 、 UDP、三次握手、四次揮手TCPUDP
- TCP三次握手和四次揮手TCP
- TCP 三次握手 與 四次揮手TCP
- 面試最常問的tcp三次握手策略面試TCP
- TCP三次握手與四次揮手TCP
- 一起看看 Linux的TCP 三次握手LinuxTCP
- 小白都能看懂的tcp三次握手TCP
- TCP 的三次握手和四次揮手,瞭解泛洪攻擊麼TCP
- TCP 兩次握手為什麼無法阻止歷史連線?TCP
- TCP的三次握手與四次揮手TCP
- TCP三次握手四次揮手介紹TCP
- TCP三次握手及四次揮手理解TCP
- TCP三次握手和四次揮手理解TCP
- 三次握手的誤解與錯誤類比 (RFC 解讀)
- TCP 三次握手和四次揮手圖解(有限狀態機)TCP圖解
- 在Linux中,如何理解Tcp/ip協議三次握手?LinuxTCP協議
- tcp三次握手、四次揮手過程解析TCP