在 OSI 七層模型中,傳輸層(Transport Layer) 承擔著在兩台主機的應用進程之間建立端到端(End-to-End)通訊的重任。

長久以來,傳輸層形成了涇渭分明的兩大陣營:

  • TCP(傳輸控制協定):面向連線、保證可靠、順序交付、自帶流量與擁塞控制;
  • UDP(用戶資料報協定):無連線、不可靠、無狀態、追求極致速度與低延遲。

然而,隨著行動網際網路與高併發串流媒體的爆發,TCP 刻在內核裡的頑疾(隊頭阻塞、握手延遲、連線僵死)愈發凸顯。為了打破僵局,Google 提出了基於 UDP 的新一代協定 QUIC(RFC 9000),並成為 HTTP/3 的官方傳輸標準。

本文將深度對比 TCP、UDP 與 QUIC 的底層架構,並拆解擁塞控制演算法(CUBIC vs. BBR)的演進歷程。


1. 三大傳輸層協定核心特性全景矩陣

評估維度TCP (Transmission Control Protocol)UDP (User Datagram Protocol)QUIC / HTTP/3 (Quick UDP Internet Connections)
連線狀態面向連線(三次交握)無連線(發送即忘)面向連線(應用層維護連線狀態)
可靠性保證100% 可靠(ACK + 逾時重傳)不保證(允許丟包、亂序)100% 可靠(獨立 Stream 級別 ACK 重傳)
連線建立延遲1-RTT(TCP)+ 1-RTT(TLS 1.3)= 2-RTT0-RTT0-RTT ~ 1-RTT(傳輸與 TLS 1.3 深度融合)
隊頭阻塞 (HOL)存在(單一封包遺失阻塞整條連線)不存在完全消除(單一 Stream 丟包不影響其他 Stream)
連線遷移能力無(綁定四元組:Src IP/Port + Dst IP/Port)無狀態支援(基於 64-bit Connection ID,WiFi 切 5G 不斷線)
協定層級作業系統內核(Kernel Space)作業系統內核使用者空間(User Space,快速迭代發布)

2. 深入理解隊頭阻塞(Head-of-Line Blocking, HOL)

什麼是隊頭阻塞?為什麼 HTTP/2 解決了應用層阻塞,卻在 TCP 層栽了跟頭?

HTTP/2 over TCP 傳輸層隊頭阻塞(Head-of-Line Blocking)示意圖展示 TCP 管道中 Stream A 封包 2 丟失,導致即使 Stream B 封包 3、4 完好到達,作業系統核心也強制扣留不交付。TCP 傳輸隊列管道 (嚴格保證字節流順序)Stream A 封包 1✅ 已正常交付Stream A 封包 2 ❌網路中遺失!Stream B 封包 3⚠️ 被核心扣留等待Stream B 封包 4⚠️ 被核心扣留等待隊頭阻塞致命瓶頸:TCP 核心強制扣留後續所有封包,直到封包 2 重傳成功!相較之下,QUIC 運行於 UDP 上,各 Stream 獨立 ACK,Stream B 完全不受 Stream A 丟包影響!

QUIC 如何徹底根除隊頭阻塞?

QUIC 底層運行於無狀態的 UDP 之上,但在應用層為每個 Stream 分配獨立的流 ID:

  • 若 Stream A 的封包遺失,只有 Stream A 進入等待重傳狀態;
  • Stream B 和 Stream C 的封包到達後立即向上交付處理,各 Stream 間互不干擾!

3. QUIC 連線遷移(Connection Migration)的魔法

在行動場景下,用戶走出家門時手機會自動從「家用 WiFi」切換為「行動 5G 網絡」:

  • 傳統 TCP 的痛苦:用戶的手機 IP 地址發生了改變。TCP 連線由 (Src IP, Src Port, Dst IP, Dst Port) 四元組唯一確定,一旦 IP 改變,原有 TCP 連線立即中斷失效,必須重新發起三次握手與 TLS 協商。
  • QUIC 的優雅解法:QUIC 連線使用隨機生成的 64 位元 Connection ID(CID) 標識連線。無論手機切換到哪個網路、IP 如何變換,只要資料包攜帶相同的 CID,伺服器就能無縫認出客戶端,連線零中斷、影片播放零卡頓!

4. 擁塞控制演算法演進:從 CUBIC 到 Google BBR

擁塞控制決定了伺服器發送資料的節奏,直接影響頻寬吞吐與網路延遲。

傳統 CUBIC (丟包驅動) vs Google BBR (模型驅動) 擁塞控制對比展示 CUBIC 填滿路由器緩衝區丟包後斷崖式減半,而 BBR 即時測量最大頻寬與最小時延維持在管道容量最佳點。❌ 傳統 CUBIC (基於丟包驅動)1. 盲目推高速率 ↗ 直到填滿緩衝區2. 產生丟包 ➔ 斷崖式減半發送速率 📉引發 Bufferbloat 緩衝區膨脹,延遲劇烈震盪長肥管道頻寬利用率極其低下✅ Google BBR (基於模型驅動)1. 即時測量最大瓶頸頻寬 (BtlBw)2. 即時測量最小往返傳輸時延 (RTprop)發送速率精確維持在「管道容量」甜蜜點榨乾極限頻寬 + 隊列零排隊延遲!
  1. CUBIC(傳統內核預設):將「封包遺失(Packet Loss)」誤判為網路擁塞信號。在長肥管道(BDP 大)或淺緩衝區網絡中,會頻繁誤減速。
  2. BBR(Bottleneck Bandwidth and RTT):不再盲信丟包,而是即時測量「最大頻寬」與「最小 RTT」,將注入網路的封包精確維持在最佳運作點,大幅降低長尾延遲(P99)並提升 20%~50% 的跨國傳輸吞吐量。

5. 總結與技術選型建議

  • 網頁瀏覽與現代 API 互動:全面擁抱 QUIC / HTTP/3,享受 0-RTT 握手、無隊頭阻塞與連線遷移紅利。
  • 內部低延遲微服務 RPC:可繼續採用成熟穩定的 gRPC (HTTP/2 over TCP) 或在極致性能場景採用 RDMA / eBPF。
  • 即時多人音訊/視訊會議與電競遊戲:採用 UDP / WebRTC,寧可丟幀也不等待重傳,確保小於 100ms 的極致即時互動。