HTTP/3 は、HTTP2に続くHTTPの3つ目のメジャーバージョンであり、最新版である。2022年に RFC 9114 によって正式化された。
概要
HTTP/3は、RFCドラフト「HTTP over QUIC」をベースとしている。QUICはGoogleによってはじめに開発された、トランスポート層のプロトコルである。
もっとも、通信プロトコルの基盤がTCPからUDPベースのQUICに変化したことが最大の変化である。
特徴
QUICプロトコルベース
HTTP/3は、IP接続から進化して、UDP上に築かれたQUICという新しいプロトコルを使用する。これにより、0-RTT Connectionが可能である。
また、QUICの機能を活かし、再接続なしで接続の再開ができる。
真・並列通信
TCPの越えられなかった制限を超え、パケットロスがあっても他ストリームには影響しないというUDPの特性を活かす。これによって、Head-of-Line Blockingが完全に解消できる。
TLSの内蔵
QUICでは暗号化(TLS 1.3)が標準化されていて、通信は常にセキュアである。ハンドシェイクと暗号化処理が一体化しており、高速かつ安全に通信を行うことができる設計。
課題
- UDPをブロックする設計のネットワークではそもそも使用できない。
- 実装が複雑なため、マイナーな言語やツールでは非対応の部分がある。
比較
(ChatGPTによる生成)
| 項目 | HTTP1.1 | 2 | HTTP/3 | | --------- | -------------------------------------------------------- | -------------------------------------------------------- | ---------------------------------------------------------- | ------ | | 通信方式 | TCP | TCP | QUIC | | | マルチプレクシング | ×(順番に処理) | ◯(1接続で並列) | ◎(独立して並列) | | | HOL問題 | ×(がっつり) | △(少しあり) | ◎(完全解消) | | | 暗号化 | 任意(TLS対応) | 任意(TLS推奨) | 強制(TLS 1.3内蔵) | | | ヘッダ圧縮 | × | ◯(HPACK) | ◯(QPACK) | | | サーバープッシュ | × | ◯(あり) | △(非推奨傾向) | |