文章目錄
- 一、前言
- 二、運輸層的功能
- 1. 端到端通信
- 2. 復用與分用
- 3. 差錯檢測
- 4. 流量控制
- 5. 擁塞控制
- 三、運輸層協議:TCP 和 UDP
- 1. TCP:面向連接的可靠傳輸協議
- 2. UDP:無連接的傳輸協議
- 四、端口號與進程通信
- 1. 端口號分類
- 2. 端口通信模型
- 五、流量控制與擁塞控制
- 1. 流量控制
- 2. 擁塞控制
- 六、總結
一、前言
計算機網絡運輸層(Transport Layer)位于網絡層之上、應用層之下,在整個網絡協議棧中起著承上啟下的作用。它為應用進程提供端到端的數據傳輸服務,并確保數據能夠可靠或高效地傳送到目標主機。
二、運輸層的功能
1. 端到端通信
- 網絡層負責主機之間的數據傳輸,但無法區分主機上的具體應用進程。
- 運輸層通過端口號標識不同的進程,實現主機到主機之間的端到端通信。
2. 復用與分用
- 復用:多個應用程序可以同時使用運輸層協議進行數據傳輸。
- 分用:接收方將運輸層數據解析并分發到對應的應用程序。
3. 差錯檢測
- 運輸層對數據進行校驗,保證數據在傳輸過程中沒有損壞。
- 校驗和用于檢測數據在傳輸過程中是否出錯。
4. 流量控制
- 防止發送方發送過多的數據,超過接收方的處理能力。
- 避免數據溢出或丟失。
5. 擁塞控制
- 防止網絡擁塞,確保網絡資源被合理利用。
- 通過調整發送速率來適應當前網絡狀態。
三、運輸層協議:TCP 和 UDP
運輸層的兩大核心協議分別是:
- TCP(Transmission Control Protocol):傳輸控制協議
- UDP(User Datagram Protocol):用戶數據報協議
1. TCP:面向連接的可靠傳輸協議
TCP 提供可靠的數據傳輸服務,具有以下特性:
- 面向連接:在數據傳輸前需要先建立連接(3次握手),數據傳輸結束后釋放連接(4次揮手)。
- 可靠傳輸:數據包按序到達、無差錯、不丟失、不重復。
- 流量控制:通過滑動窗口機制控制發送方的數據發送速率。
- 擁塞控制:通過慢啟動、擁塞避免、快重傳等算法控制數據流量,防止網絡擁塞。
? TCP 報文格式
0 4 8 16 24 32--------------------------------------------------------| 源端口號 | 目的端口號 | 序號(32位) |--------------------------------------------------------| 確認號(32位) |--------------------------------------------------------| 數據偏移(4位) | 保留(6位) | 標志位(6位) | 窗口大小 |--------------------------------------------------------| 校驗和 | 緊急指針 |--------------------------------------------------------| 可選字段(0-320位) |--------------------------------------------------------| 數據部分 |--------------------------------------------------------
- 源端口號和目的端口號:標識通信雙方進程。
- 序號和確認號:保證數據的可靠性和有序性。
- 標志位:
ACK
:確認標志。SYN
:同步標志,用于建立連接。FIN
:終止標志,用于斷開連接。
- 窗口大小:用于流量控制。
- 校驗和:檢測數據傳輸是否出錯。
? TCP 連接過程
- 三次握手(建立連接)
- 客戶端發送
SYN
報文。 - 服務端返回
SYN + ACK
報文。 - 客戶端返回
ACK
報文,連接建立。
- 客戶端發送
- 四次揮手(釋放連接)
- 客戶端發送
FIN
請求斷開連接。 - 服務端返回
ACK
確認。 - 服務端發送
FIN
請求斷開。 - 客戶端返回
ACK
,連接斷開。
- 客戶端發送
2. UDP:無連接的傳輸協議
UDP 提供無連接的數據傳輸服務,具有以下特性:
- 無連接:無需建立連接即可傳輸數據。
- 不可靠傳輸:不保證數據有序、不丟失。
- 速度快:開銷小,適合對實時性要求高的應用(如視頻會議、語音通話)。
? UDP 報文格式
0 4 8 16 24 32--------------------------------------------------------| 源端口號 | 目的端口號 | 數據長度 | 校驗和 |--------------------------------------------------------| 數據部分(可變長) |--------------------------------------------------------
- 源端口號和目的端口號:標識通信進程。
- 數據長度:數據部分的長度。
- 校驗和:檢測數據是否損壞。
- 數據部分:實際傳輸的數據。
? UDP 應用場景
- 實時音視頻:如 VoIP、視頻通話。
- 在線游戲:數據傳輸需要速度,不需要可靠性。
- 廣播和多播:如 DHCP 協議。
四、端口號與進程通信
1. 端口號分類
- 0~1023:系統端口(知名端口)
- 80:HTTP
- 443:HTTPS
- 22:SSH
- 1024~49151:注冊端口
- 分配給用戶程序或進程。
- 49152~65535:動態或私有端口
- 臨時端口號,供客戶機程序使用。
2. 端口通信模型
- 服務器監聽指定端口,等待客戶端連接。
- 客戶端通過指定端口向服務器發送數據。
- 服務器和客戶端進行數據交互。
五、流量控制與擁塞控制
1. 流量控制
- 滑動窗口機制
- 發送方和接收方維護窗口。
- 窗口大小決定發送方可發送的數據量。
- 通過調整窗口大小實現流量控制。
? 示例
- 發送方窗口大小為 4。
- 每次發送 4 個數據包。
- 接收方確認收到數據后,滑動窗口前移。
2. 擁塞控制
- 慢啟動:初始發送速率較低,逐步增加。
- 擁塞避免:防止發送速率增長過快。
- 快重傳:在接收方連續接收到 3 個重復的 ACK 時,立即重傳數據。
- 快恢復:在擁塞時減少窗口大小,不重置。
六、總結
運輸層在計算機網絡中負責主機之間的數據傳輸。它通過 TCP 和 UDP 提供可靠或高速的傳輸服務,同時通過流量控制與擁塞控制保障網絡穩定性。
? TCP 適合可靠性要求高的場景
- 如文件傳輸、郵件、Web 瀏覽。
? UDP 適合實時性要求高的場景
- 如視頻會議、語音通話、在線游戲。