Real-time Transport Protocol

Real-time Transport Protocol（リアルタイム トランスポート プロトコル、RTP）は、音声や動画などのデータストリームをリアルタイムに配送するためのデータ通信プロトコルである。

 概要 
RTSPやH.323の通信プロトコルのデータ部分に使用される。
ほぼ全てのVoIP関連製品は、RTPを利用して、音声情報をIPネットワーク上へ送出している。
これは、リアルタイムストリームを運ぶためのプロトコルとしてIETFおよびITUによって標準化されている。

RTPは典型的にはUDP上で利用される"Applications typically run RTP on top of UDP"より引用。。TCPと違ってUDPのヘッダーには「シーケンス（順序）番号」の項目が存在しないため順序の組み立てができない。しかし、RTPパケットを受信したホストは、RTPパケット内のヘッダーにある情報のうち、時刻情報（タイムスタンプ）から各パケットの時間的な順序関係を把握し、データを再生することができる。（詳細は #順序制御）。

RTPパケットも他のパケットと同様に、ネットワークを経由して転送されていく中で、喪失や、配送の遅れが起こる。しかし、映像や音声のデータ（ストリーミングメディアデータ）は、データの一部が多少欠けていても再生が可能であるため、データの受信側では、喪失や、配送の遅れたパケットは無視し、受信側が期待する時間に到着したパケットだけを利用してデータを再生することができる。

RTPは単独で利用されることはなく、RTCP (RTP Control Protocol) のような制御プロトコルと組み合わせて利用される15群(○○○)-8編 - 03gun_04hen_05.pdf。RTPとRTCPはともににて標準化されている。
+表. UDP, RTP/UDP, TCP 比較UDPRTP/UDPTCPアプリ間通信✔✔✔パケットトランザクション✔✔✔ストリーム通信 -✔✔順序制御到着順序保証 - -"RTP itself ... does not prevent out-of-order delivery"より引用。✔シーケンス順序復元 -✔"The sequence numbers included in RTP allow the receiver to reconstruct the sender's packet sequence"より引用。✔到達保証 - -"Note that RTP itself ... does not guarantee delivery"より引用。✔

 機能 
RTPは以下の機能を提供する。

 ストリーム送信 
パケット通信プロトコルは独立したパケットを送信するため、パケット間の関係性を扱わない。RTP はストリーム機能を提供することで、音声や動画などデータストリームの送信を可能にする。

 順序制御 
ネットワークの輻輳や負荷分散、その他ネットワークの予測できない振る舞いにより、パケットは遅延し順序がばらばらに届きうる。パケット集合をストリームとしてデコードするにはパケットの順序を知る必要がある。RTPはストリームシーケンス番号機能を提供することで順序制御を可能にする"the real-time transport protocol ... provides end-to-end delivery services ... Those services include ... sequence numbering ... The sequence numbers included in RTP allow the receiver to reconstruct the sender's packet sequence ... All packets from a synchronization source form part of the same timing and sequence number space"より引用。。

パケットヘッダー
+RTP packet header Bit offset 0-1 2 3 4-7 8 9-15 16-31 0バージョンPXCCMPT順序番号32タイムスタンプ 64SSRC識別子 96CSRC識別子... 96+32×CCプロファイル固有の拡張ヘッダーID	拡張ヘッダー長 128+32×CC拡張ヘッダー...
RTPヘッダーは、12バイトが最小サイズである。
ヘッダーの後ろのオプションの拡張ヘッダーは存在してもよい。

 順序番号 
順序番号（）はRTPパケットの送出順序番号である"The sequence number increments by one for each RTP data packet sent"より引用。。初期値はランダムである"The initial value of the sequence number SHOULD be random (unpredictable) to make known-plaintext attacks on encryption more difficult"より引用。。

 SSRC識別子 
SSRC識別子（）はRTPストリームの識別子である。SSRC識別子の実体はRTPセッション内で一意な32bitのランダム値である"The SSRC identifier is a randomly chosen value meant to be globally unique within a particular RTP session"より引用。。

 仕様 

 下層プロトコル 
RTPはトランスポートプロトコル上で利用される。

仕様上、下層プロトコルは特定プロトコルに縛られないが"RTP may be used with other suitable underlying network or transport protocols"より引用。、ポート機能を前提とする"RTP depends upon the lower-layer protocol to provide some mechanism such as ports"より引用。。

 規格書 
IETF において RTP に関する規格が策定されている。以下はその一部である：
+表. RTP 規格規格書名規格種別発行日RTP: A Transport Protocol for Real-Time ApplicationsRFC Internet Standard2003-07A Taxonomy of Semantics and Mechanisms for Real-Time Transport Protocol (RTP) SourcesRFC Informational2015-11

 出典・脚注 

 関連項目 
 RTP Control Protocol (RTCP)
 MGCP
 遠隔会議

 外部リンク 

  - A Transport Protocol for Real-Time Applications
  - RTP Profile for Audio and Video Conferences with Minimal Control

3550
Category:アプリケーション層プロトコル