為什麼要「三次握手,四次揮手」

2022-09-14 20:03:11 字數 896 閱讀 7745

三次握手

換個易於理解的視角來看為什麼要3次握手。

客戶端和服務端通訊前要進行連線,「3次握手」的作用就是雙方都能明確自己和對方的收、發能力是正常的。

經歷了上面的三次握手過程,客戶端和服務端都確認了自己的接收、傳送能力是正常的。之後就可以正常通訊了。

每次都是接收到資料報的一方可以得到一些結論,傳送的一方其實沒有任何頭緒。我雖然有發包的動作,但是我怎麼知道我有沒有發出去,而對方有沒有接收到呢?

而從上面的過程可以看到,最少是需要三次握手過程的。兩次達不到讓雙方都得出自己、對方的接收、傳送能力都正常的結論。其實每次收到網路包的一方至少是可以得到:對方的傳送、我方的接收是正常的。而每一步都是有關聯的,下一次的「響應」是由於第一次的「請求」觸發,因此每次握手其實是可以得到額外的結論的。比如第三次握手時,服務端收到資料報,表明看服務端只能得到客戶端的傳送能力、服務端的接收能力是正常的,但是結合第二次,說明服務端在第二次傳送的響應包,客戶端接收到了,並且作出了響應,從而得到額外的結論:客戶端的接收、服務端的傳送是正常的。

用**總結一下:

四次揮手

tcp連線是雙向傳輸的對等的模式,就是說雙方都可以同時向對方傳送或接收資料。當有一方要關閉連線時,會傳送指令告知對方,我要關閉連線了。這時對方會回乙個ack,此時乙個方向的連線關閉。但是另乙個方向仍然可以繼續傳輸資料,等到傳送完了所有的資料後,會傳送乙個fin段來關閉此方向上的連線。接收方傳送ack確認關閉連線。注意,接收到fin報文的一方只能回覆乙個ack, 它是無法馬上返回對方乙個fin報文段的,因為結束資料傳輸的「指令」是上層應用層給出的,我只是乙個「搬運工」,我無法了解「上層的意志」。

Tcp為什麼要三次握手四次揮手

client 黃河,server 長江 三次握手 第一次 長江長江,我是黃河,聽到請回答?第二次 黃河黃河,我是長江,我聽到你了,你能聽到我嗎?第三次 長江長江,俺是黃河,我也能聽到你,我要開始吐了。其實第二次時黃河已經知道雙方能互通,但是長江還不知道自己的聲音黃河能否收到,所以需要有第三次黃河向長...

tcp為什麼要三次握手,四次揮手

tcp為什麼是三次握手,為什麼是四次揮手 1 三次握手的原因 因為通道是不可靠的,可能存在延時或者丟包,而三次是滿足可靠傳輸的最小次數。如果只有兩次,假設主機a傳送的第乙個請求包延時,主機a在等待一段時間後又重新傳送乙個請求包,完成資料連線並斷開。但是這時上次傳送的請求包才到達主機b,這時主機b認為...

三次握手 四次揮手

1.tcp連線的建立 1 首先是伺服器初始化的過程,從 closed 關閉 狀態開始通過順序呼叫 socket bind listen 和accept 原語建立 socket 套接字,進入 listen 監聽 狀態,等待客戶端的 tcp傳輸連線請求。2 客戶端最開始也是從 closed 狀態開始呼叫...