為什麼要三次握,要四次分手

2021-07-29 03:54:49 字數 1069 閱讀 8347

既然總結了tcp的三次握手,那為什麼非要三次呢?怎麼覺得兩次就可以完成了。那tcp為什麼非要進行三次連線呢?在謝希仁的《計算機網路》中是這樣說的:

為了防止已失效的連線請求報文段突然又傳送到了服務端,因而產生錯誤。

在書中同時舉了乙個例子,如下:

「已失效的連線請求報文段」的產生在這樣一種情況下:client發出的第乙個連線請求報文段並沒有丟失,而是在某個網路結點長時間的滯留了,以致延誤到連線釋放以後的某個時間才到達server。本來這是乙個早已失效的報文段。但server收到此失效的連線請求報文段後,就誤認為是client再次發出的乙個新的連線請求。於是就向client發出確認報文段,同意建立連線。假設不採用「三次握手」,那麼只要server發出確認,新的連線就建立了。由於現在client並沒有發出建立連線的請求,因此不會理睬server的確認,也不會向server傳送資料。但server卻以為新的運輸連線已經建立,並一直等待client發來資料。這樣,server的很多資源就白白浪費掉了。採用「三次握手」的辦法可以防止上述現象發生。例如剛才那種情況,client不會向server的確認發出確認。server由於收不到確認,就知道client並沒有要求建立連線。」

這就很明白了,防止了伺服器端的一直等待而浪費資源。

那四次分手又是為何呢?tcp協議是一種面向連線的、可靠的、基於位元組流的運輸層通訊協議。tcp是全雙工模式,這就意味著,當主機1發出fin報文段時,只是表示主機1已經沒有資料要傳送了,主機1告訴主機2,它的資料已經全部傳送完畢了;但是,這個時候主機1還是可以接受來自主機2的資料;當主機2返回ack報文段時,表示它已經知道主機1沒有資料傳送了,但是主機2還是可以傳送資料到主機1的;當主機2也傳送了fin報文段時,這個時候就表示主機2也沒有資料要傳送了,就會告訴主機1,我也沒有資料要傳送了,之後彼此就會愉快的中斷這次tcp連線。如果要正確的理解四次分手的原理,就需要了解四次分手過程中的狀態變化。

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

三次握手 換個易於理解的視角來看為什麼要3次握手。客戶端和服務端通訊前要進行連線,3次握手 的作用就是雙方都能明確自己和對方的收 發能力是正常的。經歷了上面的三次握手過程,客戶端和服務端都確認了自己的接收 傳送能力是正常的。之後就可以正常通訊了。每次都是接收到資料報的一方可以得到一些結論,傳送的一方...

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

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

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

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