Google提唱の新プロトコル「SPDY」とは--SPDYで変わること、変わらないこと

杉山貴章(オングス)
2012-02-01 11:22:00
  • このエントリーをはてなブックマークに追加

次期HTTPの有力候補に挙げられたSPDY

 Googleが提唱している「SPDY(スピーディ)」がにわかに注目を集めている。

 SPDYは高速なWebコンテンツ転送を実現するための新しいネットワークプロトコルである。Googleは以前からWebの高速化に極めて熱心に取り組んできた。そのために開発されたプロダクトは、Webサーバ、Webブラウザ、JavaScriptエンジン、各種開発ツールなど、Web技術のあらゆる側面をカバーしている。SPDYもその取り組みの一環であり、ネットワークプロトコルというWebの基幹部分から高速化へのアプローチを進めようというものだ。

 SPDYは2010年に発表され、2011年前半にはブラウザのChromeに実装され、一般のユーザーでも利用できるようになった。このとき、Googleの一部のサービスではChromeとの通信にSPDYを利用していることが明かされている。その後、同11月にはAmazon SilkにおいてSPDYが採用されたほか、12月にはFirefoxの開発版にSPDY実装が追加され、将来バージョンで正式サポートされる可能性が見えてきた。そして2012年1月24日、HTTPの次期バージョンとなるHTTP 2.0の仕様について、そのベースとなる技術の有力候補としてSPDYの名前が挙げられ、注目度が一気に高まることになった。

SPDYで変わるもの、変わらないもの

 SPDYのホワイトペーパーでは、現行のHTTPにおいて通信のボトルネックになっている要因として次の5つの項目が挙げられている。

  • 1回のコネクションにつき1つのリクエストしか送れない
  • リクエストがクライアントからしか開始できない
  • リクエスト/レスポンスヘッダが非圧縮のためヘッダサイズが大きい
  • ヘッダが冗長
  • データ圧縮の使用が強制ではない

 SPDYが目指すのは、これらの問題をプロトコルレベルで解消した通信方式を確立し、Webコンテンツの読み込みを高速化することだ。具体的には、Webページの読み込み速度をHTTPよりも50%短縮するという目標が掲げられている。

 とはいえ、Googleは何も既存のHTTPを完全に置き換えて全く新しい仕組みを構築しようとしているわけではないようだ。SPDYではHTTPのアプリケーションレイヤーとTCPトランスポートレイヤーの間に新しいセッションレイヤー(フレーミングレイヤー)を割り込ませてデータの流れをコントロールする。すなわち、単一のTCPコネクションの上にSPDYがコントロールするHTTPコネクションを確立するということであり、TCPレベルでのネットワーク構成や、既存のWebアプリケーションやWebコンテンツには影響しない(ただし通信の安全性を確保するために標準でSSLが使用される)。あくまでもWebサーバとWebブラウザの実装によって実現できるることがSPDYの特徴だ(図1、出典:SPDY: An experimental protocol for a faster web

図1 SPDYはTCP(SSL)とHTTPの間でデータの流れをコントロールする
図1 SPDYはTCP(SSL)とHTTPの間でデータの流れをコントロールする

 TCPとHTTPの橋渡しとなるSPDYのセッションでは、次のような機能が実現される。

  • 1つのSPDY接続で同時に複数のリクエストを受け付けることができる。リクエスト数に上限はない。
  • クライアントはリクエストに優先度を付けることができる。
  • ヘッダはデフォルトで圧縮され、不要なヘッダは削除される。
  • サーバプッシュ通信(クライアントからのリクエストを待たずに、サーバ側からデータを送信すること)をサポートする。

 この他、サーバプッシュに関連してサーバヒントの機能も提案されている。これはクライアントがロードするデータをサーバ側から提案するというもの。クライアントはリクエスト前にロードするデータの情報を知ることができるため、不要なリクエストを削減することが可能となる。SPDYのセッションレイヤーでは新しいデータフレーミング・フォーマットを用いて通信が行われるが、アプリケーション側からはGETやPOSTなどといった既存のHTTPのメッセージフォーマットを利用することができる。またクッキーやETags、Varyヘッダなどといった従来のセマンティクスも引き続きサポートされる。

  • 新着記事
  • 特集
  • ブログ