TCP連線建立(三次握手)

2021-09-20 19:19:26 字數 2831 閱讀 2343

為了建立一條tcp連線,計算機需要為我們做如下的工作:

1. 請求端(通常稱為客戶)傳送乙個syn段指明客戶打算連線的伺服器端口,以及初始序號(isn)。這個syn段為下面的uml中的報文段1。

2. 伺服器發回包含伺服器的初始序號的syn報文段(下面uml圖中的報文段2)作為應答。同時,將確認序號設定為客戶的isn加1對客戶的syn報文段進行確認。

3. 客戶必須將確認序號設定為伺服器的isn加1對伺服器的syn報文段進行確認(下面uml圖中的報文段3).

這三個報文段完成連線的建立。這個過程我們稱之為三次握手(three-way handshake)。

傳送第乙個syn的一端將執行主動開啟(active open)。接收這個syn並發回下乙個syn的另一端執行被動開啟(passive open)。

下面使用plantuml語言進行流程圖的繪製,以幫助大家更好的理解tcp連線的建立,這裡給出作者繪製過程中使用的工具及源**,做到有圖有真相,大家可以進行任意修改。:-)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

#+begin_src plantuml :file images/tcp_connect.png

title tcp連線建立

autonumber

participant client

participant server

note over client , server

client與server初始狀態都處於closed

end note

client ->  server : syn(seq=x)

activate client

note left: 3次握手的第1步,\n此後client處於syn_sent狀態

client

activate server

note right: 3次握手的第2步,\n此後server處於syn_rcvd狀態

client ->  server : (seq=x+1,ack=y+1)

deactivate client

deactivate server

note left of client: 3次握手的第3步,\nclient確認server的syn,\n並處於established狀態

note right of server: server的syn被client確認後,\nserver也進入established狀態

note over client , server

3次握手結束,client與server都進入established狀態

從現在開始雙方可以傳輸資料了

tcp 三次握手

3次握手

三次握手 TCP建立連線

在tcp ip 中,tcp協議提供可靠的連線服務 採用三次握手建立乙個連線。第一次握手 建立連線時,客戶端 傳送syn 包 syn j 到伺服器 並進入syn send狀態,等待伺服器確認 syn 同步序列編號 synchronize sequence numbers 第二次握手 伺服器 收到syn...

建立TCP連線的三次握手

伺服器發回包含伺服器的初始順序號 isn 的 syn 報文段 syn 為 1 作為應答。同時,將確認號設定為客戶的 isn 加 1 以對客戶的 syn 報文段進行確認 ack 也為 1 客戶必須將確認號設定為伺服器的 isn 加 1 以對伺服器的 syn 報文段進行確認 ack 為 1 該報文通知目...

TCP建立連線時的三次握手

tcp建立連線時的三次握手 在網際網路協議族 internet protocol suite 中,tcp層是位於ip層之上,應用層之下的運輸層。不同主機的應用層之間經常需要可靠的 像管道一樣的連線,但是ip層不提供這樣的流機制,而是提供不可靠的包交換。應用層向tcp層傳送用於網間傳輸的 用8位位元組...