HTTP/2

HTTP/2 (Hypertext Transfer Protocol version 2) は、World Wide Webで用いられているHTTPのバージョンの一つである。

HTTP/2はIETFのHypertext Transfer Protocol Bis (httpbis)ワーキンググループにおいて制定され、2015年2月17日に正式な仕様として承認されHTTP/2 Approved | IETF Blog、2015年5月に  として文書化された。HTTP/2はHTTP/1.1が1999年6月に  として規定されて以来16年ぶりのバージョンアップである。

2022年、内容を更新する  が公開された。

プロトコル概要
HTTP/2の目標はHTTP/1.1のトランザクション・セマンティクスとの完全な後方互換性を維持したまま非同期な接続の多重化、ヘッダ圧縮、リクエストとレスポンスのパイプライン化を実現することである。Googleによって立ち上げられ、全ての主要なウェブブラウザが対応しているHTTP互換のプロトコルSPDYの人気が高まっていることに対応するために開発された。

 高速化技術 
下記の技術により従来より高速の通信を実現している。
 HTTPヘッダの圧縮。（HPACKで圧縮し従来はGZIPで圧縮していたが、CRIME攻撃の出現によりHPACKに切り替えられた。、二度目以降の通信は差分のみ送信する）
 HTTP/2サーバプッシュ通信。
 HTTPパイプライン
 HoL (Head-of-Line) ブロッキング問題（HTTP/1.1で発生していた）の解消。
 一つのTCPソケット上に複数のリクエストが発生した時に最適に通信を行う。

 対応状況 
 ウェブブラウザ 
下記ウェブブラウザが対応している。ただし、全てHTTP/2 over TLSのみである。
 Google Chrome (30は設定が必要Issue 230124 - chromium - Support SPDY/4 - An open-source project to help move the web forward. - Google Project HostingHTTP/2 - The Chromium Projects）
 Mozilla Firefox (34から標準で有効34 サイト互換性情報 - Mozilla | MDN)
 Microsoft Windows 10上のInternet Explorer 11
 Microsoft Edge
 Opera
 Safari 9から

 サーバ 
 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対応を目的として1から設計されている) 
 lighttpd 1.4.56

 その他 
 GitHub HTTP/2 wikiを参照

 経緯 
httpbisワーキンググループはGoogleのSPDYプロトコル、（SPDYを基にした）マイクロソフトのHTTP Speed+Mobility、Network-Friendly HTTP Upgradeを検討した。2012年7月にFacebookはそれぞれの提案にフィードバックを行い、HTTP/2はSPDYを基にすることを推奨した。SPDYをそのままコピーしたものを基にしたHTTP/2の最初のドラフトが2012年11月に発行された。

これらのプロトコルにおけるアーキテクチャ上の提案の多くは以前にW3CのHTTP-NGワーキンググループで調査済みであった。HTTP-NGプロジェクトの活動は1998年に休止された。

 開発マイルストーン 
IETFのHypertext Transfer Protocol Bis (httpbis) ワーキンググループによる。
 状態  マイルストーン 完了  最初のHTTP/1.1改訂版インターネットドラフト 完了  最初のHTTPセキュリティプロパティインターネットドラフト 完了  HTTP/2.0のための提案の呼びかけ 完了  ワーキンググループによるHTTP/1.1のための最終案内 (Last Call) 完了  draft-mbelshe-httpbis-spdy-00を基にしたHTTP/2.0の最初のワーキンググループドラフト 実施/延期  ワーキンググループによるHTTPセキュリティプロパティのための最終案内 (Last Call) 完了  標準化提案 (Proposed Standard) として検討されるためにIESGにHTTP/1.1改訂版を提出  完了  ワーキンググループによるHTTP/2のための最終案内 (Last Call) 2014年11月  標準化提案 (Proposed Standard) として検討されるためにIESGにHTTP/2を提出 2015年2月17日  IETFにて仕様として承認され、RFCとしての文章化へと進む 2015年5月14日  として文書化

 名称 
ワーキンググループにおいて当初はHTTP 2.0という名称で制定作業を進めていたが、後にHTTP/2と置き換えることとなった。。

 出典 

 関連項目 
 HTTPパイプライン
 HTTP/3

 外部リンク 

 HTTP/2 JP 
 HTTP/2 Japan Local Activity 
 仕様
 : Hypertext Transfer Protocol Version 2 (HTTP/2)
 : Hypertext Transfer Protocol Version 2 (HTTP/2): 旧バージョン
 : HPACK: Header Compression for HTTP/2
 HTTP/2 RFC/7540の日本語訳

Category:HTTP
Category:アプリケーション層プロトコル
Category:World Wide Web
7540