Akamai Diversity
Home > May 2017

May 2017 Archives

UDPとTCP

データの大容量化や、モバイルでのインターネットの閲覧の普及により、より良い品質での通信が求められるようになって来ています。 現在、Webの世界で広く用いられているTCPプロトコルは、厳格な通信プロトコルで、通信環境の悪い所でも、再送制御や輻輳制御を実装する事で、信頼性の高い通信を維持する事が可能です。

TCPでは、"スリーウェイハンドシェイク"で送信、受信側のセッションを確立させた後、データパケットの送受信をACKパケットで確認しながら、データが届かない時はデータを再送信する等の制御を行い確実にデータを届けるプロトコルです。

また、一度に送るデータサイズは、小さなデータよりも大きなデータの方が、送受信の制御パケットの数が少なくできるため、転送効率が良くなります。そのため、TCPでは、送信データサイズを、確実に送信できそうな小さなデータからはじめて(スロースタート)、様子をみながら一度に送るサイズ(ウィンドウサイズ)を少しづつ大きくし、転送効率を上げていくなどの制御が行われています。

一方で、一度に大量のデータを送りすぎると、回線が混雑(輻輳)してしまうため、パケットのロスが起きた時は、一旦ウィンドウサイズを小さくするなどの制御も同時に行われ、データを安全、確実に届けるための様々な工夫が実装されています。 udpvstcp.jpg

TCPは非常に良く考えられたプロトコルですが、このような送信側と受信側のきめ細かなやりとりは、やりとりがきめ細やかな分、距離や回線の品質によりネットワークの遅延が大きい時は、データの送受信にかかる時間に大きな影響をもたらす事になります。

TCPの後に開発されたUDPは、音声や動画通信に向けて、低遅延を目指した設計がされています。TCPで実装されていた細かな送受信制御はそぎ落とされており、パケットロスなどデータの到達性については保証されていません。 UDPは、そのようなデータロスが本質的に大きな影響を及ぼさないIP電話やビデオ電話の世界で広く用いられています。

第2回は、キャッシュに関するベストプラクティスについてご紹介しました。
第3回では、キャッシュ対象外のコンテンツにも効果のある、Akamaiによる通信高速化について、お話します。

「遅延」がWebパフォーマンスのボトルネックになることは、第1回で述べました。
 
bestpractice_web_perfromance01_001.png
キャッシュを利用しない場合でも、Akamai経由で通信することで「遅延」の影響を小さくすることが可能です。
  1. TCPコネクション/TLSセッション確立の時間を短縮
  2. TCP最適化による高速通信
  3. 次にリクエストされるコンテンツの先読み
  4. 最適な経路選択により、ネットワーク経路上の混雑を回避