米グーグルは、WebサービスやモバイルOSのAndroidを事業の中心に据えているため、Webアクセスやモバイル端末向けにTCPを最適化する技術を活発に提案している。

 その1つが、「TCPファストオープン」(TFO)である。これは、3ウェイハンドシェークの代替とされる新しいTCPコネクション確立手法である。

Cookieを使って3ウェイハンドシェークを省く
現在提案されているTFO(TCP Fast Open)という方式では、Cookieを利用して2回目以降のコネクション確立時に3ウェイハンドシェークを行わない。これにより、コネクション確立にかかる時間を省いて効率化を図る。
[画像のクリックで拡大表示]

 通常の3ウェイハンドシェークでは前述のように、(1)クライアント側からの接続要求、(2)その接続要求に対するサーバーの確認応答とサーバー側の接続要求、(3)クライアント側からの確認応答――という方法でコネクションを確立している。そのため、コネクション確立のたびにクライアントとサーバーの間で3回のやり取りが発生してしまう。

 TFOでは、Cookieを使って確認応答のやり取りを減らしつつ、接続時の確認を実施する。Cookieとは、クライアントが以前に接続したかどうかサーバーが確認するために使うデータのこと。HTTPでよく使われるが、TFOもそれと同様の使い方をする

 最初の接続時は、通常のTCPと同様に3ウェイハンドシェークを行う。ただし、サーバーはSYN+ACKを返す際に、クライアントのIPアドレスから生成したCookieも一緒にクライアントに送る。クライアントが次にサーバーへ接続するときには、SYNだけではなく、サーバーから受け取ったCookieとアプリのデータを一緒に送る。サーバーはCookieを見てクライアントを確認し、正しければACKを返すことなくデータを受け取って処理する。Cookieにより、クライアントはコネクション確立とデータ送信を一度に行える

▼同様の使い方をする
HTTPのCookie(HTTP Cookie)は、TCPのデータ部分で運ばれるHTTPヘッダーに格納される。一方、TFOで使われるCookie(TFO Cookie)は、TCPヘッダーのオプションフィールドに格納される。
▼一度に行える
接続要求と確認応答の往復を省けることから「0-RTT」とも呼ばれる。

1つのコネクションで並行転送

 グーグルは、TCP接続を集約してWebブラウジングを高速化する「SPDY」という仕組みも開発した。既に搭載したWebブラウザーもある。グーグルの「Google Chrome」や米モジラ・ファウンデーションの「Firefox」などだ。「HTTP/2.0」の基盤技術に取り入れられる。

 Webブラウザーは通常、ページをできるだけ速く表示するために、複数のTCPコネクションをサーバーと結び、ページを構成する複数のデータを同時並行でダウンロードする。しかし、多数のコネクションを同時に張るのは、ブラウザーとサーバーの両方に負担がかかる。

TCPを効率的に使うSPDY、UDPを使ってさらに効率化を図るQUIC
既存のTCPを使ったHTTP通信では、1回のHTTPのリクエスト/レスポンスごとにTCPコネクションを確立する必要があった。SPDYでは、1本のコネクションで複数のHTTPリクエスト/レスポンスをやり取りできるようにした。さらにQUICでは、TCPの代わりにUDPを使うことで、さらなる効率化を図る。
[画像のクリックで拡大表示]

 そこでSPDYでは、1本のTCPコネクションに複数のHTTPリクエスト/レスポンスを集約する。そうすることで、少ない負担でサーバーからのレスポンスを高速化し、画面を素早く表示できる。サーバー側でも複数のTCPコネクションを1本で処理できるため、性能向上が見込める。逆に言えば、同じハードウエア性能でより多くのTCPコネクションを収容できる。

次ページ以降はITpro Active会員(無料)の方のみお読みいただけます。