TCP IP的三次握手和四次分手以及超時機制

2021-06-06 13:33:51 字數 2902 閱讀 5480

tcp/ip

的三次握手和四次分手以及超時機制

tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線:

位碼即tcp

標誌位,有6

種標示:syn(synchronous

建立聯機

)ack(acknowledgement

確認)psh(push

傳送)fin(finish

結束)rst(reset

重置)urg(urgent

緊急)sequencenumber(

順序號碼

)acknowledge number(

確認號碼)

第一次握手:主機

a傳送位碼為

syn=

1,隨機產生

seqnumber=1234567

的資料報到伺服器,主機b由

syn=1

知道,a

要求建立聯機;

第二次握手:主機

b收到請求後要確認聯機資訊,向a傳送

acknumber=(主機a

的seq+1),syn=1,ack=1,

隨機產生

seq=7654321

的包第三次握手:主機

a收到後檢查

acknumber

是否正確,即第一次傳送的

seqnumber+1,

以及位碼

ack是否為

1,若正確,主機

a會再傳送

acknumber=(主機b

的seq+1),ack=1

,主機b

收到後確認

seq值與

ack=1

則連線建立成功。

完成三次握手,主機

a與主機

b開始傳送資料。

在tcp/ip

協議中,

tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。

第一次握手:建立連線時,客戶端傳送

syn包

(syn=j)

到伺服器,並進入

syn_send

狀態,等待伺服器確認;

第二次握手:伺服器收到

syn包,必須確認客戶的

syn(

ack=j+1

),同時自己也傳送乙個

syn包(

syn=k

),即syn+ack

包,此時伺服器

進入syn_recv

狀態;第三次握手:客戶端收到伺服器的

syn+

ack包,向伺服器傳送確認包

ack(ack=k+1)

,此包傳送完畢,客戶端和伺服器進入

established

狀態,完成三次握手。

完成三次握手,客戶端與伺服器開始傳送資料.

採用四次分手斷開一條連線:

由於tcp

連線是全雙工的,因此每個方向都必須單獨進行關閉。這個原則是當一方完成它的資料傳送任務後就能傳送乙個

fin來終止這個方向的連線。收到乙個

fin只意味著這一方向上沒有資料流動,乙個

tcp連線在收到乙個

fin後仍能傳送資料。首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。(1

)客戶端

a傳送乙個

fin,用來關閉客戶

a到伺服器

b的資料傳送(報文段4)。

(2)伺服器

b收到這個

fin,它發回乙個

ack,確認序號為收到的序號加

1(報文段

5)。和

syn一樣,乙個

fin將占用乙個序號。(3

)伺服器

b關閉與客戶端

a的連線,傳送乙個

fin給客戶端

a(報文段6)。

(4)客戶端a發回

ack報文確認,並將確認序號設定為收到序號加

1(報文段7)。

1.為什麼建立連線協議是三次握手,而關閉連線卻是四次握手呢?

這是因為服務端的

listen

狀態下的

socket

當收到syn

報文的建連請求後,它可以把

ack和

syn(

ack起應答作用,而

syn起同步作用)放在乙個報文裡來傳送。但關閉連線時,當收到對方的

fin報文通知時,它僅僅表示對方沒有資料傳送給你了;但未必你所有的資料都全部傳送給對方了,所以你可以未必會馬上會關閉

socket,

也即你可能還需要傳送一些資料給對方之後,再傳送

fin報文給對方來表示你同意現在可以關閉連線了,所以它這裡的

ack報文和

fin報文多數情況下都是分開傳送的。

2.為什麼

time_wait

狀態還需要等

2msl

後才能返回到

closed

狀態?這是因為雖然雙方都同意關閉連線了,而且握手的

4個報文也都協調和傳送完畢,按理可以直接回到

closed

狀態(就好比從

syn_send

狀態到establish

狀態那樣);但是因為我們必須要假想網路是不可靠的,你無法保證你最後傳送的

ack報文會一定被對方收到,因此對方處於

last_ack

狀態下的

socket

可能會因為超時未收到

ack報文,而重發

fin報文,所以這個

time_wait

狀態的作用就是用來重發可能丟失的

ack報文。

TCP IP三次握手,四次分手

tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線 位碼即tcp標誌位,有6種標示 syn synchronous建立聯機 ack acknowledgement 確認 psh push傳送 fin finish結束 rst reset重置 urg urgent緊急...

TCP IP 三次握手四次分手

在tcp ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線,如圖1所示。1 第一次握手 建立連線時,客戶端a傳送syn包 syn j 到伺服器b,並進入syn send狀態,等待伺服器b確認。a向b請求連線 2 第二次握手 伺服器b收到syn包,必須確認客戶a的syn ack j ...

關於TCP IP三次握手和四次分手的理解

其實是事務發展的一種抽象,更形象的比喻為 主要是便於理解啊,網上是有神人的 三次握手流程 客戶端發個請求 開門吶,我要進來 給伺服器 伺服器發個 進來吧,我去給你開門 給客戶端 客戶端有很客氣的發個 謝謝,我要進來了 給伺服器 四次揮手流程 客戶端發個 時間不早了,我要走了 給伺服器,等伺服器起身送...