LWIP學習筆記5——TCP協議

1 TCP 協議

TCP 協議(TransmissionControl Protocol,傳輸控制協議) 它是最常用傳輸層協議,也是最穩定傳輸層協議,很多上層應用都是依賴於 TCP 協議進程傳輸數據,如SMTP、 FTP 等等。
一個完整的 TCP 傳輸必須有數據的交互,接收方在接收到數據之後必須正面進行確認,向發送方報告接收的結果,而發送方在發送數據之後必須等待接收方的確認,同時發送的時候會啓動一個定時器,在指定超時時間內沒收到確認,發送方就會認爲發送失敗,然後進行重發操作,這就是重傳報文。
TCP 提供可靠的運輸層, 但它依賴的是 IP 層的服務, IP 數據報的傳輸是無連接、 不可靠的,因此它要通過確認來知道接收方確實已經收到數據了。但數據和確認都有可能會丟失, 因此 TCP 通過在發送時設置一個超時機制(定時器) 來解決這種問題, 如果當超時時間到達的時候還沒有收到對方的確認,它就重傳該數據。
CP 協議是全雙工通信。

1.1 窗口的概念

TCP 提供了流量控制服務(flow-control service)以消除發送方使接收方緩衝區溢出的可能性。流量控制是一個速度匹配服務,即發送方的發送速率與接收方應用程序的讀取速率相匹配, TCP 通過讓發送方維護一個稱爲接收窗口(receive window)的變量來提供流量控制。
TCP 協議中使用滑動窗口的流量控制方法,它允許接收方根據自身的處理能力來確定能接收數據的多少,因此會告訴發送方可以發送多少數據過來,即窗口的大小,而發送方儘可能將數據都多發到對方那裏,所以發送方會根據這個窗口的大小發送對應的數據 。
在這裏插入圖片描述
在這裏插入圖片描述
關於窗口的概念必須強調三點:

  1. 發送方的發送窗口並不總是和 接收方接收窗口一樣大,因爲有一定的時間滯後。
  2. TCP 標準沒有規定對不按序到達的數據應如何處理, 通常是先臨時存放在接收窗
    口中,等到字節流中所缺少的字節收到後,再按序交付上層的應用進程。
  3. TCP 要求接收方必須有確認的功能,這樣可以減小傳輸開銷。

1.2 端口號的概念

TCP 協議的連接是包括上層應用間的連接,簡單來說, TCP 連接是兩個不同主機的應用連接,而傳輸層與上層協議是通過端口號進行識別的,如 IP 協議中以 IP 地址作爲識別一樣,端口號的取值範圍是 0~65535,這些端口標識着上層應用的不同線程,一個主機內可能只有一個 IP 地址,但是可能有多個端口號,每個端口號表示不同的應用線程。
在這裏插入圖片描述
在這裏插入圖片描述

1.3TCP 報文段結構

在這裏插入圖片描述
在這裏插入圖片描述

2 TCP 連接

2.1 “三次握手” 建立連接

在這裏插入圖片描述

2.2 “四次揮手” 終止連接

在這裏插入圖片描述

2.3 TCP 狀態

在這裏插入圖片描述
TCP 狀態轉移:
在這裏插入圖片描述
對圖 13-14 的補充說明(很重要,要牢牢記住):
 虛線:表示服務器的狀態轉移。
 實線:表示客戶端的狀態轉移。
 圖中所有“關閉”、“打開”都是應用程序主動處理。
 圖中所有的“超時”都是內核超時處理。

2.4 TCP 層的工作流程示意圖

在這裏插入圖片描述

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