【えいちてぃーてぃーぴーすりー】

HTTP/3 とは?

最終更新:
💡 QUICで、別ストリームを巻き込む待ちを減らす

QUICを使ってHTTPの通信を行うバージョン。QUICはUDP上で再送や順序管理、TLS 1.3による保護を提供し、TCPに由来する別ストリームの受け渡し待ちを避ける。

📌 このページのポイント
Aのデータが失われた例HTTP/2(TCP)A欠落B待つC待つ他のストリームも受け渡しを待つHTTP/3(QUIC)A欠落B進めるC進める別ストリームは進められる接続全体の混雑の影響は共有する同じストリームでは再送を待つ
同じ接続内のストリームを比較した模式図。HTTP/3でも混雑制御やヘッダー圧縮による待ちはあり、常に速くなるとは限らない。
ひよこ ひよこ
HTTP/2から何が変わったの?
ペンギン先生 ペンギン先生
通信の土台がTCPからQUICに変わったんだ。HTTP/2では、一つのTCP接続で複数のストリームを扱う。HTTP/3はQUICのストリームを使うので、あるストリームのデータが失われても、それを待つためだけに別のストリームの受け渡しまで止める必要がなくなるよ。
ひよこ ひよこ
UDPを使って、データが欠けたり順番が変わったりしない?
ペンギン先生 ペンギン先生
UDP自体に任せず、QUICが信頼性を提供するよ。失われたデータの再送や、ストリーム内の順序管理を行うんだ。失ったパケットをそのまま送り直すのではなく、必要なデータを新しいパケットに載せて再送する。UDPだから順序を無視する、という仕組みではないよ。
ひよこ ひよこ
ヘッドオブラインブロッキングが全部なくなるの?
ペンギン先生 ペンギン先生
避けられるのは、TCPの順序待ちが別のストリームにも及ぶ問題だよ。同じストリームでは欠けたデータを待つし、接続全体の混雑制御の影響も共有する。ヘッダーの圧縮に伴う待ちもあり得るので、HTTP/3なら何が起きても他の通信に影響しない、とは言えないんだ。
ひよこ ひよこ
接続は必ず1往復で完了するの?
ペンギン先生 ペンギン先生
QUICはTLS 1.3と組み合わせて、接続と暗号化の準備を進めるよ。フルハンドシェイクには1-RTTの方式があるけれど、追加の確認が必要な場合もあり、一律の所要時間は決まらない。以前の接続情報があれば0-RTTで早期データを送れる場合もあるが、再送攻撃への配慮など利用条件があるんだ。
ひよこ ひよこ
対応ブラウザなら、いつもHTTP/3になる?
ペンギン先生 ペンギン先生
サーバー側もHTTP/3に対応し、通信経路でQUICを使える必要があるよ。たとえばUDPが遮断される環境では接続できず、TCP上のHTTPへ切り替えることがある。速さもネットワークや処理内容によるので、HTTP/3というだけで必ずページが速くなるとは限らないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「HTTP/3」って出てきたら「QUICで通信し、別ストリームを巻き込む待ちを減らすHTTP」と思えればだいたいOK!
📖 おまけ:英語の意味
「Hypertext Transfer Protocol Version 3」 = ハイパーテキスト転送プロトコル バージョン3
💬 HTTPをQUIC上で使う仕組みを定めたバージョンだよ。IETFが2022年6月にRFC 9114として公開した。HTTPの意味を別物にするのではなく、通信の運び方を変えているんだ。

参考資料

← 用語集にもどる