ストリーミング(「YouTube」など)の仕組み | DTM

DTM

DTM Blog

インターネットを利用するほとんどの人がストリーミングを使用した経験があると思います。

ストリーミングという言葉にピンとこない方も多いかもしれませんが、「YouTube」や「ニコニコ動画」ならご存知でしょう。

"ストリーミング"とは、これら「YouTube」や「ニコニコ動画」、ネットニュースを見るときに、データを受信しながら同時に再生する方法、のことです。


この"ストリーミング"の実現に必要不可欠なプロトコルが"UDP"です。


ネットワーク上でパケットを送受信する際に利用するプロトコルには、"TCP"と"UDP"の2つがあります。

※プロトコルとは"通信規約"を意味します。平たく言えば、通信する際の約束事・決まり事です。


"TCP"は通信相手との間に必ずコネクションを確立し、データを正確かつすべて送りたいときに使うものです。

一方の"UDP"は通信相手との間にコネクションを確立せずに、データを早く送りたいときに使うものです。"UDP"はその特性上、通信途中でパケットを紛失する可能性もあります。

また、TCPはピアツーピア(1対1)の通信しかできないのに対して、UDPは大量の受信者にデータを送ることができます。


以上より、「YouTube」など、"ストリーミング"技術を応用したサービスは、大量の受信者宛てにリアルタイムでパケットを送り続けなければならないため、UDPが使用されるわけです。


ここで面白いのが、"UDP"を使用すると通信途中で一部のパケットが壊れたりして届かないことがあるのですが、人間の眼は一秒間のうちにいくつかコマが落ちても気づかない(人間の眼の錯覚を利用)ため、実用上支障はないという考え方です。

それにストリーミングはリアルタイム通信が基本なので、TCPのように通信途中で紛失したパケットを再度送るような仕組みは役に立ちません。