HTTP/2

HTTP > HTTP/2 HTTP/2 (Hypertext Transfer Protocol version 2) は、World Wide Webで用いられているHypertext Transfer Protocolのバージョンの一つである。 HTTP/2はIETFのHypertext Transfer Protocol Bis (httpbis)ワーキンググループにおいて制定され、2015年2月17日に正式な仕様として承認され、2015年5月に RFC 7540 として文書化された。HTTP/2はHTTP/1.1が1999年6月に RFC 2616 として規定されて以来16年ぶりのバージョンアップである。 2022年、内容を更新する RFC 9113 が公開された。 HTTP/2の目標はHTTP/1.1のトランザクション・セマンティクスとの完全な後方互換性を維持したまま非同期な接続の多重化、ヘッダ圧縮、リクエストとレスポンスのパイプライン化を実現することである。Googleによって立ち上げられ、全ての主要なウェブブラウザが対応しているHTTP互換のプロトコルSPDYの人気が高まっていることに対応するために開発された。 下記の技術により従来より高速の通信を実現している。 HTTPヘッダの圧縮。（HPACKで圧縮し、二度目以降の通信は差分のみ送信する） HTTP/2サーバープッシュ通信。 HTTPパイプライン HoL (Head-of-Line) ブロッキング問題（HTTP/1.1で発生していた）の解消。 一つのTCPソケット上に複数のリクエストが発生した時に最適に通信を行う。 下記ウェブブラウザが対応している。ただし、全てHTTP/2 over TLSのみである。 Google Chrome (30は設定が必要） Mozilla Firefox (34から標準で有効) 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 2.0という名称で制定作業を進めていたが、後にHTTP/2と置き換えることとなった。また、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日閲覧。 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の日本語訳