什麼是QUIC

在UDP之上運作的傳輸層協定。內建TLS 1.3加密,把建立連線與金鑰交換合併在1個往返內完成。在一條連線中多工傳送多個串流,即使某個串流的封包遺失,其他串流也不會停住。它是HTTP/3的基礎,於2021年由IETF標準化為RFC 9000。

日文名稱: QUIC

「QUIC」出現在2領域的3道練習題中(電腦網路基礎, Web技術基礎等)。

這個名詞所屬的領域: 電腦網路基礎

為什麼建構在UDP之上

即使在IP之上直接設計新的傳輸協定,途中的NAT與防火牆大多也不會讓不認識的協定封包通過。此外,TCP實作在作業系統的核心中,即使改良,也要很長時間才能普及到世上的設備。QUIC建構在到處都能通過的UDP之上,並在應用程式與函式庫中運作,因此能隨著瀏覽器等的更新而改良。標頭的大部分也經過加密,避免途中的設備依賴其內容而妨礙日後的變更。

快速的連線與串流多工

使用TCP與TLS時,TCP的三向交握之後還要接著進行TLS交握;QUIC把兩者合而為一,1個往返就能開始傳送資料。對以前連線過的伺服器,還能使用從第一個封包就傳送資料的0-RTT(但僅限於重複執行也無妨的請求)。此外,HTTP/2在一條TCP連線上承載多個串流,只要遺失一個封包,所有串流都得等待;QUIC則以串流為單位管理順序,遺失的影響只限於該串流。

連線ID與重傳機制

TCP的連線以IP位址與連接埠號碼的組合區分,因此智慧型手機從Wi-Fi切換到行動網路時連線就會斷開。QUIC以連線ID區分連線,即使位址改變也能繼續連線(連線遷移)。遺失偵測、重傳與壅塞控制都在QUIC內部進行,且封包編號不會重複使用,因此能區分原本的封包與重傳的封包,正確量測RTT。另一方面,與能大量利用核心與網路卡支援的TCP相比,QUIC的CPU負載容易較高。

練習QUIC的題目

下列關於UDP特徵的敘述,何者正確?

  1. A不建立連線,也不控制重傳與順序,因此標頭小,傳送前也不需等待
  2. B會建立連線,重傳未送達的資料,並在接收端整理順序
  3. C不使用IP位址,只用MAC位址把資料送到目的地終端
查看答案與解析

正確答案:A. 不建立連線,也不控制重傳與順序,因此標頭小,傳送前也不需等待

UDP是在IP之上只加入連接埠號碼與簡單錯誤偵測(檢查碼)的輕量協定,標頭為8位元組(TCP在無選項時為20位元組)。它沒有建立連線的程序,也不確認是否送達、不重傳,因此用於寧可少量遺失也不要延遲的語音通話與直播影像,以及只需一次查詢與回應的DNS等。若需要可靠性,則由應用程式端補足。例如HTTP/3使用的QUIC,就是在UDP之上實作重傳與加密。建立連線、重傳、控制順序是TCP的工作。

以HTTPS(在TCP之上的TLS 1.3)重新連線到RTT(往返時間)為100 ms的Web伺服器,從送出第一個請求到開始收到回應,所需時間最接近下列何者?假設DNS名稱解析已完成,並忽略伺服器的處理時間與資料的傳輸時間。

  1. A約100 ms
  2. B約300 ms
  3. C約200 ms
查看答案與解析

正確答案:B. 約300 ms

首先,TCP的三向交握需要1個往返(用戶端可以把TLS的第一則訊息與最後的ACK一起送出)。接著TLS 1.3的交握需要1個往返,之後HTTP的請求與回應再需要1個往返,合計3個往返,即 3 × 100 = 300 ms。TLS 1.2的金鑰交換需要2個往返,因此共4個往返,為400 ms。這段等待時間取決於RTT的次數,而RTT由距離決定,因此即使增加線路頻寬也不會縮短。HTTP/3使用的QUIC把傳輸層與加密的交握合併為1個往返,重新連線時還提供在第一次往返就傳送資料的方法(0-RTT)。

常見問題

QUIC與TCP有什麼不同?

兩者都提供可靠且依順序的通訊,但QUIC在UDP之上運作,並內建TLS 1.3加密。它的連線建立較快(1個往返,重新連線時可為0個往返),能在一條連線中獨立傳送多個串流,而且IP位址改變時也能維持連線,這些都與TCP不同。

HTTP/3與QUIC是什麼關係?

HTTP/3是在QUIC之上進行HTTP交換的版本。HTTP/2在TCP與TLS上進行的串流多工與加密,改由QUIC負責。因此HTTP/3的通訊通常使用UDP的443號連接埠。

解析中的「QUIC」

出現「QUIC」的題目(3題)

  1. 下列關於UDP特徵的敘述,何者正確?
  2. 以HTTPS(在TCP之上的TLS 1.3)重新連線到RTT(往返時間)為100 ms的Web伺服器,從送出第一個請求到開始收到回應,所需時間最接近下列何者?假設DNS名稱解析已完成,並忽略伺服器的處理時間與資料的傳輸時間。
  3. 關於HTTP/2與HTTP/3的說明,下列何者正確?

相關名詞

TCP(傳輸控制協定) HTTP(超文字傳輸協定) UDP(使用者資料包協定) DNS(網域名稱系統) IP(網際網路協定) 連接埠號碼 ARQ(自動重傳請求) HTTPS TLS RTT(往返時間)

前往名詞解釋列表