通信協議-TCP

一、TCP

TCP:傳輸控制協議(Transmission Control Protocol)

SYN:同步序列編號(Synchronize Sequence Numbers)

ACK : 確認字符(Acknowledge character)

FIN : 結束(Finish)

sequenceDiagram
Title: tcp三次握手四次揮手
alt 三次握手
客戶端-->>服務端: 1. SYN=J
服務端-->>客戶端: 2. SYN=K, ACK=J+1
客戶端-->>服務端: 3. ACK=K+1
end
Note over 客戶端,服務端: 數據傳輸
alt 四次揮手
客戶端->>服務端: 1. FIN M
服務端->>客戶端: 2. ACK=M+1
服務端->>客戶端: 3. FIN=N
客戶端->>服務端: 4. FIN=N+1
end

在這裏插入圖片描述

TCP連接過程:
  1. 服務端通過socket,bind和listen準備好接受外來的連接,此時服務端狀態爲Listen
  2. 客戶端通過調用connect來發起主動連接,導致客戶端TCP發送一個SYN(同步)字節,告訴服務器客戶將在(待建立的)連接中發送的數據的初始序列號,客戶端狀態爲SYN_SENT。
  3. 服務器確認(ACK)客戶的SYN,並自己也發送一個SYN,它包含服務器將在同一連接中發送數據的初始序列號。
  4. 客戶端確認服務的ACK和SYN,向服務器發送ACK,客戶端狀態ESTABLISHED
  5. 服務器接收ACK,服務器狀態ESABLISHED。
TCP連接中止過程:
  1. 某端首先調用close,成爲主動關閉端,向另一端發送FIN分節,表示數據發送完畢,此時主動關閉端狀態FIN_WAIT_1;

  2. 接收到FIN的是被動關閉端,FIN由TCP確認,先向主動關閉端發送ACK,作爲一個文件結束符傳遞給接收端應用進程(放在已排隊等候該應用進程接收到的任何其他數據之後),因爲FIN的接收意味着接收端應用進程在相應連接無額外數據可接收,接收端狀態CLOSE_WAIT;主動關閉端接收到ACK狀態變爲FIN_WAIT_2;

  3. 一段時間後,接收端接收到這個文件結束符的應用進程調用close關閉套接字,向主動關閉端發送FIN,接收端狀態爲LAST_ACK;

  4. 主動關閉端確認FIN,狀態變爲TIME_WAIT,並向接收端發送ACK,接收端接收到ACK關閉TCP,而主動關閉端一段時間後也關閉TCP;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章