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