TCP三次握手和四次揮手

2021-09-11 01:40:42 字數 1877 閱讀 8816

計算機網路osi模型中網路協議有7層,每一層都有不同的至關重要的作用,7層從上到下分別是 7 應用層 6 表示層 5 會話層 4 傳輸層 3 網路層 2 資料鏈路層 1 物理層。

tcp(transmission control protocol 傳輸控制協議)是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議。在計算機網路osi模型中,它和udp一樣屬於第四層傳輸層。tcp是可靠傳輸的,它可以保證傳送資料的完整性,無差錯,不抵事,不重複,切按順序到達。

以下是tcp傳輸中的名詞的意思:

syn:代表請求建立連線

ack:代表確認接受

seq:序列號,佔32位,用來標識從tcp源端向目的端傳送的位元組流,發起方傳送資料時對此進行標記。

fin:表示請求關閉連線

三次握手

第一次握手:client傳送syn=1,隨機產生seq number=1234的資料報到server。

第二次握手:server接收到syn=1,知道client要和它建立聯機,向client傳送 syn=1,ack=1,seq=4321,ack number(1235)的包。

第三次握手:client收到後確認訊息正確,給server傳送ack=1,seq=1235,ack=4322的包。

完成三次握手,主機a與主機b開始傳送資料。

四次揮手

第一次揮手:client傳送乙個fin,用來關閉client到server的資料傳送,client進入fin_wait_1狀態。

第二次揮手:server收到fin後,傳送乙個ack給client,確認序號為收到序號+1(與syn相同,乙個fin占用乙個序號),server進入close_wait狀態。

第三次揮手:server傳送乙個fin,用來關閉server到client的資料傳送,server進入last_ack狀態。

第四次揮手:client收到fin後,client進入time_wait狀態,接著傳送乙個ack給server,確認序號為收到序號+1,server進入closed狀態,完成四次揮手。

為什麼需要三次握手?

如果傳送兩次就可以建立連線話,那麼只要客戶端傳送乙個連線請求,服務端接收到並傳送了確認,就會建立乙個連線。

可能出現的問題:如果乙個連線請求在網路中跑的慢,超時了,這時客戶端會從發請求,但是這個跑的慢的請求最後還是跑到了,然後服務端就接收了兩個連線請求,然後全部回應就會建立兩個連線,浪費資源!

如果加了第三次客戶端確認,客戶端在接受到乙個服務端連線確認請求後,後面再接收到的連線確認請求就可以拋棄不管

為什麼需要四次揮手?

tcp是雙向的,所以需要在兩個方向分別關閉,每個方向的關閉又需要請求和確認,所以一共就4次。

如果已經建立連線,客戶端掛掉了怎麼辦?

tcp有乙個保活計時器,顯然,客戶端如果出現故障,伺服器不能一直等下去,白白浪費資源。伺服器每收到一次客戶端的請求後都會重新復位這個計時器,時間通常是設定為2小時,若兩小時還沒有收到客戶端的任何資料,伺服器就會傳送乙個探測報文段,以後每隔75秒傳送一次。若一連傳送10個探測報文仍然沒反應,伺服器就認為客戶端出了故障,接著就關閉連線。 

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後,它必須通知應用層另一端已經終止了那個方向的資料傳...