萬盛學電腦網

 萬盛學電腦網 >> 網絡應用技術 >> TCP連接建立的方法

TCP連接建立的方法

  為了建立一條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連接的建立,這裡給出作者繪制過程中使用的工具及源代碼,做到有圖有真相,大家可以進行任意修改。:-)

  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狀態

  從現在開始雙方可以傳輸數據了

  end note

  #+END_SRC

copyright © 萬盛學電腦網 all rights reserved