1. 程式人生 > >趣談網路協議(七)TCP協議(上)

趣談網路協議(七)TCP協議(上)

TCP包頭格式

在這裡插入圖片描述
(1)目標埠號和源埠號。如果沒有這兩個埠號,資料就不知道該發給哪個應用

(2)序號。為了解決亂序的問題

(3)確認序號。解決不丟包的問題

(4)掌握TCP協議,重點關注以下幾個問題

  • 順序問題,穩重不亂
  • 丟包問題,承諾靠譜
  • 連線維護,有始有終
  • 流量控制,把握分寸
  • 擁塞控制,知進知退

TCP的三次握手

(1)三次握手過程

  • A:您好,我是A
  • B: 您好A,我是B
  • A:您好B

(2)三次握手除了雙方建立連線外,主要還是為了溝通一件事情,就是TCP包的序號問題。每個連線都要有不同的序號。

(3)雙方建立了信任,建立了連線。為了維護這個連線,雙方都要維護一個狀態機,在連線建立的過程中,雙方的狀態時序圖就像這樣。
在這裡插入圖片描述
(4)一開始,客戶端和伺服器端都處於CLOSED狀態。先是伺服器主動監聽某個埠,處於LISTEN狀態。然後客戶端主動發起連線SYN,之後處於SVN-SENT狀態。伺服器收到發起的連線,返回SYN,並且ACK客戶端SYN,之後處於SVN-RCVD狀態。客戶端收到伺服器傳送的SYN和ACK之後,傳送ACK的ACK,之後處於ESTABLISHED狀態,因為它一發一收成功了。伺服器收到ACK的ACK之後,處於ESTABLISHED狀態,因為它也一發一收了。


TCP四次揮手

(1)斷開連線的時序圖
在這裡插入圖片描述


TCP狀態機

(1)將連線建立和連線斷開的兩個時序狀態圖綜合起來,就是這個著名的TCP的狀態機。
在這裡插入圖片描述

(2)在這個圖中,加黑加粗的部分,是上面說到的主要流程,其中阿拉伯數字的序號,是連線過程中的序號,是連線過程中的順序,而大寫中文數字的序號,是連線斷開過程中的順序。加粗的實現是客戶端A的狀態變遷,加粗的虛線是伺服器B的狀態變遷