QUICとは

くいっく

UDPの上で動くトランスポート層のプロトコル。TLS 1.3による暗号化を組み込み、接続の確立と鍵の交換を合わせて1往復で行う。1つの接続の中に複数のストリームを多重化し、あるストリームのパケットが失われても、ほかのストリームは止まらない。HTTP/3の土台で、2021年にRFC 9000としてIETFで標準化された。

「QUIC」は、2分野の3問の練習問題に出てきます(ネットワークの基礎, Web技術の基礎など)。

この用語の分野: ネットワークの基礎

なぜUDPの上に作るのか

IPの上に新しいトランスポートのプロトコルを直接作っても、途中のNATやファイアウォールの多くは、知らないプロトコルのパケットを通しません。また、TCPはOSのカーネルの中に実装されているので、改良しても世の中の機器に行き渡るまでに長い時間がかかります。QUICは、どこでも通るUDPの上に作り、アプリケーションやライブラリの中で動かすことで、ブラウザなどの更新に合わせて改良できるようにしました。ヘッダのほとんども暗号化し、途中の機器が中身に依存して将来の変更を妨げることを防いでいます。

速い接続とストリームの多重化

TCPとTLSを使うと、TCPの3ウェイハンドシェイクの後にTLSのハンドシェイクが続きますが、QUICは両方を1つにまとめ、1往復でデータを送り始められます。前に接続したサーバには、最初のパケットからデータを送る0-RTTも使えます(ただし、繰り返されても困らない要求に限ります)。また、HTTP/2はTCPの1つの接続に複数のストリームを載せるので、1つのパケットが失われると全部のストリームが待たされますが、QUICはストリームごとに順序を管理するので、損失の影響はそのストリームだけで済みます。

コネクションIDと再送のしくみ

TCPの接続はIPアドレスとポート番号の組で区別されるので、スマートフォンがWi-Fiから携帯電話の回線に切り替わると切れてしまいます。QUICは接続をコネクションIDで区別するので、アドレスが変わっても接続を続けられます(コネクションマイグレーション)。損失の検出、再送、輻輳制御もQUICの中で行い、パケット番号を再利用しないので、元のパケットと再送したパケットを区別でき、RTTを正確に測れます。一方、カーネルやネットワークカードの支援が多いTCPに比べ、CPUの負荷が高くなりやすいという課題もあります。

QUICの練習問題に挑戦

UDPの特徴として正しいものはどれか。

  1. Aコネクションを確立せず、再送や順序の制御をしないので、ヘッダが小さく、送るまでの待ちもない
  2. Bコネクションを確立し、届かなかったデータを再送して、受信側で順序もそろえる
  3. CIPアドレスを使わずに、MACアドレスだけで宛先の端末に届ける
答えと解説を見る

正解:A. コネクションを確立せず、再送や順序の制御をしないので、ヘッダが小さく、送るまでの待ちもない

UDPは、IPの上にポート番号と簡単な誤り検出(チェックサム)を加えただけの軽いプロトコルで、ヘッダは8バイトです(TCPはオプションなしで20バイト)。接続の手順がなく、届いたかの確認や再送もしないため、少し失われても遅れない方がよい音声通話やライブ映像、1回の問い合わせと応答で済むDNSなどに使われます。信頼性が必要なら、アプリケーションの側で補います。例えば、HTTP/3で使われるQUICは、UDPの上で再送や暗号化を実装しています。コネクションの確立、再送、順序の制御を行うのはTCPです。

RTT(往復の時間)が100 msのWebサーバに、HTTPS(TCPの上のTLS 1.3)で新しく接続し、最初のリクエストを送って応答を受け取り始めるまでにかかる時間に最も近いものはどれか。DNSの名前解決は済んでおり、サーバの処理時間とデータの転送時間は無視する。

  1. A約100 ms
  2. B約300 ms
  3. C約200 ms
答えと解説を見る

正解:B. 約300 ms

まずTCPの3ウェイハンドシェイクで1往復かかります(クライアントは最後のACKと一緒にTLSの最初のメッセージを送れます)。次にTLS 1.3のハンドシェイクで1往復、その後にHTTPのリクエストと応答で1往復かかり、合計で3往復、3 × 100 = 300 msです。TLS 1.2では鍵の交換に2往復かかるため、4往復の400 msになります。この待ち時間は距離で決まるRTTの回数で決まるので、回線の帯域を増やしても短くなりません。HTTP/3で使われるQUICは、トランスポートと暗号のハンドシェイクを1往復にまとめ、再接続のときには最初の往復でデータを送る方法(0-RTT)も用意しています。

よくある質問

QUICとTCPの違いは何ですか?

どちらも確実で順序どおりの通信を提供しますが、QUICはUDPの上で動き、TLS 1.3の暗号化を組み込んでいます。接続の確立が速く(1往復、再接続なら0往復)、1つの接続に複数のストリームを独立して流せ、IPアドレスが変わっても接続を続けられる点がTCPと違います。

HTTP/3とQUICの関係は?

HTTP/3は、HTTPのやり取りをQUICの上で行う版です。HTTP/2がTCPとTLSの上で行っていたストリームの多重化や暗号化を、QUICが担います。そのためHTTP/3の通信は、通常UDPの443番ポートを使います。

解説の中の「QUIC」

「QUIC」が出てくる問題(3問)

  1. UDPの特徴として正しいものはどれか。
  2. RTT(往復の時間)が100 msのWebサーバに、HTTPS(TCPの上のTLS 1.3)で新しく接続し、最初のリクエストを送って応答を受け取り始めるまでにかかる時間に最も近いものはどれか。DNSの名前解決は済んでおり、サーバの処理時間とデータの転送時間は無視する。
  3. HTTP/2とHTTP/3の説明として正しいものはどれか。

ネットワークの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

関連する用語

TCP HTTP UDP DNS IP(インターネットプロトコル) ポート番号 ARQ(自動再送要求) RTT(往復遅延時間) HTTPS TLS

用語集の一覧へ