【計算機網路筆記】3.8 Evolution of Transport-Layer Functionality
【計算機網路筆記】3.8 Evolution of Transport-Layer Functionality
Hello Guys, I’m LukeTseng. 歡迎你也感謝你點入本篇文章,本系列主要讀本為《Computer Networking: A Top-Down Approach, 8th Edition》,就是計算機網路的聖經,會製作該系列也主要因為修課上會用到。若你喜歡本系列或本文,不妨動動你的手指,為這篇文章按下一顆愛心吧,或是追蹤我的個人公開頁也 Ok。
傳輸層已經不再是傳統 TCP 與 UDP 非黑即白的天下,為了解決現代網路高併發、低延遲的需求,傳輸層功能正朝向多樣化發展,甚至將實作提升到了應用層(以 QUIC 為代表)。
三十年來,TCP 和 UDP 一直是網際網路的兩大主力,然而,TCP 為了保證可靠性,有著嚴格的順序限制與繁瑣的連線建立過程,導致了隊首阻塞(HOL Blocking)」與較高的延遲。
而 UDP 雖然快,卻不提供可靠傳輸,隨著雲端服務和影音串流的爆發,開發者需要一種既有 TCP 的可靠與安全,又能像 UDP 一樣輕量快速的解決方案。
術語解析
- QUIC(Quick UDP Internet Connections):由 Google 開發的一種全新應用層傳輸協定,它建立在 UDP 之上,旨在為安全網頁瀏覽提供更高效的傳輸服務。
- 串流(Stream):在 QUIC 中是一個抽象概念,代表兩個終端系統(End System)之間可靠、按順序且雙向的資料傳遞通道。
- 隊首阻塞(Head-of-Line Blocking, HOL Blocking):在傳統 TCP 中,如果前面的一個封包遺失了,後續已經到達的封包就必須排隊等待遺失的封包重傳,導致整個應用程式卡住的現象。
- 傳輸層安全性協定(Transport Layer Security, TLS):用於加密網路通訊的安全協定,在傳統架構中它是疊加在 TCP 之上,而在 QUIC 中它與連線建立過程被整合。
TCP 家族的演進與分化
過去我們常以為 TCP 就是單一個標準,但實際上它已經演化出極多版本,如:
- 多樣化的 TCP 變體:包含 TCP CUBIC、DCTCP(資料中心專用)、CTCP 以及 Google 開發的 BBR 等等。
- 事實上,TCP CUBIC 目前在 Web 伺服器上的部署率已經超越了傳統的 TCP Reno。
- TCP 的共通點:現今說某個 TCP 協定可能已經不準確了,這些多樣化的 TCP 變體,唯一的共通點只剩下都使用相同的 TCP 區段格式,且面對網路壅塞時,都能以公平的方式競爭頻寬。
QUIC 協定
如果應用程式需要比 UDP 更多功能,但又不想承擔 TCP 的包袱要怎麼辦?答案是開發者可以在應用層自己開發傳輸協定,QUIC 就是這樣誕生的。
QUIC 底層使用的是無連接的 UDP 資料包(Datagram),但把可靠性與壅塞控制都實作在應用層,如今超過 7% 的網際網路流量已是 QUIC 流量。
QUIC 三大特性
QUIC 針對 HTTP/3 進行了深度最佳化,具以下三大特性:
- 連線導向與安全(Connection-Oriented and Secure):QUIC 將建立連線的握手與 TLS 認證加密的握手合而為一。
- 相較傳統 TCP 需要先花費多個 RTT 建立 TCP 連線,再花費 RTT 建立 TLS 連線,QUIC 能夠以更快的速度建立起加密通道。
- 支援多重串流(Streams)解決 HOL Blocking:QUIC 允許在單一個連線中進行多工(Multiplexing),也就是同時傳輸多個獨立的應用層串流(例如網頁中的不同圖片物件)。
- 因為每個串流是獨立提供可靠傳輸的,如果某個 UDP 封包遺失,只會影響包含在該封包內的特定串流,其他串流依然可以順利將資料交給應用程式,解決了 TCP 的隊頭阻塞問題。
- 可靠且對 TCP 友善的壅塞控制:雖用的是 UDP,但 QUIC 參考了 TCP New Reno 的演算法來實作可靠傳輸與壅塞控制,所以它在網路壅塞時的行為,就像 TCP 一樣。
傳統架構 vs. QUIC 架構
| 比較維度 | 傳統架構(HTTP/1.1 或 HTTP/2 + TCP) | 新世代架構(HTTP/3 + QUIC) |
|---|---|---|
| 底層傳輸協定 | TCP(於作業系統核心實作) | UDP(於作業系統核心實作) |
| 可靠性與壅塞控制 | 在傳輸層(TCP)統一處理 | 在應用層(QUIC)以 Stream 為單位處理 |
| 加密機制位置 | 應用層/傳輸層之間(獨立的 TLS) | 內建於 QUIC 協定內部 |
| 隊頭阻塞(HOL Blocking) | 嚴重:一個封包掉,全部等重傳 | 解決:不同 Stream 互不影響 |
| 協定更新難易度 | 困難:需更新作業系統核心 | 簡單:更新 App(如瀏覽器)即可 |
下圖 a. 為傳統架構(安全的 HTTP 協定堆疊),b. 為基於安全 QUIC 的 HTTP/3 協定堆疊。

Image Source:Computer Networking: A Top-Down Approach (8th ed., p. 311, Figure 3.58)
下圖 a. 為 HTTP 1.1:單一連線的 Client 端跟 Server 端,用應用層 TLS 加密,以 TCP rdt 跟壅塞控制。
b. 為 HTTP/3:多資料串流的 Client 端跟 Server 端,用 QUIC 加密、rdt、壅塞控制,透過 UDP 做不可靠資料包服務。

Image Source:Computer Networking: A Top-Down Approach (8th ed., p. 312, Figure 3.59)


