用語辞典・通信プロトコル

HTTP/3

HTTP/3とは

HTTP/3は、QUICを利用し、接続確立や通信切り替えの改善を図ったHTTPの版です。HTTP/3(Hypertext Transfer Protocol Version 3/ハイパーテキスト・トランスファー・プロトコル・バージョン・スリー)で、エイチティーティーピー・スリーと読みます。

HTTPのメソッド、URL、状態コード、フィールド、キャッシュなどの意味はHTTP/1.1・HTTP/2と共通です。転送にはTCPではなくQUICを使い、HTTPメッセージをHTTP/3フレームとしてQUICストリームへ載せます。

HTTP/3の中心は単なる版番号更新ではなく、HTTP/2で一つのTCPバイト列へ集めていた複数交換を、回復単位の分かれたQUICストリームへ移したことです。

HTTP要求・応答と圧縮ヘッダーを、役割別のQUICストリームへ載せる一つの要求ストリームが損失回復を待っても、他ストリームの完成データは進める
HTTP要求と応答がTLSを統合したQUIC接続へ入り、三つの独立ストリームのうち一つだけがパケット損失を待つ一方、QPACKの符号化・復号表が専用指示ストリームで同期し、回線切替後も接続が続くHTTP/3の図解
図1要求ストリーム間の順序待ちは減りますが、同じQUIC接続の経路容量と輻輳制御は共有されます。

要求ストリームと、接続を支える単方向ストリームを使い分ける

要求ごとの双方向ストリームとは別に、接続全体の設定と圧縮表を管理する必須の制御ストリームが閉じた場合は、要求一件ではなく接続エラーになる
要求要求・応答

一つの双方向QUICストリームでHEADERSとDATAを交換する

Control接続設定

SETTINGSやGOAWAYなどを、各方向一つの制御ストリームで運ぶ

QPACKエンコーダー表への登録指示

送信側が動的表を更新する命令を、専用単方向ストリームで送る

QPACKデコーダー受領・取消通知

復号側が処理済み挿入数やストリーム取消を送り返す

Push任意のサーバープッシュ

許可された場合に、サーバーが資源応答を単方向ストリームで送る

QUIC回復と暗号化

ストリーム順序、損失回復、フロー・輻輳制御、TLS認証を担う

図2制御・QPACKストリームは接続の重要状態です。知らない種類の単方向ストリームを拡張用に無視できる場合との違いがあります。

HTTPの意味は変えず、QUICストリームへフレームを対応付ける

要求ストリームでは、HEADERSフレームが疑似ヘッダーと通常フィールドを、DATAフレームがHTTP内容を運びます。メソッド、スキーム、オーソリティー、パスはHTTP/2と同様に疑似ヘッダーとして表現されます。

QUIC STREAMフレームとHTTP/3 DATAフレームは別の層です。一つのHTTP/3フレームが複数QUICパケットへまたがることもあります。解析では、UDPデータグラム、QUICパケット、QUICフレーム、HTTP/3フレーム、HTTPメッセージを順に分けます。

QPACKは、別ストリームの損失で全要求が止まる問題を抑える

QPACK(キューパック)はHTTP/3のフィールド圧縮方式です。静的表と動的表を使う点はHPACKに似ていますが、表の更新指示を専用ストリームへ分け、QUICのストリーム独立性へ合わせています。

受信側にまだ届いていない動的表エントリーをヘッダーブロックが参照すると、その要求ストリームは復号を待つことがあります。SETTINGS_QPACK_BLOCKED_STREAMSで同時に待たせてよい数を合意します。HTTP/3は順序待ちを完全になくすのではなく、待ち合わせの範囲を制御し、独立要求へ広がりにくくする設計です。

TLS 1.3はQUICへ統合され、HTTP/3だけを平文で動かす方式はない

HTTP/3は、TLS 1.3を組み込んだQUIC接続上で動きます。サーバー証明書を検証し、ALPNでh3系列を合意します。HTTP/2のように通常のTLSレコードをTCP上へ重ねる構造ではありません。

0-RTTでは以前の接続情報を使って早期要求を送れる場合がありますが、再送されても安全な要求かを判断します。HTTPメソッドが冪等でも、認証状態、レート制限、サーバー実装を含めた受け入れ方針が必要です。

最初の接続では、サーバーがHTTP/3対応先を知らせることがある

同じHTTPS URLでも、クライアントが最初からHTTP/3の接続先を知るとは限りません。HTTP応答のAlt-Svc(オルト・サービス)フィールドや、DNSのHTTPSリソースレコードなどで、同じオリジンを提供するQUIC接続先を知ります。

クライアントは証明書が元のオリジンへ有効かを確認し、通知先を勝手な別サイトとして信頼しません。アドレス変更やポート変更があっても、URL表示とオリジンの権限境界は維持されます。

UDPが通らないときは、HTTP/2などへ戻して利用を継続する

企業ネットワーク、古いNAT・ファイアウォール、通信事業者の一部経路でUDPが遮断・制限される場合があります。HTTP/3だけを待ち続けると表示が遅くなるため、クライアントは過去の到達結果を記録し、TCP上のHTTP/2などと適切に競合・フォールバックします。

評価では「h3になったか」だけでなく、初回・再訪、UDP不通、回線切替、損失、証明書更新、フォールバックまで測る必要があります。HTTP/3対応は、常にHTTP/2より速いという宣言ではありません。

仕様の確認資料:RFC 9114「HTTP/3」、RFC 9204「QPACK」、RFC 7838「HTTP Alternative Services」

関連用語