TCP三次握手和四次揮手

2021-09-28 10:44:20 字數 1469 閱讀 5898

tcp是主機對主層的面向連線的傳輸控制協議,提供可靠的連線服務,採用三次握手確認乙個連線四次揮手則是斷開乙個連線

其中位碼即tcp標誌位,有六種表示:

syn(synchronous建立連線)

ack(acknowledgement 表示響應、確認)

psh(push表示有data資料傳輸)

fin(finish關閉連線)

rst(reset表示連線重置)

urg(urgent緊急指標字段值有效)

三次握手:

第一次握手:客戶端傳送syn包(syn=x)到伺服器,並進入syn_send狀態,等待伺服器確認;

第二次握手:伺服器收到syn包,必須確認客戶的syn(ack=x+1),同時自己也發乙個syn包(syn=y),即syn+ack包,此時伺服器進入syn_recv狀態;

第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=y+1),此包傳送完畢,客戶端和伺服器進入establish狀態,完成三次握手。

握手過程中傳送的包不包含資料,三次握手完畢後,客戶端與伺服器才正式開始傳送資料。理想狀態下,tcp連線一旦建立,在通訊雙方中任何一方主動關閉連線之前,tcp連線都將被一直保持下去。

確認號:其數值等於傳送方的傳送序號+1(即接收方期望接收的下乙個序號)。

四次揮手:

第一次揮手:主動關閉方傳送乙個fin,用來關閉主動方到被動關閉方的資料傳送,也就是主動關閉方告訴被動關閉方:我已經不會再給你發資料了(當然,在fin包之前傳送出去的資料,如果沒有收到對應的ack確認報文,主動關閉方依然會重發這些資料),但是,此時主動關閉方還可以接受資料。

第二次揮手:被動關閉方收到fin包後,傳送乙個ack給對方,確認序號為收到序號+1(與syn相同,乙個fin占用乙個序號)。

第三次揮手:被動關閉方傳送乙個fin,用來關閉被動關閉方到主動關閉方的資料傳送,也就是告訴主動關閉方,我的資料也傳送完了,不會再給你發資料了。

第四次揮手:主動關閉方收到fin後,傳送乙個ack給被動關閉方,確認序號為收到序號+1,至此,完成四次揮手。

tcp是什麼?

transmission control protocol 傳輸控制協議,是一種面向連線的、可靠的、基於位元組流的傳輸層協議,

通俗的來講,tcp就是乙個雙方通訊的乙個規範標準。

為什麼要進行tcp三次握手?

第一,為了確認雙方的接受與傳送能力是否正常,

第二,指定自己的初始化序列號,為後面的可靠傳輸做準備,

第三,如果是http協議的話,三次握手這個過程,還會進行數字證書的驗證及加密金鑰的生成。

tcp的出現正是彌補了udp不可靠傳輸的缺點,但是tcp的誕生,也必然增加了連線的複雜性。

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