五、運(yùn)輸層
運(yùn)輸層是計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)中的關(guān)鍵一層,位于網(wǎng)絡(luò)層之上、應(yīng)用層之下。它負(fù)責(zé)為運(yùn)行在不同主機(jī)上的應(yīng)用進(jìn)程提供邏輯通信服務(wù),是端到端通信的核心。
1. 運(yùn)輸層概述
運(yùn)輸層的主要目標(biāo)是彌補(bǔ)網(wǎng)絡(luò)層服務(wù)的不足,為應(yīng)用層提供可靠、有效的數(shù)據(jù)傳輸服務(wù)。網(wǎng)絡(luò)層(如IP協(xié)議)只負(fù)責(zé)將數(shù)據(jù)包從源主機(jī)送到目的主機(jī),是一種“盡力而為”的服務(wù),不保證可靠性、順序性和完整性。而運(yùn)輸層則在此基礎(chǔ)上,通過(guò)其協(xié)議(主要是TCP和UDP)向上層應(yīng)用提供兩種截然不同的服務(wù)模型:
- 面向連接的可靠傳輸服務(wù):確保數(shù)據(jù)無(wú)差錯(cuò)、不丟失、不重復(fù)且按序到達(dá)。這是傳輸控制協(xié)議(TCP)提供的核心服務(wù)。
- 無(wú)連接的不可靠傳輸服務(wù):不建立連接,只提供盡力而為的數(shù)據(jù)交付,不保證可靠性。這是用戶(hù)數(shù)據(jù)報(bào)協(xié)議(UDP)提供的服務(wù)。
運(yùn)輸層通過(guò)復(fù)用和分用功能,使多個(gè)應(yīng)用進(jìn)程能夠同時(shí)使用下層的網(wǎng)絡(luò)服務(wù)。
2. 運(yùn)輸層端口、復(fù)用與分用的概念
端口是運(yùn)輸層的一個(gè)核心概念。它是一個(gè)16位的數(shù)字標(biāo)識(shí)符(范圍0-65535),用于唯一標(biāo)識(shí)主機(jī)上的一個(gè)應(yīng)用進(jìn)程。端口使得運(yùn)輸層能夠?qū)?shù)據(jù)正確交付給指定的應(yīng)用程序。
- 知名端口(0-1023):分配給如HTTP(80)、FTP(21)等核心網(wǎng)絡(luò)服務(wù)。
- 注冊(cè)端口(1024-49151):供用戶(hù)應(yīng)用程序注冊(cè)使用。
- 動(dòng)態(tài)/私有端口(49152-65535):供客戶(hù)端臨時(shí)使用。
復(fù)用是指發(fā)送方運(yùn)輸層將來(lái)自多個(gè)不同應(yīng)用進(jìn)程的數(shù)據(jù)塊(報(bào)文段)收集起來(lái),加上共同的運(yùn)輸層首部(如端口號(hào)),交給網(wǎng)絡(luò)層封裝成一個(gè)IP數(shù)據(jù)包發(fā)送出去的過(guò)程。
分用是復(fù)用的逆過(guò)程。當(dāng)接收方運(yùn)輸層收到網(wǎng)絡(luò)層交付的IP數(shù)據(jù)包后,會(huì)根據(jù)運(yùn)輸層首部中的目的端口號(hào),將數(shù)據(jù)正確交付給指定的、正在等待的接收應(yīng)用進(jìn)程。
正是通過(guò)套接字(Socket)——即IP地址 + 端口號(hào)的組合——運(yùn)輸層實(shí)現(xiàn)了全球范圍內(nèi)主機(jī)上特定進(jìn)程之間的精確通信。
3. UDP和TCP的對(duì)比
用戶(hù)數(shù)據(jù)報(bào)協(xié)議(UDP)和傳輸控制協(xié)議(TCP)是運(yùn)輸層兩大核心協(xié)議,它們的設(shè)計(jì)目標(biāo)和特性形成了鮮明對(duì)比:
| 特性 | UDP(用戶(hù)數(shù)據(jù)報(bào)協(xié)議) | TCP(傳輸控制協(xié)議) |
| :--- | :--- | :--- |
| 連接性 | 無(wú)連接。發(fā)送數(shù)據(jù)前無(wú)需建立連接,開(kāi)銷(xiāo)小。 | 面向連接。數(shù)據(jù)傳輸前必須經(jīng)過(guò)“三次握手”建立可靠連接。 |
| 可靠性 | 不可靠交付。不保證數(shù)據(jù)到達(dá),不保證順序,無(wú)確認(rèn)、重傳機(jī)制。 | 可靠交付。通過(guò)確認(rèn)、重傳、流量控制、擁塞控制等機(jī)制確保數(shù)據(jù)正確、有序到達(dá)。 |
| 報(bào)文結(jié)構(gòu) | 簡(jiǎn)單。首部?jī)H8字節(jié),包含源端口、目的端口、長(zhǎng)度和校驗(yàn)和。 | 復(fù)雜。首部至少20字節(jié),包含序列號(hào)、確認(rèn)號(hào)、窗口大小等眾多控制字段。 |
| 傳輸單位 | 用戶(hù)數(shù)據(jù)報(bào)。應(yīng)用層交下來(lái)的數(shù)據(jù)加上UDP首部即構(gòu)成一個(gè)報(bào)文。 | TCP報(bào)文段。數(shù)據(jù)會(huì)被分段,每個(gè)段加上TCP首部進(jìn)行傳輸。 |
| 流量控制 | 無(wú)。發(fā)送速率由應(yīng)用層控制。 | 有。通過(guò)滑動(dòng)窗口機(jī)制進(jìn)行端到端的流量控制。 |
| 擁塞控制 | 無(wú)。可能加劇網(wǎng)絡(luò)擁塞。 | 有。通過(guò)慢啟動(dòng)、擁塞避免等算法動(dòng)態(tài)調(diào)整發(fā)送速率。 |
| 傳輸效率 | 高。延遲低,開(kāi)銷(xiāo)小,適用于實(shí)時(shí)應(yīng)用。 | 相對(duì)較低。由于建立連接、確認(rèn)重傳等機(jī)制,延遲和開(kāi)銷(xiāo)較大。 |
| 應(yīng)用場(chǎng)景 | DNS查詢(xún)、音視頻流媒體(如視頻會(huì)議)、實(shí)時(shí)游戲、TFTP等對(duì)實(shí)時(shí)性要求高、可容忍少量丟包的應(yīng)用。 | Web瀏覽(HTTP/HTTPS)、電子郵件(SMTP/POP3)、文件傳輸(FTP)、遠(yuǎn)程登錄(SSH)等要求數(shù)據(jù)完整可靠的應(yīng)用。 |
****:運(yùn)輸層作為承上啟下的關(guān)鍵層級(jí),通過(guò)端口機(jī)制實(shí)現(xiàn)了進(jìn)程間的精確通信,并通過(guò)UDP和TCP兩種協(xié)議為上層應(yīng)用提供了靈活的選擇——UDP追求高效與低延遲,TCP追求可靠與有序。理解它們之間的根本區(qū)別,是設(shè)計(jì)和選擇網(wǎng)絡(luò)應(yīng)用程序的基礎(chǔ)。