為了建立一條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位位元組...