HTTP/2
HTTP/2 (Hypertext Transfer Protocol version 2) は、World Wide Webで用いられているHypertext Transfer Protocolのバージョンの一つである。
通信プロトコル | |
開発者 | IETF |
---|---|
導入 | 2015年5月14日 |
派���元 | SPDY |
派生先 | HTTP/3 |
OSI階層 | アプリケーション層 |
RFC | RFC 9113 |
HTTP/2はIETFのHypertext Transfer Protocol Bis (httpbis)ワーキンググループにおいて制定され[1]、2015年2月17日に正式な仕様として承認され[2]、2015年5月に RFC 7540 として文書化された。HTTP/2はHTTP/1.1が1999年6月に RFC 2616 として規定されて以来16年ぶりのバージョンアップである。
プロトコル概要
編集HTTP/2の目標はHTTP/1.1のトランザクション・セマンティクスとの完全な後方互換性を維持したまま非同期な接続の多重化、ヘッダ圧縮、リクエストとレスポンスのパイプライン化を実現することである。Googleによって立ち上げられ[3]、全ての主要なウェブブラウザが対応しているHTTP互換のプロトコルSPDYの人気が高まっていることに対応するために開発された[4]。
高速化技術
編集下記の技術により従来より高速の通信を実現している。
- HTTPヘッダの圧縮。(HPACKで圧縮し[5]、二度目以降の通信は差分のみ送信する)
- HTTP/2サーバープッシュ通信。
- HTTPパイプライン
- HoL (Head-of-Line) ブロッキング問題(HTTP/1.1で発生していた)の解消。
- 一つのTCPソケット上に複数のリクエストが発生した時に最適に通信を行う。
対応状況
編集ウェブブラウザ
編集下記ウェブブラウザが対応している。ただし、全てHTTP/2 over TLSのみである。
- Google Chrome (30は設定が必要[6][7])
- Mozilla Firefox (34から標準で有効[8])
- Microsoft Windows 10上のInternet Explorer 11
- Microsoft Edge[9]
- Opera
- Safari 9から
サーバ
編集- IIS 10.0(Windows 10,Windows Server 2016)[10]
- OpenLiteSpeed 1.3.11 および 1.4.8[11]
- LiteSpeed Web Server 5.0[12]
- Akamai Edge Servers
- Amazon CloudFront[13]
- nginx 1.9.5 [14]
- Apache 2.4.17 [15]
- H2O (HTTP/2対応を目的として1から設計されている) [16]
- lighttpd 1.4.56[17]
その他
編集経緯
編集httpbisワーキンググループはGoogleのSPDYプロトコル、(SPDYを基にした)マイクロソフトのHTTP Speed+Mobility[3]、Network-Friendly HTTP Upgradeを検討した[18]。2012年7月にFacebookはそれぞれの提案にフィードバックを行い、HTTP/2はSPDYを基にすることを推奨した[19]。SPDYをそのままコピーしたものを基にしたHTTP/2の最初のドラフトが2012年11月に発行された[20]。
これらのプロトコルにおけるアーキテクチャ上の提案の多くは以前にW3CのHTTP-NGワーキンググループで調査済みであった。HTTP-NGプロジェクトの活動は1998年に休止された[21]。
開発マイルストーン
編集IETFのHypertext Transfer Protocol Bis (httpbis) ワーキンググループによる[1]。
状態 | マイルストーン |
---|---|
完了 | 最初の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としての文章化へと進む[2] |
2015年5月14日 | RFC 7540として文書化[22] |
名称
編集ワーキンググループにおいて当初はHTTP 2.0という名称で制定作業を進めていたが、後にHTTP/2と置き換えることとなった[23]。また、GoogleはSPDY/4という呼び方もしていた。
出典
編集- ^ a b “Hypertext Transfer Protocol Bis (httpbis) - Charter”. IETF (2012年). 2013年9月4日閲覧。
- ^ a b HTTP/2 Approved | IETF Blog
- ^ a b Sebastian Anthony (2012年3月28日). “S&M vs. SPDY: Microsoft and Google battle over the future of HTTP 2.0”. ExtremeTech. 2013年9月4日閲覧。
- ^ Jerome Louvel (2011年10月6日). “Can the rise of SPDY threaten HTTP?”. Restlet. 2013年9月4日閲覧。
- ^ 従来はGZIPで圧縮していたが、CRIME攻撃の出現によりHPACKに切り替えられた。
- ^ Issue 230124 - chromium - Support SPDY/4 - An open-source project to help move the web forward. - Google Project Hosting
- ^ HTTP/2 - The Chromium Projects
- ^ Firefox 34 サイト互換性情報 - Mozilla | MDN
- ^ “Internet Explorer 互換性クックブック > ブラウザーの機能と互換性の変更点 > SPDY/3 から HTTP/2 への置き換え (Windows)”. MSDNライブラリ. 2017年4月24日閲覧。
- ^ “HTTP/2: The Long-Awaited Sequel”. MSDN IEBlog. Microsoft Corporation (October 8, 2014). 2015年5月19日閲覧。
- ^ “OpenLiteSpeed 1.4.5 change log”. LiteSpeed Technologies, Inc. (2015年2月26日). 2015年5月19日閲覧。
- ^ “LSWS 5.0 Is Out – Support for HTTP/2, ESI, LiteMage Cache” (April 17, 2015). 2015年5月19日閲覧。
- ^ “Amazon CloudFront now supports HTTP/2”. 2018年1月13日閲覧。
- ^ “Module ngx_http_v2_module”. nginx.org (2015年9月22日). 2015年9月24日閲覧。
- ^ “ChangeLog for 2.4”. apache.org (2015年10月13日). 2015年10月13日閲覧。
- ^ “H2O - the optimized HTTP/2 server”. h2o.examp1e.net. 2015年12月16日閲覧。
- ^ “1.4.56 - Lighttpd - fly light”. Lighttpd (2020年11月29日). 2022年6月19日閲覧。 “Important changes TTP/2, TLS library options, brotli, bugfixes”
- ^ W. Tarreau (2012年3月29日). “draft-tarreau-httpbis-network-friendly-00 - Proposal for a Network-Friendly HTTP Upgrade”. 2013年9月4日閲覧。
- ^ Doug Beaver (2012年7月15日). “HTTP2 Expression of Interest”. 2013年9月4日閲覧。
- ^ Dio Synodinos (2012年11月30日). “HTTP 2.0 First Draft Published”. InfoQ. 2013年9月4日閲覧。
- ^ “Final HTTP-NG Activity Statement”. World Wide Web Consortium. 2013年9月4日閲覧。
- ^ The RFC Editor Team (14 May 2015). "RFC 7540 on Hypertext Transfer Protocol Version 2 (HTTP/2)". ietf-announce (Mailing list). 2015年5月15日閲覧。
- ^ “Is it HTTP/2.0 or HTTP/2?”. 2014年9月15日閲覧。