運輸層是計算機網絡體系結構中的關鍵一層,位于網絡層之上、應用層之下。本章將重點探討運輸層的核心服務,以及實現這些服務的關鍵機制——多路復用與多路分解。
3.1 運輸層服務概述
運輸層的主要目標是向運行在不同主機上的應用進程提供高效的、可靠的和成本有效的數據傳輸服務。它在網絡層提供的“主機到主機”通信服務基礎上,實現了“進程到進程”的邏輯通信。網絡層負責將數據包從源主機路由到目的主機,而運輸層則負責將數據正確交付給主機上指定的應用進程。
運輸層向應用層提供的服務主要包括:
- 進程間通信:通過端口號標識不同應用進程,實現準確的數據交付。
- 可靠性保證:對于某些協議(如TCP),提供差錯檢測、重傳、流量控制和擁塞控制機制,確保數據正確、有序、不丟失、不重復地到達。
- 服務質量:可根據應用需求,提供不同級別的吞吐量、時延和安全性保障。
運輸層協議主要有兩種:
- 傳輸控制協議:提供面向連接的、可靠的數據流傳輸服務。
- 用戶數據報協議:提供無連接的、盡最大努力交付的數據報服務,簡單高效。
3.2 多路復用與多路分解
多路復用與多路分解是運輸層實現“進程到進程”通信的核心技術,它們是所有計算機網絡中不可或缺的功能。
- 多路分解:在接收端,運輸層從網絡層接收到數據段后,根據數據段首部中的信息(主要是目的端口號),將其正確交付到指定套接字(即應用程序的入口點)的過程。這就像郵局分揀員根據信封上的具體房間號(端口號),將信件投遞到不同住戶(應用進程)的信箱中。
- 多路復用:在發送端,運輸層從主機上不同的套接字收集數據塊,并為每個數據塊封裝上首部信息(包括源和目的端口號等),從而生成數據段,然后將這些數據段交給網絡層傳輸的過程。這如同多個住戶將信件交給郵局,郵局統一處理并發出。
這一機制使得多個網絡應用可以共享同一個網絡層協議(如IP),從而高效地利用網絡資源。無論是TCP還是UDP,都使用端口號(一個16位的數字)來標識套接字,從而實現復用與分解。一個完整的運輸層通信由兩個主機的IP地址和兩個端口號共同唯一標識。
計算機網絡開發與服務的視角
從網絡開發與服務的角度看,運輸層是應用程序開發者直接交互的底層。開發者通過調用運輸層提供的服務接口(如Socket API)來構建分布式應用。理解運輸層服務,特別是TCP的可靠傳輸機制和UDP的輕量級特性,對于開發高性能、高可靠的網絡應用至關重要。例如,Web服務器(HTTP)和電子郵件(SMTP)通常依賴TCP保證可靠性;而實時視頻流或DNS查詢則可能選擇UDP以降低時延。多路復用/分解機制使得一臺服務器能夠通過有限的IP地址和不同的端口號,同時為數以萬計的客戶端提供多種網絡服務,這是現代互聯網服務得以大規模部署的技術基石。
運輸層作為承上啟下的一層,其服務質量和設計選擇直接決定了上層應用體驗和網絡整體效能。