TCP連線結束需要四次握手的一種理解

2021-08-26 23:35:43 字數 847 閱讀 1205

簡單理解就是,tcp連線是雙向的,乙個連線的關閉可以理解為兩個單向連線的關閉。

那麼乙個a到b的單向連線的關閉需要幾次來回呢?

典型做法是三次。

1.a發fin到b(告知b自己話說完了)

2.b回ack到a(告知a自己收到了)

3.a發ack到b(告知b收到2了)

另乙個辦法是用超時代替第三次通訊:通過前兩步,已經說明ab間雙向通暢,第二步b傳送資訊後,b等待一段時間,若未收到a的資訊,就認為a收到了(沒有絕對的可靠,只是通過1認為a->b的通路是ok的),這裡就需要和a約定好,如果a在1msl後沒有收到,則告知b沒收到,這樣b等待2msl就夠了。

進一步的,關閉乙個雙向連線需要幾次呢?

我們看一下圖,step1/2容易理解,完成a->b的單向傳輸關閉,step3是試圖關閉b->a的單向傳輸,step4是a確認收到並等待一段時間避免b未收到。這裡的判斷機制是,b完成step3後,一段時間內未收到step4中a的反饋,則會重發step3

實質是關閉兩個單向連線,每次關閉需要三次,但是第三次可以用超時來做。此外,

step1.a->b: a request close trans(a->b)

step2.b->a: b acknowledge a's request and comfirm close trans(a->b)

step3.b->a: b request close trans(b->a)

step3.a->b: a acknowledge b's request and confirm close trans(b->a)

TCP四次握手連線釋放

tcp連線釋放 四次握手正常釋放鏈結如圖 第一次握手 a方傳送連線釋放請求dr給b,在發出dr的同時它也啟動乙個定時器 第二次握手 當這個dr到達b的時候,b會回發乙個確認ack,這個ack到達a後a的連線就釋放了 第三次握手 與此同時收到dr的那一方b,它也會發出乙個連線釋放的請求dr並同樣啟動定...

TCP連線釋放 四次握手

1 資料傳輸結束後,通訊的雙方都可釋放連線。現在 a 的應用程序先向其 tcp 發出連線釋放報文段,並停止再傳送資料,主動關閉 tcp 連線。a 把連線釋放報文段首部的 fin 1 其序號seq u,等待 b 的確認。2 b 發出確認,確認號 ack u 1 而這個報文段自己的序號 seq v tc...

TCP四次握手斷開連線

建立連線非常重要,它是資料正確傳輸的前提 斷開連線同樣重要,它讓計算機釋放不再使用的資源。如果連線不能正常斷開,不僅會造成資料傳輸錯誤,還會導致套接字不能關閉,持續占用資源,如果併發量高,伺服器壓力堪憂。建立連線需要三次握手,斷開連線需要四次握手,可以形象的比喻為下面的對話 下圖演示了客戶端主動斷開...