【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?

【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


喬哥:你說“喂喂喂,能聽到我說話嗎?”,是第一次握手,也就是說小萌你的發送消息的能力沒有問題,然後我回了你一句“小萌,我可以聽到你說話,你能聽到我說話嗎?”這是第二次握手,我回了你一句,說明了我可以聽到你說話(說明了我具有接受消息的能力),我對你說了“你能聽到我說話嗎”也說明了我這裡也有可以發送消息的能力。到第二次握手結束,說明了我具有發送消息和接受消息的能力,小萌你具有發送消息的能力。然後你說“喬哥,我聽到你說話了”,這是第三次握手,你聽到我說話,也就是說明小萌你的接受消息的能力沒有問題。這樣就可以進行通話了(建立了TCP連接)

【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?



小萌:“喂,喬哥聽得到嗎?”

喬哥:“喬哥聽得到呀,小萌你聽得到喬哥嗎?”

小萌:“小萌能聽到喬哥,喬哥能聽到小萌嗎?”


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


小萌:1.兩次握手,這個我想是因為服務器收到了客戶端的消息,服務器知道了客戶端是可以發送消息的,但由於沒有第三次握手,所以服務器不知道客戶端是否具有接受消息的能力;2.客戶端從服務器接受到了消息,客戶端知道了服務器接受到了我的消息才回復,說明服務器的接受消息能力和發送消息的能力沒問題(服務器發送出了消息);3.綜上所述,客戶端確保了服務器的接受發送沒問題,但是服務器僅僅只知道客戶端的發送消息沒問題,這並不是可靠的,所以兩次握手不可以。

【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


喬戈裡:這裡舉個例子,假設客戶端和服務器進行TCP連接,然後第一次發送的TCP連接請求發生了阻塞。


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


於是由於客戶端沒有收到服務器的應答報文,客戶端認為這個TCP連接請求丟失了,於是重新發送了TCP連接請求。這次沒有阻塞,成功連接了,因為是討論的兩次握手,所以只進行兩次連接就可以進行通信了。


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


通信結束,然後就斷開了連接。


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


這時候最開始的阻塞的連接請求A客戶端以為丟失了,但是沒有丟失,只是阻塞了而已,阻塞一段時間網絡又暢通了,於是TCP連接請求A成功到達了服務器,服務器又以為是客戶端又要進行數據傳輸,於是服務器就又對這個連接請求進行應答,兩次握手,於是又成功建立了TCP連接。


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


但是由於客戶端它以為這個連接請求已經丟失了,所以不會利用這個建立的連接請求進行數據通信,雖然服務器分配給了資源給客戶端,但是客戶端並不進行數據傳輸,這樣就白白浪費了服務器的資源,試想一下如果網絡很擁堵,那麼等網絡變暢通以後,服務器豈不是浪費了一堆資源,可能對於正常的連接請求都無法處理了!


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


服務器過了很長時間(規定好的時間和客戶端)都沒有收到回覆,於是也不會為客戶端分配資源,這次連接就放棄了。


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


【漫畫】TCP連接為什麼是三次握手,而不是兩次或者四次握手?


分享到:


相關文章: