TCP為什么不是兩次握手而是三次?


為什么不采用兩次握手?
如果是兩次握手的情景:
客戶端在發送一個連接建立請求之后進入等待狀態,等到服務端確認之后就進入established狀態。服務端在發送一個確認連接建立請求報文之后(不管客戶端是否有回應)也進入established狀態。
這就好比,
A給B打電話,
A:你聽得到我說話嗎?
B:我聽得到啊
A和B就都以為對方都能聽得到自己了。
但有一種情況是,B的麥是壞的,A根本就聽不到B說話,結果A沒收到B的回應,但B卻以為A能聽得到他,B就一直等着A說點什么...這樣讓B身心俱疲。

三次握手:
客戶端在發送一個連接建立請求報文之后進入等待狀態,等到服務端返回確認建立連接的通知;
服務端發送確認建立連接請求報文,同時向客戶端發送連接建立請求報文,進入等待狀態。

客戶端接受到服務端發送的確認請求報文。進入established狀態。客戶端接受到來自服務端的連接建立請求報文,發送確認連接建立請求報文。

服務端接受到來自客戶端的確認建立連接報文,進入established。

如果是三次握手,則會是這樣:
A:你能聽得到我說話嗎?
B:我聽得到啊,你能不能聽得到我說話?
A:我也聽得到你啊。( established)
B:(established)

這樣子A和B都能明確知道對方都能聽到自己說話了。
這樣A和B就能安心煲電話粥了。從此過上幸福的快樂的生活。

 

三次握手是因為,作為連接的一方,都要讓對方明白自己知道對方的意見。

第一次握手,a主動請求建立,b收到。

第二次握手,a收到來自b的應答,此刻a知道了b同意了。

第三次握手,b收到來自a的應答,此刻b知道了a知道它發送給a的請求。

至此,連接雙方a、b都知道了對方知道自己的話被知道了,連接可以建立了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM