この記事では,マルチメディア通信に関わる知識を簡単にまとめていきたいと思います。ただし,全ての知識が詳しく網羅されている訳ではありません。また,分かりやすいように多少意訳した部分もあります。ですので,参考程度におさめていただければ幸いです。
間違えている箇所がございましたらご指摘ください。随時更新予定です。他のマルチメディア通信に関する記事はコチラのページをご覧ください。
読みたい場所へジャンプ!
TCP/IPとは
以下の記事で簡単に説明しています。
UDPとは
簡単にこちらの記事でお伝えしています。
UDPは,TCPに比べて信頼性が担保されていないものの,実時間性があるシンプルなプロトコルです。また,TCPは一対一の通信にしか対応していません。そのため,通信が1往復のみで完了するものや,マルチキャストを用いるもの,映像・音声の伝送などでUDPが利用されます。また,NFSやTFTPなど,TCPでは効率が悪い通信ではUDPが利用されることもあります。
このように,実時間データ伝送を実現するためには,種々の制約が必要になります。ここで登場するのが「RTP(Real-time Transport Protocol)」です。RTPはUDPと組み合わせて働くトランスポート層プロトコルです。
RTP
RTPは,UDPだけでは補いきれない情報を扱うために作られたプロトコルです。様々なプロトコルは,以下の図のような階層があります。
RTPストリーミングは,以下のような流れをとります。
また,RTPパケットは「IPヘッダ+UDPヘッダ+RTPヘッダ+ペイロード」という構成になっています。特に,RTPヘッダ+UDPヘッダは実時間データ伝送を円滑に行うための情報が格納されています。
RTPでは,受信ホストの利用可能帯域や端末能力に応じたペイロードフォーマットの変更(トランスレータ)や,複数ストリームの統合(ミキサ)の枠組みも提供します。
RTCP
RTCPは主に「通信状態の報告」「識別子の提供」「メディア間の同期」の機能を提供します。RTCPパケットとしては「受信レポート」「送信レポート」「ソース記述」「メンバシップ管理」「アプリケーション定義」があります。RTCPパケットは,定期的に全ての参加者に送られますが,あまりにも頻度が多すぎると帯域を消費してしまう恐れがあります。また,送信間隔に乱数を用いることで輻輳を防いでいます。
RTPにおける誤り回復
前方誤り訂正(FEC:Forward Error Correction)などが用いられます。FECは,データに冗長性を持たせて誤りを検出する方式で,誤りが生じていない場合でもデータが冗長化されてしまうという特徴があります。この方式は,誤りを検知してからデータを再送するのでは間に合わないような場合に利用されます。
RTPは主にテレビ会議装置で利用されているとのことです。Youtubeなどでは,Google独自のプロトコルがTCPベースで適用されているとのことです。