SPDY(「スピーディ」と発音)[1]は、Webコンテンツを転送するために開発された、廃止された オープン仕様の 通信プロトコルです。[1] SPDYはHTTP/2仕様の基礎となりました。しかし、HTTP/2はSPDYから分岐し、最終的にHTTP/2がSPDYのすべてのユースケースを包含しました。 [2] HTTP/2が標準として承認された後、Google、Mozilla、Appleなどの主要な実装者は、HTTP/2を支持してSPDYを非推奨にしました。2021年以降、最新のブラウザはSPDYをサポートしていません。
Googleは2009年後半にSPDYを発表し、2010年に導入しました。SPDYはHTTPトラフィックを操作し、特にウェブページの読み込み遅延の削減とウェブセキュリティの向上を目標としています。SPDYは圧縮、多重化、優先順位付けによって遅延の削減を実現しますが[1]、これはネットワークとウェブサイトの導入条件の組み合わせに依存します。[3] [4] [5] 「SPDY」という名前は頭字語ではありません。[6]
歴史
HTTP/2 が初めて議論されたのは、SPDY が実装者 (Mozilla や nginx など) の間で支持を集め、HTTP/1.x に比べて大幅な改善が見られるようになったときでした。提案の募集と選定プロセスを経て、SPDY が HTTP/2 のベースとして選ばれました。それ以来、ワーキング グループでの議論と実装者からのフィードバックに基づいて、多くの変更が行われてきました。[2]
2012年7月の時点で[アップデート]、SPDYを開発しているグループは、標準化に向けて取り組んでいることを公式に発表しました(インターネットドラフトとして入手可能)。[7] HTTP/2の最初のドラフトでは、仕様のドラフトと編集の作業ベースとしてSPDYが使用されました。[8] HTTPbisのIETFワーキンググループは、HTTP/2のドラフトをリリースしました。[9] SPDY(draft-mbelshe-httpbis-spdy-00)が出発点として選ばれました。[10] [11]
プロセス全体を通じて、 Mike Belshe 氏と Roberto Peon 氏 を含む SPDY のコア開発者が HTTP/2 の開発に携わってきました。
Chromium [12]、 Mozilla Firefox [13] 、Opera [ 14] 、Amazon Silk、[15]、Safari [16]は当時SPDYへの支持を表明した 。
2015年2月、GoogleはHTTP/2標準の批准に伴いSPDYのサポートを廃止し、SPDYのサポートを撤回すると発表しました。[17] 2015年5月15日、HTTP/2はRFC 7540として正式に批准されました 。
2016年2月11日、Googleは、 HTTP/2を標準化したRFC 7540の1周年となる2016年5月15日以降、ChromeはSPDYをサポートしないことを発表しました。[18]
2019年1月25日、AppleはSPDYを廃止しHTTP/2を導入し、将来のリリースでは削除すると発表しました。[19]
Googleは2016年にリリースされたGoogle Chrome 51でSPDYのサポートを削除しました。 [20] MozillaはFirefox 50でこれを削除しました。 [21] AppleはmacOS 10.14.4とiOS 12.2でこの技術を非推奨にしました。[19]
プロトコルバージョン
SPDYはバージョン管理されたプロトコルです。SPDY制御フレームには、現在のセッションで使用されているプロトコルのバージョンを示す15ビットの専用ビットが含まれています。[22]
- バージョン1: SPDYプロトコルのバージョン1はもう使われていません。[22]
- バージョン2: まもなく[時点? ]廃止予定。Nginxは1.5.10より前のバージョンでSPDY/2をサポートしています。[23] Firefox 28とChromeの最新バージョンではサポートされていません。[24] [25] OpenLiteSpeed 1.1以降ではSPDY/2をサポートしています。[26]
- バージョン3: SPDY v3ではフロー制御のサポートが導入され、圧縮辞書が更新され、特定のフレームから無駄なスペースが削除され、その他のマイナーなバグ修正も行われました。[27] FirefoxはFirefox 15でSPDY v3をサポートしています。[28] OpenLiteSpeed 1.1以降はSPDY/3をサポートしています。[26]
- バージョン3.1: SPDY v3.1ではセッション層フロー制御のサポートが導入され、CREDENTIALSフレーム(および関連するエラーコード)が削除されました。[29] Firefox 27ではSPDY 3.1のサポートが追加されました。[30] OpenLiteSpeed 1.2.7ではSPDY/3.1のサポートが導入されました。[31] Nginx 1.5.10はSPDY/3.1をサポートしています。[32] F5 BIGIP 11.6はSPDY/3.1をサポートしています。[33]
- バージョン4.0: SPDY v4 alpha3はHTTP/2ドラフトにさらに近くなり、HTTP/2ドラフトと統合された新しいストリームフロー制御とエラーコードを備えています。[34]
デザイン
SPDYの目標は、ウェブページの読み込み時間を短縮することです。[35]これは、ウェブページのサブリソースの転送を優先順位付けして多重化することで実現され、クライアントごとに1つの接続のみが必要になります。[1] [36] TLS暗号化はSPDY実装のほぼ普遍的であり、送信ヘッダーは設計上gzipまたはDEFLATE圧縮されています[27](ヘッダーが人間が読めるテキストとして送信されるHTTPとは対照的です)。さらに、サーバーはウェブページの各リソースに対する個別のリクエストを待つ代わりに、コンテンツをヒントしたりプッシュしたりすることもできます。[37]
SPDY はセキュリティのためにSSL/TLS (TLS 拡張ALPN付き)の使用を必要としますが、プレーンTCP経由の操作もサポートしています。SSL が必要なのは、セキュリティのためであり、プロキシを介した通信の際の非互換性を回避するためです。
HTTPとの関係
SPDYはHTTPを置き換えるものではなく、HTTPリクエストとレスポンスがネットワーク経由で送信される方法を変更するものです。[1]つまり、SPDY互換の変換レイヤーを導入すれば、既存のサーバー側アプリケーションはすべて変更せずに使用できます。
SPDY は、実質的に HTTP および HTTPS プロトコルのトンネルです。SPDY 経由で送信される HTTP リクエストは、処理、トークン化、簡素化、圧縮されます。たとえば、各 SPDY エンドポイントは、過去のリクエストで送信されたヘッダーを追跡し、変更されていないヘッダーの再送信を回避できます。送信する必要があるヘッダーは圧縮されます。
プロトコルサポート
HTTPS内で使用する場合、SPDYはTLS拡張機能のNext Protocol Negotiation (NPN) [38]またはApplication-Layer Protocol Negotiation (ALPN) [39]を必要とするため、ブラウザとサーバーのサポートはHTTPSライブラリに依存します。
OpenSSL 1.0.1以降ではNPNが導入されています。[40] NSSとTLSLite用にNPNサポートを追加するパッチも作成されています。 [41]
Microsoft のセキュリティ サポート プロバイダー インターフェイス(SSPI) は、TLS 実装に NPN 拡張を実装していません。このため、最新の .NET Framework バージョンに SPDY を含めることができません。SPDY 仕様は改良中であり、HTTP/2には SPDY 実装が含まれることが予想されるため、HTTP/2 が完成した後に Microsoft がサポートをリリースすることが予想されます。
クライアント(ブラウザ)のサポートと使用方法
- Google Chrome / Chromium。[42] [43] ChromeのSPDYセッションは、 URI :で検査できます。Google Chromeには、 WebSocket over SPDYの初期の実験的実装を有効にするコマンドラインスイッチ( )
chrome://net-internals/#events&q=type:SPDY_SESSION%20is:activeがあります。 [44] SPDYプロトコル機能は、ローカルページで「SPDY/4を有効にする」設定を切り替えることで有効/無効にできます。Chromiumは、2016年初頭にSPDYとNext Protocol Negotiationのサポートを削除し、 HTTP/2とALPNに移行する予定です。[45] 2015年2月のバージョン40.x以降、ChromeはすでにSPDY/3のサポートを廃止しており、今後はSPDY/3.1のみをサポートします。これにより、Google ChromeからアクセスしたApacheのWebサイトはSPDYをサポートしていません。[46]--enable-websocket-over-spdychrome://flags - Firefoxはバージョン11からSPDY 2をサポートし、13以降ではデフォルトで有効になっています。( SeaMonkeyバージョン2.8以降も同様です。) SPDYプロトコル機能は、network.http.spdy.enabled変数を切り替えることで有効/無効にすることができます
about:config。[13] Firefox 15ではSPDY 3のサポートが追加されました。 [28] Firefox 27ではSPDY 3.1のサポートが追加されました。[30] Firefox 28ではSPDY 2のサポートが削除されました。 [24]about:networking(またはHTTP/2とSPDYインジケーターアドオン) [47]は、WebサイトがSPDYを使用しているかどうかを示します。 - Operaブラウザはバージョン12.10からSPDYのサポートを追加しました。[48]
- Internet Explorer 11ではSPDYバージョン3のサポートが追加されましたが、[49] [50] Windows 7バージョンではサポートされていません。[51] Windows 8.1とInternet Explorer 11の一部のユーザーが経験した問題は、最初の読み込み時にGoogleが「ページが見つかりません」と表示するが、再読み込みすると問題がないというものです。この問題を解決する1つの方法は、[インターネット オプション] > [詳細設定]でSPDY/3を無効にすることです。[52]バージョン11以降、IEはHTTP/2を採用するため、SPDYのサポートを廃止します。[53]
- Kindle Fire用のAmazonのSilkブラウザは、WebページのレンダリングのためにEC2サービスと通信するためにSPDYプロトコルを使用しています。 [54]
- Safari 8およびOS X 10.10とiOS 8のサードパーティアプリケーションでは、SPDY 2、3、3.1のサポートが追加されました。[55]
サーバーのサポートと使用方法
2021年5月現在[アップデート]、全ウェブサイトの約0.1%がSPDYをサポートしていますが、[56]これはHTTP/2への移行によるところが大きいです。 2016年には、NGINXとApache [57]がSPDYトラフィックの主要プロバイダーでした。 [58] 2015年に、NGINX 1.9.5はHTTP/2を採用し、SPDYのサポートを廃止しました。[59]
一部のGoogleサービス(Google検索、Gmail、その他のSSL対応サービスなど)では、利用可能な場合にSPDYを使用します。[60] Googleの広告もSPDY対応サーバーから配信されています。[61]
主要なウェブ プレーヤーによる SPDY サポートの簡単な歴史:
- 2009年11月、Googleはウェブの速度を向上させるための社内プロジェクトとしてSPDYを発表しました。[62]
- 2010年9月、Googleはすべてのプラットフォーム上のChrome 6でSPDYをリリースしました。[63]
- 2011年1月、GoogleはすべてのGoogleサービスにSPDYを導入しました。[64]
- 2012年3月、Twitterは自社のサーバー上でSPDYを有効にし、当時SPDYを導入しているサイトとしては2番目に大きいサイトとなった。[65]
- 2012年3月、オープンソースのJetty Web Serverはバージョン7.6.2と8.1.2でSPDYをサポートすることを発表しました。[66]一方、Node.js、[67] [68] Apache (mod_spdy)、[69] curl、[70] Nginx [71]などの他のオープンソースプロジェクトもSPDYサポートの実装に取り組んでいました。
- 2012年4月、GoogleはApacheサーバー向けのSPDYパッケージの提供を開始し、いくつかの小規模なウェブサイトがSPDYサポートを提供するようになりました。[72]
- 2012年5月、F5ネットワークスはBIG-IPアプリケーション配信コントローラでSPDYをサポートすることを発表しました。[73]
- 2012年6月、オープンソースウェブサーバーNginxはSPDYのサポートを発表しました。[74]
- 2012年7月、FacebookはSPDYの実装計画を発表しました。[75] 2013年3月までに、SPDYはFacebookのパブリックウェブサーバーの一部に実装されました。[76]
- 2012年8月、WordPress.comは、ホストされているすべてのブログでSPDY(Nginxを使用)をサポートすることを発表しました。[77]
- 2013年6月、LiteSpeed TechnologiesはオープンソースHTTPサーバーであるOpenLiteSpeedでSPDY/2とSPDY/3をサポートすると発表しました。[26] SPDY/3.1のサポートは2013年11月に発表されました。[31]
- 2014年1月、SynologyはSPDYが新しいDSM 5.0に含まれていることを発表しました。[78]
- 2014年2月、 nginxを使用するCloudFlareは、 SSL/TLS証明書を持つすべての顧客に対してSPDY v3.1の自動サポートを発表しました。[79]
- 2014年5月、nginxを使用するMaxCDNは、顧客のプルゾーン設定とAPIを介してSPDY v3.1をサポートすることを発表しました。[80]
- 2014年10月、YahooはYahooホームページ(www.yahoo.com)でSPDYのサポートを発表しました。
- 2015年9月、最新バージョンのNginxウェブサーバはSPDYのサポートを廃止し、HTTP/2を採用した[59]。
- 2016年5月、CloudFlareはNginxウェブサーバーのパッチをリリースし、そのパッチはHTTP/2とSPDYを同時にサポートしました。[81]
W3Techsによると、2021年5月現在[アップデート]、SPDY対応のウェブサイトのほとんどはnginxを使用しており、LiteSpeedウェブサーバーが2番目に多いとのことです。[58]
参照
- HTTP パイプライン
- HTTP 持続接続
- HTTP スピード + モビリティ
- QUIC – Googleのもう一つのトランスポート層通信プロトコル。HTTP/3の基盤となるプロトコル。[82]
- クライアントへの画像転送に最適化されたプロトコル(OPTIC)
参考文献
- ^ abcde 「SPDY: より高速な Web のための実験的プロトコル」。Chromium開発者ドキュメント。2009年 11 月 13 日閲覧。
- ^ ab 「HTTP/2 よくある質問」。http2.github.io。
- ^ Elkhatib, Yehia; Tyson, Gareth; Welzl, Michael (2014). 2014 IFIP ネットワーキング カンファレンス. pp. 1–9. CiteSeerX 10.1.1.698.2343 . doi :10.1109/IFIPNetworking.2014.6857089. ISBN 978-3-901882-58-6. S2CID 13841087。
- ^ Podjarny, Guy. 「Not as SPDY as You Thought」。2012年10月12日時点のオリジナルよりアーカイブ。2012年10月12日閲覧。
- ^ Abdelsalam, Ahmed; Celandroni, Nedo; Collina, Matteo; Cruickshank, Haitham; Fairhurst, Gorry; Ferro, Erina; Gotta, Alberto; Luglio, Michele; Roseti, Cesare (2015-07-01). 「ブロードバンド GEO 衛星ネットワーク上の将来の Web テクノロジとプロトコルに関する詳細な分析」. International Journal of Satellite Communications and Networking . 33 (5): 451–472. doi :10.1002/sat.1120. ISSN 1542-0981.
- ^ 「SPDY よくある質問」 。Chromiumプロジェクト。2015年 2 月 23 日閲覧。
スピードを表す名前にしたかったのです。SPDY (「SPeeDY」と発音) はスピードを表すだけでなく、圧縮によってスピードが向上することも示しています。
- ^ 「IETF の SPDY プロトコル」 。2012年 2 月 8 日閲覧。
- ^ Nottingham, Mark. 「HTTP/2 の最初のドラフト」。HTTPワーキング グループ メーリング リスト。2012年12 月 2 日閲覧。
- ^ Nottingham, Mark. 「HTTP の今後」 。2012年 3 月 31 日閲覧。
- ^ 「転送: [new-work] WG レビュー: Hypertext Transfer Protocol Bis (httpbis)」.
- ^ 「HTTPbisワーキンググループがHTTP/2.0の検討を開始」InfoQ 2012年4月28日2012年8月9日閲覧。
- ^ 「Google サーバー上の SPDY?」2012 年 2 月 28 日閲覧。
- ^ ab 「Mozilla バグ 528288 - SPDY プロトコルの実装」。
- ^ 「Opera: SPDY プロトコルの組み込みサポート」。2012年 11 月 6 日閲覧。
- ^ 「IE11 SPDY/3 が確認されました」。2013 年 6 月 25 日。2013 年 6 月 25 日閲覧。
- ^ 「Apple — プレス情報 — Apple、OS X Yosemiteを発表」。2014年6月2日。 2014年6月2日閲覧。
- ^ Chris Bentzel & Bence Béky (2015 年 2 月 9 日)。「Hello HTTP/2, Goodbye SPDY」。
- ^ Béky, Bence (2016 年 2 月 11 日)。「SPDY から HTTP/2 への移行」。2016 年2 月 12 日閲覧。
- ^ ab Marshall, Scott (2019-01-25). 「レガシー SPDY プロトコル サポートの削除」WebKit . 2019 年 3 月 7 日閲覧。
- ^ 「SPDY から HTTP/2 への移行」。Chromiumブログ。2022年 2 月 5 日閲覧。
- ^ "1287132 - SPDY 3.1 を無効にする". bugzilla.mozilla.org。
- ^ ab SPDY プロトコル - ドラフト 2: 「現在、有効な文字列は「spdy/2」のみです (spdy/1 はどこにも実装されていません)」。
- ^ 「モジュール ngx_http_spdy_module」。Nginx.org 。 2014年6月3日閲覧。
- ^ ab 「Firefox ベータ版ノート — デスクトップ」 2014 年 2 月 6 日. 2014 年 2 月 7 日閲覧。
- ^ 「問題 303957 - chromium — Chrome で SPDY/3 以上のみをサポートするようにする — Web の発展を支援するオープンソース プロジェクト - Google Project Hosting」。2013 年 10 月 3 日。2014年 2 月 19 日閲覧。
- ^ abc OpenLiteSpeed 1.1 (SPDY 付き!) 2013 年 8 月 12 日閲覧。
- ^ ab 「SPDYプロトコル - ドラフト3」 。 2012年8月25日閲覧。
- ^ ab 「Firefox 15 — リリースノート」 。 2012年9月3日閲覧。
- ^ 「SPDYプロトコル — ドラフト3.1」 。 2013年11月17日閲覧。
- ^ ab "Firefox Notes Desktop". 2014-02-04 . 2014-02-05閲覧。
- ^ ab OpenLiteSpeed が SPDY/3.1 をサポートする最初の Web サーバーになりました。2014 年 1 月 10 日閲覧。
- ^ NGINX が SPDY/3.1 のサポートを発表 2014 年 2 月 4 日閲覧。
- ^ F5 Bigip 11.6.0 リリースノート 2015-03-10 取得。
- ^ 「今後の SPDY/4 の変更により、HTTP/2 ドラフトとの同期が強化される」2014 年2 月 27 日閲覧。
- ^ 「2 倍高速な Web」。公式 Google Chromium ブログ。2009 年 11 月 11 日。2009年 11 月 13 日閲覧。
- ^ Iljitsch van Beijnum (2009-11-12). 「SPDY: Google は HTTP を廃止して Web の高速化を目指す」Ars Technica . 2009-11-13閲覧。
- ^ ミルコ・リンドナー (2009 年 11 月 13 日)。 「Google stellt HTTP-Alternative SPDY vor」(ドイツ語)。2011 年 10 月 21 日に取得。
- ^ NPN プロトコルと、HTTPS 経由で SPDY をトンネリングする必要性についての説明。
- ^ 「ImperialViolet - NPN と ALPN」www.imperialviolet.org . 2021年6月8日閲覧。
- ^ Openssl 1.0.1 の変更ログ。
- ^ TLS Next Protocol Negotiation. セクション: 実装 Archived 2012-07-30 at the Wayback Machine .
- ^ Chromium SPDY クライアントの実装。
- ^ Chromium: SPDY プロキシの例 Archived 2017-09-19 at the Wayback Machine .
- ^ Chromium コマンドラインスイッチのリスト。
- ^ Bentzel, Chris; Béky, Bence (2015 年 2 月 9 日)。「Hello HTTP/2, Goodbye SPDY」。Chromium ブログ。2015年2 月 9 日閲覧。
- ^ 「Google グループ」。groups.google.com。
- ^ 「HTTP/2 および SPDY インジケーター」。Firefoxのアドオン。Mozilla。2014 年 11 月 26 日。2015 年 2 月 12 日閲覧。
- ^ David Honneffer、ドキュメンテーションスペシャリスト。 「Opera: Opera 12.10 変更履歴」。
- ^ 「WebGL、SPDY/3、新しい開発ツールなどが Win 8.1 の IE11 に搭載されることが確認」Microsoft ニュース。
- ^ 「IE11 の変更点」。Microsoft。
- ^ 「Microsoft、Windows 7 向け Internet Explorer 11 をリリース」2013 年 11 月 7 日。
- ^ 「Windows 8.1 の Web プロキシ経由で IE11 に Google が初回ロードされない? SPDY サポートをオフにしてください。 | The Angry Technician」。Angrytechnician.wordpress.com。2014 年 1 月 16 日。2014年 2 月 19 日閲覧。
- ^ Rob Trace、David Walp (2014 年 10 月 8 日)。「HTTP/2: 待望の続編」。Microsoft。2014年10 月 8 日閲覧。
- ^ Ryan Paul (2011 年 9 月 28 日). 「Amazon の Silk Web ブラウザは古いアイデアに新たな工夫を加える」 。2011年 10 月 21 日閲覧。
- ^ 「Foundation Networking の新機能」(PDF)。Apple inc . 2014 年 7 月 7 日閲覧。
- ^ 「ウェブサイトでのSPDYの使用」w3techs.com . 2021年5月4日閲覧。
- ^ 「Web サイトにおける Web サーバーの使用」w3techs.com . 2016 年 7 月 26 日閲覧。
- ^ ab 「オープンソースのNGINX 1.9.5でHTTP/2がサポートされる - NGINX」。2015年9月22日。
- ^ spdy-dev メーリング リスト: Google サーバー上の SPDY?。
- ^ Google が SPDY プロトコルで Web ページのダウンロードを高速化 - クラウド コンピューティング - ニュース & レビュー。eWeek.com (2011-06-20)。2013 年 11 月 21 日に取得。
- ^ 「リサーチブログ: 2倍高速なWeb」。リサーチブログ。
- ^ Ido Safruti (2011-06-15). 「Fast から SPDY へ — Velocity 2011」。
- ^ 「Google グループ」。
- ^ Twitter が SPDY を採用 Archived 2012-03-11 at the Wayback Machine .
- ^ Jetty 機能 SPDY。
- ^ "indutny/node-spdy · GitHub". Github.com . 2012年5月10日閲覧。
- ^ Fedor Indutny (2012-01-24). 「What the $%@! is SPDY — blog.nodejitsu.com — scaling node.js applications one callback at a time」. blog.nodejitsu.com . 2012-05-10閲覧。
- ^ 「mod-spdy — Apache SPDY モジュール — Google プロジェクト ホスティング」。2012年 5 月 10 日閲覧。
- ^ "libspdy". daniel.haxx.se. 2011-10-18 . 2012-05-10に閲覧。
- ^ 「@DeviaVir 順調に進んでいます ;) 今のところ予定通りで、5月末までにリリースされる予定です」。Twitter。
- ^ 「mod_spdy — mod_spdy — Google Developers」 。 2012年5月10日閲覧。
- ^ F5 は、初の統合型 SPDY ゲートウェイにより、組織のユーザー エクスペリエンスの向上と管理の簡素化を支援 | F5 について | F5 ネットワーク Archived 2012-06-11 at the Wayback Machine . F5.com (2012-05-08). 2013-11-21 に取得。
- ^ 「nginx での SPDY ドラフト 2 実装の発表」。Nginx。2012 年 6 月 15 日。2012年 6 月 16 日閲覧。
- ^ Beaver, Doug. 「HTTP2 Expression of Interest」 W3C . 2012 年7 月 15 日閲覧。
- ^ Finley, Klint. 「Facebook が SPDY に一歩近づく」Wired 。2013年3 月 18 日閲覧。
- ^ 「すべての http://WordPress.com/ ホストサイトで #SPDY を有効にしました」。2012 年 8 月 28 日。2012 年 8 月 28 日閲覧。
- ^ [1] DSM 5.0ベータ
- ^ John Graham-Cumming (2014-02-17). 「最新のプロトコルで最新情報を把握: SPDY/3.1 | CloudFlare ブログ」。Blog.cloudflare.com。2014-02-19に閲覧。
- ^ Justin Dorfman. 「Now Serving: SPDY 3.1」. blog.maxcdn.com . 2014年5月20日閲覧。
- ^ 「NGINX HTTP/2 + SPDY コードをオープンソース化」 2016 年 3 月 13 日. 2016 年 8 月 5 日閲覧。
- ^ Ghedini, Alessandro; Lalkaka, Rustam (2019 年 9 月 26 日)。「HTTP/3: 過去、現在、そして未来」。Cloudflare ブログ。2020年1 月 16 日閲覧。
外部リンク
- SPDY ドキュメント
- SPDY: GoogleはHTTPを廃止してウェブを高速化したい
- SPDYホワイトペーパー
- Apache SPDY モジュール
- SPDYのレビューと分析
