TCP三次握手過程分析

2021-07-29 21:14:14 字數 3768 閱讀 1119

傳輸控制協議 (tcp) 旨在用作分組交換計算機通訊網路中,以及這些網路的互連系統中的主機之間的高度可靠的主機到主機協議。

最簡單的三次握手如下所示:

tcp a                                                tcp b

0. closed listen

1. syn-sent -->

--> syn-received

2. established

syn-received

3.established

-->

--> established

4. established -->

--> established

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

例項:

no.  time       source         destination    info

10.000000

192.192

.4.29

192.192

.4.28

58079→6633 [syn] seq=0 win=5840

len=0 mss=1460 sack_perm=1 ws=64

20.000219

192.192

.4.28

192.192

.4.29

6633→58079 [syn, ack] seq=0 ack=1 win=28960

len=0 mss=1460 sack_perm=1 ws=128

30.001705

192.192

.4.29

192.192

.4.28

58079→6633 [ack] seq=1 ack=1 win=5888

len=0

注:其中 syn, ack 為 wireshark 解析的相對值。

第一次握手:192.192.4.29 傳送標誌位 syn 為 1,隨機產生的 seq=0(相對值 1) 的資料報到 192.192.4.28,192.192.4.28 由標誌位 syn=1 知道 192.192.4.29 要求建立連線。標誌位詳情:

flags: 0x002 (syn)

000.

....

....

= reserved: not

set...

0...

....

.= nonce: not

set....0.

.....

.= congestion window reduced (cwr): not

set.....0

.....

.= ecn-echo: not

set......

0....

.= urgent: not

set...

....

0...

.= acknowledgment: not

set...

.....0.

..= push: not

set...

......0

..= reset: not

set...

.......

1.= syn: set

....

....

...0

= fin: not

set

標誌位裡面只同步位置位,也就是在做請求(syn)。

第二次握手:192.192.4.28 收到請求後要確認連線資訊,向 192.192.4.29 傳送 ack 號 =1(相對值 1), 標誌位 syn=1, 標誌位 ack=1 隨機產生的 seq=0(相對值 2) 的包。標誌位詳情:

flags: 0x012 (syn, ack)

000.

....

....

= reserved: not

set...

0...

....

.= nonce: not

set....0.

.....

.= congestion window reduced (cwr): not

set.....0

.....

.= ecn-echo: not

set......

0....

.= urgent: not

set...

....

1...

.= acknowledgment: set

....

....

0...

= push: not

set...

......0

..= reset: not

set...

.......

1.= syn: set

....

....

...0

= fin: not

set

標誌位裡面有確認位和同步位置位,也就是在做應答(syn + ack)。

第三次握手:192.192.4.29 收到應答後檢查 ack number 是否正確,以及標誌位 ack 是否為 1,若正確,192.192.4.29 會再傳送 ack 號 =1(相對值 2), 標誌位 ack=1,192.192.4.28 收到後檢查 ack number 是否正確,標誌位 ack=1 則連線建立成功。標誌位詳情:

flags: 0x010 (ack)

000.

....

....

= reserved: not

set...

0...

....

.= nonce: not

set....0.

.....

.= congestion window reduced (cwr): not

set.....0

.....

.= ecn-echo: not

set......

0....

.= urgent: not

set...

....

1...

.= acknowledgment: set

....

....

0...

= push: not

set...

......0

..= reset: not

set...

.......

0.= syn: not

set...

....

....

0= fin: not

set

標誌位裡面只有確認位置位,也就是在做再次確認(ack)。

乙個完整的三次握手過程就是請求–>應答–>再次確認

連線過程狀態圖:

《tcp/ip 詳解 卷1:協議》

TCP協議三次握手過程分析

tcp transmission control protocol 傳輸控制協議 tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線 位碼即tcp標誌位,有6種標示 syn synchronous建立聯機 ack acknowledgement 確認 psh pus...

TCP協議三次握手過程分析

原文出自 tcp transmission control protocol 傳輸控制協議 tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線 位碼即tcp標誌位,有6種標示 syn synchronous建立聯機 ack acknowledgement 確認 ps...

TCP協議三次握手過程分析

tcp transmission control protocol 傳輸控制協議 tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線 位碼即tcp標誌位,有6種標示 syn synchronous建立聯機 ack acknowledgement 確認 psh pus...