HTTP/2は、
World Wide Webで利用されるHTTP(
Hypertext Transfer Protocol)の次世代バージョンです。従来のHTTP/1.1が抱えていた課題を解決し、Webページの読み込み速度を大幅に向上させることを目的としています。
2015年に正式に仕様が承認され、RFC 7540として文書化されました。これは、HTTP/1.1がRFC 2616として規定されて以来、約16年ぶりのメジャーアップデートとなります。
2022年には、RFC 9113として内容が更新されました。
プロトコルの概要
HTTP/2の主な目標は、HTTP/1.1のトランザクション・セマンティクスとの完全な後方互換性を維持しながら、以下の点を実現することです。
非同期な接続の多重化: 1つのTCP接続上で複数のリクエストとレスポンスを同時に処理できるようにします。
ヘッダー圧縮: 通信のたびに送受信されるHTTPヘッダーを圧縮することで、データ転送量を削減します。
リクエストとレスポンスのパイプライン化: リクエストを連続して送信し、レスポンスを順不同で受信することで、効率的な通信を実現します。
このプロトコルは、Googleが開発したSPDYプロトコルがベースとなっており、主要なWebブラウザで広くサポートされています。
高速化技術
HTTP/2では、以下の技術を用いることで、従来のHTTP/1.1と比較して高速な通信を実現しています。
HTTPヘッダー圧縮 (HPACK): ヘッダー情報を圧縮し、初回の通信以降は差分のみを送信することで、データ量を削減します。
HTTP/2サーバープッシュ: サーバーがクライアントからのリクエストを待たずに、必要なリソースを先回りして送信します。
HTTPパイプライン: 複数のリクエストを同時に送信し、応答を効率的に受信します。
HoL (Head-of-Line) ブロッキング問題の解消: HTTP/1.1で発生していた、先頭のパケット遅延による後続パケットの遅延を防ぎます。
1つのTCPソケット上の最適化: 複数のリクエストが発生した場合でも、効率的な通信を実現します。
対応状況
Webブラウザ
以下の主要なWebブラウザがHTTP/2に対応しています(全てTLS経由のみ)。
Google Chrome (30以降、設定が必要な場合あり)
Mozilla Firefox (34以降、標準で有効)
Microsoft Internet Explorer 11 (Windows 10)
Microsoft Edge
Opera
Safari 9以降
サーバー
以下の主要な
WebサーバーがHTTP/2に対応しています。
IIS 10.0 (Windows 10, Windows Server 2016)
OpenLiteSpeed 1.3.11 および 1.4.8
LiteSpeed Web Server 5.0
Akamai Edge Servers
Amazon CloudFront
nginx 1.9.5以降
Apache 2.4.17以降
H2O (HTTP/2に特化したサーバー)
lighttpd 1.4.56
開発の経緯
HTTP/2は、IETFのhttpbisワーキンググループで開発されました。この過程で、GoogleのSPDYプロトコル、マイクロソフトのHTTP Speed+Mobility、Network-Friendly HTTP Upgradeなどの提案が検討されました。
最終的に、Facebookからのフィードバックを受けて、SPDYプロトコルをベースとしたHTTP/2の開発が進められました。HTTP/2の最初のドラフトは2012年11月に発行されました。
また、これらのプロトコルのアーキテクチャ上の提案は、以前にW3CのHTTP-NGワーキンググループで調査されていましたが、このプロジェクトは1998年に活動を休止しています。
開発マイルストーン
IETFのHypertext Transfer Protocol Bis (httpbis) ワーキンググループによって開発されました。
名称について
開発当初は「HTTP 2.0」という名称で進められていましたが、後に「HTTP/2」に変更されました。また、GoogleはSPDYを「SPDY/4」と呼ぶこともありました。
出典
GitHub HTTP/2 wiki
関連項目
HTTPパイプライン
HTTP/3
外部リンク
公式ウェブサイト
HTTP/2 JP (日本語)
HTTP/2 Japan Local Activity (日本語)
仕様
RFC 9113: Hypertext Transfer Protocol Version 2 (HTTP/2)
RFC 7540: Hypertext Transfer Protocol Version 2 (HTTP/2): 旧バージョン
RFC 7541: HPACK: Header Compression for HTTP/2
HTTP/2 RFC/7540の日本語訳