読み方 : エイチパック

HPACK

概要

HPACKとは、HTTP/2で使用される、ヘッダデータ圧縮する仕組み。WebブラウザWebサーバの間で送受信されるHTTPリクエストおよびレスポンスヘッダ情報圧縮し、通信データ量を削減する。静的テーブルと動的テーブルを用いて頻出するヘッダを番号に置き換えるとともに、ハフマン符号化により文字列を圧縮する。
HPACKのイメージ画像

HTTPでは、要求や応答のたびに多数のヘッダが送信される。User-AgentやAccept-Languageなど内容がほとんど変化しない情報も毎回そのまま繰り返し送られ、HTTP/1.1では圧縮されずテキスト形式でそのまま送受信されていた。HTTP/2で複数の要求と応答を同時に処理するようになると、この重複が無視できない負荷となった。

HPACKでは、利用頻度の高いヘッダ名とヘッダ値の組み合わせをあらかじめ登録した静的テーブルと、通信の中で出現したヘッダを順次登録していく動的テーブルを用いる。送信側と受信側が同一のテーブルを保持し、ヘッダをインデックス番号で参照することで、ヘッダ情報そのものを送信せずに済む仕組みである。

テーブルに登録されていない新しいヘッダ値を送信する場合は、「ハフマン符号化」(Huffman coding)という圧縮方式を用いて文字列を短いビット列に変換してから送る。動的テーブルは通信が継続する間に内容が更新され、新たに出現したヘッダが追加される一方、テーブルの容量を超えると古い情報から順に削除される。これにより、繰り返し使われるヘッダほど効率的に圧縮できる仕組みになっている。

HTTP/2の元になったHTTPの拡張仕様「SPDY」では、「gzip」という汎用の圧縮方式がヘッダ圧縮に採用されていた。しかし、この仕組みを悪用して暗号化された通信内容を推測する「CRIME」(Compression Ratio Info-leak Made Easy)と呼ばれる攻撃手法が考案されたため、安全に圧縮できる専用の方式としてHPACKが新たに開発された。HPACKはIETFによってRFC 7541として標準化され、HTTP/2の標準的なヘッダ圧縮方式として採用されている。後継のHTTP/3では、改良版の「QPACK」という方式が用いられている。

(2026.6.19更新)
 
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。