三次握手和四次揮手狀態圖
三次握手:
1、 請求端(通常稱為客戶)傳送乙個syn報文段指明客戶打算連線的伺服器的埠,以及初始序號isn,比如1000,這個syn報文段為報文段1.
2、 伺服器發回包含伺服器的初始序號的syn報文段(報文段2),還有確認序號設定為客戶端的序列號(isn+1),乙個syn占用乙個序號
3、 客戶必須將確認序號設定為伺服器的isn+1,加以對伺服器的報文段進行確認(報文段3)
四次揮手:
1、報文段4 發起終止連線,它由客戶端關閉連線發出,傳送乙個fin,用來關閉從客戶到伺服器的資料傳送。
2、伺服器收到乙個fin,它發回乙個ack,確認序號為收到的序號加1(報文段5)。
3、乙個fin占用乙個序號,同時tcp伺服器還向應用程式傳送乙個檔案結束符。接著這個伺服器程式就關閉它的連線,導致它的tcp傳送乙個fin。
4、客戶必須發回乙個確認,並將確認序號設定為收到的序號+1.
time_wait 狀態存在的原因:
1、可靠地終止tcp連線
原因1:如果用於確認報文段6的報文段7丟失,那麼伺服器端會重傳報文段,所以客戶端需要停留在某個狀態以處理重複收到的結束報文段。否則,客戶端將以復位報文段回應客戶端。
2、保證讓遲來的tcp報文段有足夠的時間被識別並丟棄
乙個tcp埠不能被同時開啟多次,我們無法立即使用該連線占用著的埠來建立乙個新連線,如果立即使用該鏈結來占用乙個新的連線,則會導致,新的連線會收到原來的報文段,這是不應該發生的
tcp報文段的最大生存時間是msl,所以堅持2msl的time_wait 狀態能夠確保網路上兩個傳輸方向上的未收到的,遲到的tcp報文段都已經消失(被中轉路由器丟棄)。
面試常問:
1、tcp三次握手哪一階段最容易受到攻擊,為什麼?
2、tcp三次握手哪一階段會丟擲異常?為什麼不能兩次握手,原因?
3、time_wait和close_wait 有什麼區別?
4、tcp 為什麼要三次握手,四次揮手,time_wait 狀態出現的時機和意義?
5、四次揮手,為什麼是客戶端先斷開,可不可以伺服器先斷開?
tcp 四次揮手 TCP的三次握手和四次揮手
三次握手 第一次握手 客戶端傳送syn包 syn x 到伺服器,並進入syn send狀態,等待伺服器確認 第二次握手 伺服器收到syn包,必須確認客戶的syn ack x 1 同時自己也傳送乙個syn包 syn y 即syn ack包,此時伺服器進入syn recv狀態 第三次握手 客戶端收到伺服...
TCP三次握手和四次揮手
一 tcp三次握手 three way handshake 1 tcp三次握手的作用 三次握手的目的是連線伺服器指定埠,建立tcp連線,並同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。在socket程式設計中,客戶端執行connect 時,將觸發三次握手。2 tcp三次握手過程 第一步 ...
TCP三次握手和四次揮手
三次握手 四次揮手 需四次揮手原因 由於tcp的半關閉特性,tcp連線時雙全工 即資料在兩個方向上能同時傳遞 因此,每個方向必須單獨的進行關閉。這個原則就是 當一方完成它的資料傳送任務後就能傳送乙個fin來終止這個方向上的連線。當一端收到乙個fin後,它必須通知應用層另一端已經終止了那個方向的資料傳...