【計算機網路筆記】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 進行了深度最佳化,具以下三大特性:

  1. 連線導向與安全(Connection-Oriented and Secure):QUIC 將建立連線的握手與 TLS 認證加密的握手合而為一。
    • 相較傳統 TCP 需要先花費多個 RTT 建立 TCP 連線,再花費 RTT 建立 TLS 連線,QUIC 能夠以更快的速度建立起加密通道。
  2. 支援多重串流(Streams)解決 HOL Blocking:QUIC 允許在單一個連線中進行多工(Multiplexing),也就是同時傳輸多個獨立的應用層串流(例如網頁中的不同圖片物件)。
    • 因為每個串流是獨立提供可靠傳輸的,如果某個 UDP 封包遺失,只會影響包含在該封包內的特定串流,其他串流依然可以順利將資料交給應用程式,解決了 TCP 的隊頭阻塞問題。
  3. 可靠且對 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

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

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