RTPとは、動画や音声などをリアルタイムに転送するために使用されるプロトコルである。RTCPと呼ばれるセッション制御用のプロトコルと共に用いられる。
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/10/20 13:22 UTC 版)
|
|
| TCP/IP群 |
|---|
| アプリケーション層 |
|
| トランスポート層 |
| カテゴリ |
| インターネット層 |
| カテゴリ |
| リンク層 |
| カテゴリ |
| 通信プロトコル | |
| 目的 | オーディオとビデオの配信を行う |
|---|---|
| 開発者 | Audio-Video Transport Working Group of the IETF |
| 導入 | 1996年1月 |
| 派生元 | Network Voice Protocol[1] |
| RFC | RFC 1889, 3550, 3551 |
Real-time Transport Protocol(リアルタイム トランスポート プロトコル、RTP)は、音声や動画などのデータストリームをリアルタイムに配送するためのデータ通信プロトコルである。
RTSPやH.323の通信プロトコルのデータ部分に使用される。 ほぼ全てのVoIP関連製品は、RTPを利用して、音声情報をIPネットワーク上へ送出している。 これは、リアルタイムストリームを運ぶためのプロトコルとしてIETFおよびITUによって標準化されている。
RTPは典型的にはUDP上で利用される[2]。TCPと違ってUDPのヘッダーには「シーケンス(順序)番号」の項目が存在しないため順序の組み立てができない。しかし、RTPパケットを受信したホストは、RTPパケット内のヘッダーにある情報のうち、時刻情報(タイムスタンプ)から各パケットの時間的な順序関係を把握し、データを再生することができる。(詳細は #順序制御)。
RTPパケットも他のパケットと同様に、ネットワークを経由して転送されていく中で、喪失や、配送の遅れが起こる。しかし、映像や音声のデータ(ストリーミングメディアデータ)は、データの一部が多少欠けていても再生が可能であるため、データの受信側では、喪失や、配送の遅れたパケットは無視し、受信側が期待する時間に到着したパケットだけを利用してデータを再生することができる。
RTPは単独で利用されることはなく、RTCP (RTP Control Protocol) のような制御プロトコルと組み合わせて利用される[3]。RTPとRTCPはともに RFC 3550にて標準化されている。
| UDP | RTP/UDP | TCP | ||
|---|---|---|---|---|
| アプリ間通信 | ✔ | ✔ | ✔ | |
| パケットトランザクション | ✔ | ✔ | ✔ | |
| ストリーム通信 | - | ✔ | ✔ | |
| 順序制御 | ||||
| 到着順序保証 | - | -[4] | ✔ | |
| シーケンス順序復元 | - | ✔[5] | ✔ | |
| 到達保証 | - | -[6] | ✔ | |
RTPは以下の機能を提供する。
パケット通信プロトコルは独立したパケットを送信するため、パケット間の関係性を扱わない。RTP はストリーム機能を提供することで、音声や動画などデータストリームの送信を可能にする。
ネットワークの輻輳や負荷分散、その他ネットワークの予測できない振る舞いにより、パケットは遅延し順序がばらばらに届きうる。パケット集合をストリームとしてデコードするにはパケットの順序を知る必要がある。RTPはストリームシーケンス番号機能を提供することで順序制御を可能にする[7]。
| Bit offset | 0-1 | 2 | 3 | 4-7 | 8 | 9-15 | 16-31 | |||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | バージョン | P | X | CC | M | PT | 順序番号 | |||||||||||||||||||||||||
| 32 | タイムスタンプ | |||||||||||||||||||||||||||||||
| 64 | SSRC識別子 | |||||||||||||||||||||||||||||||
| 96 | CSRC識別子 ... |
|||||||||||||||||||||||||||||||
| 96+32×CC | プロファイル固有の拡張ヘッダーID | 拡張ヘッダー長 | ||||||||||||||||||||||||||||||
| 128+32×CC | 拡張ヘッダー ... |
|||||||||||||||||||||||||||||||
RTPヘッダーは、12バイトが最小サイズである。 ヘッダーの後ろのオプションの拡張ヘッダーは存在してもよい。[8]
順序番号(英: sequence number)はRTPパケットの送出順序番号である[9]。初期値はランダムである[10]。
SSRC識別子(英: SSRC identifier)はRTPストリームの識別子である。SSRC識別子の実体はRTPセッション内で一意な32bitのランダム値である[11]。
RTPはトランスポートプロトコル上で利用される。
仕様上、下層プロトコルは特定プロトコルに縛られないが[12]、ポート機能を前提とする[13]。
IETF において RTP に関する規格が策定されている。以下はその一部である:
| 規格書名 | 規格種別 | 発行日 |
|---|---|---|
| RTP: A Transport Protocol for Real-Time Applications | RFC Internet Standard | 2003-07 |
| A Taxonomy of Semantics and Mechanisms for Real-Time Transport Protocol (RTP) Sources | RFC Informational | 2015-11 |
ウィキメディア・コモンズには、Real-time Transport Protocolに関するメディアがあります。