
HTTP/2は、HTTP/1.1で長年問題視されていた「リクエストの直列処理」と「テキストヘッダの肥大化」を解決するため、バイナリフレーミングと多重化、ヘッダ圧縮(HPACK)、サーバプッシュなどを導入したWebプロトコルの第二世代です。2015年5月にIETFのRFC 7540として標準化され、Googleが2009年から実験していたSPDYを基盤として設計されました。今日の主要ブラウザとサーバはほぼ全てHTTP/2に対応しており、HTTPS通信の事実上の標準となっています。
この記事の目次
- バイナリフレーミングと多重化
- SPDYからRFC 7540へ
- HTTPSが事実上の前提
- HTTP/1.1とHTTP/3の間で
- まとめ
バイナリフレーミングと多重化

HTTP/2最大の特徴は、テキストベースだったHTTP/1.1をバイナリフレーミングに置き換えたことです。リクエストや応答は「フレーム」と呼ばれる固定形式の単位に分割され、それぞれにストリームIDが付与されて1本のTCPコネクションに多重化されます。従来は1コネクションで1リクエストずつ順番に処理していたため、画像やCSSが多いページでは「HTTPパイプライニング」やドメインシャーディングといった回避策が必要でした。
HTTP/2では同じコネクション上で数十~数百のストリームを同時に並行処理できるため、こうしたハックが不要になりました。ヘッダはHPACK(RFC 7541)で圧縮され、よく出るヘッダはハフマン符号と動的テーブルで数バイトまで縮められます。サーバプッシュ機能では、HTMLを送る前に関連CSSや画像を先回りで送ることもでき、ページ表示速度の改善に寄与する設計となっています。
SPDYからRFC 7540へ

HTTP/2の起源は、Googleが2009年に発表したSPDY(スピーディと読む)プロトコルです。Mike BelsheやRoberto Peonらが中心となり、ChromeとGoogleサーバ間の独自実装で「もしHTTPをゼロから作り直したらどうなるか」を実証実験しました。多重化、ヘッダ圧縮、暗号化前提などのアイデアが固まり、Google実測でページロード時間を最大50%短縮したという結果が、IETFを動かす根拠となりました。
2012年、IETFのHTTPbisワーキンググループがSPDYを次世代HTTPの出発点として採択。3年の議論を経て2015年5月、RFC 7540(HTTP/2)とRFC 7541(HPACK)が同時に公開されました。後にRFC 9113として2022年に改訂されたものの、基本設計は変わっていません。Apache、Nginx、IIS、CDN各社は数か月以内に対応を完了し、Chrome、Firefox、Safari、Edgeなど主要ブラウザもHTTP/2をデフォルトで採用しました。
HTTPSが事実上の前提

RFC 7540では平文版(h2c)も規定されていますが、主要ブラウザは全てHTTPS上のHTTP/2(h2)にしか対応していません。TLS 1.2以上が必須で、ALPN(Application-Layer Protocol Negotiation、RFC 7301)拡張を使ってTLSハンドシェイク中に「h2」または「http/1.1」のどちらを使うかを決めます。暗号スイートも限定され、安全性の低いRC4やCBCモードは禁止されたため、HTTP/2への移行が結果的にWeb全体の暗号化水準も底上げしました。
サーバ運用者にとってはTLS証明書の管理が必須となり、Let's Encryptの自動発行(2016年正式公開)と同時期に普及したことで、「HTTPSが特別ではなく当たり前」という時代へと急速にシフトしました。現代のCDNやロードバランサは外向きをHTTP/2、内向きをHTTP/1.1という構成が一般的で、アプリケーションコードは大半変更不要のままパフォーマンス向上の恩恵を受けられる設計となっています。
HTTP/1.1とHTTP/3の間で

HTTP/2が普及した一方、TCPの上で動く以上ヘッドオブラインブロッキング問題は残りました。ストリームをいくら並列化しても、TCPセグメントが1つ失われると後続の全ストリームが止まってしまうのです。また、サーバプッシュは事前に必要なリソースを予測する難しさや、ブラウザキャッシュとの相性問題から普及せず、ChromeとFirefoxは2022年前後で対応を縮小・廃止しました。これらの課題を解決するために登場したのがHTTP/3です。
HTTP/3はQUIC(UDP上のトランスポート)の上に同じセマンティクスを載せ替えた進化版で、TCPの制約から解放されています。とはいえ、企業ネットワークやレガシークライアントとの互換性のためHTTP/1.1はAPIサーバなどで現役で残り、「1.1で互換、2.0で多くを処理、3.0で最先端」という三世代併存の状況が当面続くと見られています。Webアプリ設計者にとっては「どのバージョンでも動く」が依然として基本姿勢です。
まとめ
HTTP/2はRFC 7540として2015年に標準化され、SPDYの実証実験から多重化とヘッダ圧縮を持ち込みました。TLS必須の設計はWeb全体の暗号化を加速し、HTTPSが「特別な選択」から「当然のデフォルト」へと変わる引き金になりました。HTTP/3が次世代として台頭する今も、HTTP/2は世界中のサーバとブラウザで現役で稼働する主力プロトコルです。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント