見出し画像

品質の高い音声での通話を可能とする技術:RTPとRTCP

「音声パケットがでたらめの順番だったら、そのまま再生されるのかな?」

はい、こんにちは!松井真也です。シリーズ「音声通話で世界とつながる:VoIP超入門」第4回でございます。

前回は、通話の開始と終了を管理する「SIP」というプロトコルをご紹介しました。HTTPやメールと似ている仕組みを使ってセッションを開始するのが面白かったですね!分かりやすい。

さて、今回は、リアルタイムで音声データを伝送させるためのプロトコル「RTP」です。SIPと双璧をなす重要プロトコルですよ。音声データをガンガン相手に送ったところで、順番どおり着信するとは限らないですよね?さて、いったいどうやってパケットの順番を管理しているのでしょうか?

さっそく見ていきましょう!

リアルタイム通話を可能にする「RTP」

RTP(Real-time Transport Protocol)は、簡単にいうと、音声や動画などのリアルタイムデータストリームを伝送するためのプロトコルです。名前のとおりですね。

RTPでは、トランスポート層のプロトコルとしてUDP(User Datagram Protocol)を使用します。一般に、UDPは、TCPと違いハンドシェイクを行わず、データの到着順序の保証や欠落したデータの再送などを行いません。ですから、より高速なデータ伝送が可能になります。

ん?では、音声データの順番が乱れてもいいのか?ってそれは困りますよね。意味が伝わらないかもしれません。

そこでRTPの登場です!シーケンス番号やタイムスタンプなどを含んだRTPヘッダを用いることで、データの順序を制御することができるんです。

RTPの技術的特徴とメカニズム

では、具体的にRTPは、シーケンス管理やタイミングの同期などの機能を提供しているのでしょうか?RTPパケットを絵にしましょう。

RTPのフレーム構成

RTPパケット内のヘッダには、シーケンス番号とタイムスタンプがあります。これらにより、データパケットの順序を正確に把握して、正しい順序で音声を再生できます。RTPヘッダの最小値は、12バイトです。ペイロードには、音声データで構成されていますよ。

また、RTPパケットはネットワークを通じて転送される過程で、パケットが喪失したり遅延したりすることがあります。しかし、このリアルタイム通信では一部データが欠けていたとしても、再生に支障がないように設計されています。このおかげで、受信側は遅延が発生したパケットを無視し、タイムリーに到着したパケットのみを利用して通信を維持することができます。

通信品質を保つための技術:RTCP

だいたいRTPの基本は以上のとおりですが、もう少し掘り下げますか!もう一つプロトコルを登場させましょう。

RTCP(RTP Control Protocol)は、RTP(Real-time Transport Protocol)とセットで使用される制御プロトコルで、リアルタイム通信の効率と品質を確保します。RTPの補助として機能し、通信の監視(パケットロスがないかなど)と制御に特化しています。

RTPで通信を行っている影で、双方で制御用の情報を交換し合います。うん、裏方っぽいぞw。

それだけではありません。RTCPは、通信に参加している各ユーザーに関する情報を交換します。これにより、誰が通信に参加しているか、また離脱したのか、参加者のネットワーク状態がどうなっているかが把握できます。これをもとに通信速度の制御まで行います。結構、多彩な仕事をしますね!



はい、本日はここまで。今回は、リアルタイム通信を支える「RTP」と「RTCP」についてご紹介しました。この2つがタッグを組んで、リアルタイム通信の品質が維持されるのですね。

次回は、VoIPにおける符号化、アナログ・デジタル変換をやりましょうか!

では!

この記事が気に入ったらサポートをしてみませんか?