RFC 9204 - QPACK: HTTP/3のフィールド圧縮
発行日: 2022年6月
ステータス: 標準トラック (Standards Track)
著者: C. Krasic, M. Bishop, A. Frindell (Meta)
概要 (Abstract)
本仕様は、HTTP/3で使用されるHTTPフィールドを効率的に表現するための圧縮フォーマットであるQPACKを定義します。これは、ヘッドオブラインブロッキング (Head-of-Line Blocking) を削減することを目的としたHPACK圧縮の変種です。
目次 (Contents)
- 1. はじめに (Introduction)
- 1.1 規約と定義
- 1.2 表記規則
- 2. 圧縮プロセスの概要 (Compression Process Overview)
- 2.1 エンコーダー
- 2.2 デコーダー
- 3. 参照テーブル (Reference Tables)
- 3.1 静的テーブル
- 3.2 動的テーブル
- 4. ワイヤフォーマット (Wire Format)
- 4.1 プリミティブ
- 4.2 エンコーダーおよびデコーダーストリーム
- 4.3 エンコーダー命令
- 4.4 デコーダー命令
- 4.5 フィールドライン表現
- 5. 設定 (Configuration)
- 6. エラー処理 (Error Handling)
- 7. セキュリティの考慮事項 (Security Considerations)
- 7.1 動的テーブル状態のプローブ
- 7.2 静的ハフマン符号化
- 7.3 メモリ消費
- 7.4 実装の制限
- 8. IANAの考慮事項 (IANA Considerations)
- 9. 参考文献 (References)
付録 (Appendices)
- 付録A. 静的テーブル (Static Table)
- 付録B. エンコードおよびデコードの例 (Encoding and Decoding Examples)
- 付録C. サンプルシングルパスエンコーディングアルゴリズム (Sample Single-Pass Encoding Algorithm)
関連リソース
- 公式RFC: RFC 9204
- 公式ページ: RFC 9204 DataTracker
- 正誤表: RFC Editor Errata
クイックリファレンス
QPACKとは?
QPACKは、HTTP/3のヘッダー圧縮フォーマットであり、HPACKをベースとしていますが、QUICの順序付けられていない配信特性に最適化されています。
主な改善点
HPACKと比較した主な変更点:
- ✅ ヘッドオブラインブロッキングの削減 - 順序付けられていないデコードを許可
- ✅ 独立したストリーム - エンコーダー/デコーダーは別々の単方向ストリームを使用
- ✅ 柔軟なトレードオフ - 圧縮率とレイテンシーのバランス調整が可能
- ✅ 動的テーブル管理 - より細かい制御メカニズム
QPACKとHPACKの比較
| 特徴 | HPACK (HTTP/2) | QPACK (HTTP/3) |
|---|---|---|
| トランスポートプロトコル | TCP | QUIC (UDP) |
| ヘッドオブラインブロッキング | 深刻 | 大幅に削減 |
| 動的テーブル | 単一 | エンコーダー/デコーダー分離 |
| 圧縮率 | 高い | HPACKに近い |
| 順序付けられていない処理 | 未サポート | サポート |
| 参照モード | 絶対インデックスのみ | 複数のインデックスタイプ |
出典: RFC 9204 - QPACK: Field Compression for HTTP/3
著作権: © 2022 IETF Trust. 完全な著作権表示については https://www.rfc-editor.org/info/rfc9204 を参照してください。