HTTP/3 傳輸協議 - QUIC 原理簡介

Chester Chu
15 min readMay 28, 2019
image source

HTTP/2是目前最新的網路傳輸協議(如上圖左),主要由 TCP + TLS 1.2 + HTTP 所組成。隨著時間的演進,越來越多的網路流量都往手機端移動(預估2021年無線網路傳輸將達到總體的63%),手機的無線網路環境會遇到的問題像是(1)封包丟失機率較高、(2)較長 Round Trip Time (RTT) 和 (3) Connection Migration 問題等等,都讓主要是為了有線網路設計的 HTTP/TCP 協議遇到貧頸。

因此 Google 在 2013 年發表了一個新的傳輸協議 QUIC (如上圖右),全名為Quick UDP Internet Connection。不同於 HTTP/2,QUIC 採用的是較不可靠的 UDP 當做傳輸層,再另外在 QUIC 層上實作 Loss Recovery 和 Congestion Control,並且引入新的設計以支持多路複用、降低連線交握的延遲、解決重傳歧異和支持 Connection Migration 等等。之所以不直接修改TCP協議的原因,主要是因為 TCP 和 UDP 大部分都是在作業系統的核心實作,無法快速的升版並廣泛地被採用,所以才直接在目前系統都已經支援的 UDP 的上層動手腳。

IETF 的 QUIC Work Group 在2018年把 QUIC 重新命名為 HTTP/3,準備把 QUIC 確立為下一代傳輸協議的標準。其中 IETF 對 QUIC 做了一些更動,像是將 QUIC 改成較通用的傳輸協議,除了支援 HTTP,也支援 SMTP、DNS 和 SSH 等等。也將原本 QUIC 裡面的 QUIC Crypto 加密機制改用 TLS 1.3 取代。

Google 關於 QUIC 的文件中提到,與HTTP/2相比,QUIC 主要具有下列優勢:

  1. Reduce connection establishment latency (減少建立連線所需的時間)
  2. Improved congestion control (增進網路壅塞控管)
  3. Multiplexing without head-of-line blocking (多路復用避免HOL Blocking)
  4. Forward error correction (前向錯誤更正)
  5. Connection migration (移動中WIFI與4G網路切換時不需要重新建立連線)

下面將對 QUIC 的下列五個機制分別做介紹:

  1. 連線建立 (Connection Establishment)
  2. 多路複用 (Multiplexing)
  3. 封包遺失恢復 (Loss Recovery)

--

--

Chester Chu

A Software Engineer, Gopher and Full Stack Developer.