实时传输协定(Real-time Transport Protocol或简写RTP)是一个网路传输协定,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的。
国际电信联盟ITU-T也发布了自己的RTP文档,作为H.225.0,但是后来当IETF发布了关于它的稳定的标準RFC后就被取消了。它作为网际网路标準在RFC 3550(该文档的旧版本是RFC 1889)有详细说明。RFC 3551(STD 65,旧版本是RFC 1890)详细描述了使用最小控制的音频和视频会议。
RTP协定详细说明了在网际网路上传递音频和视频的标準数据包格式。它一开始被设计为一个多播协定,但后来被用在很多单播套用中。RTP协定常用于流媒体系统(配合RTSP协定),视频会议和一键通(Push to Talk)系统(配合H.323或SIP),使它成为IP电话产业的技术基础。RTP协定和RTP控制协定RTCP一起使用,而且它是创建在UDP协定上的。
基本介绍
- 中文名:实时传输协定
- 外文名:Real-time Transport Protocol
- 简称:RTP
- 类型:概念
特徵
实时传输协定(RTP)为数据提供了具有实时特徵的端对端传送服务,如在组播或单播网路服务下的互动式视频音频或模拟数据。应用程式通常在 UDP 上运行 RTP 以便使用其多路结点和校验服务;这两种协定都提供了传输层协定的功能。但是 RTP 可以与其它适合的底层网路或传输协定一起使用。如果底层网路提供组播方式,那幺 RTP 可以使用该组播表传输数据到多个目的地。
RTP 本身并没有提供按时传送机制或其它服务质量(QoS)保证,它依赖于底层服务去实现这一过程。 RTP 并不保证传送或防止无序传送,也不确定底层网路的可靠性。 RTP 实行有序传送, RTP 中的序列号允许接收方重组传送方的包序列,同时序列号也能用于决定适当的包位置,例如:在视频解码中,就不需要顺序解码。
RTP 由两个紧密连结部分组成:
RTP ― 传送具有实时属性的数据;
组成
RTP标準定义了两个子协定,RTP和RTCP。
数据传输协定RTP,用于实时传输数据。该协定提供的信息包括:时间戳(用于同步)、序列号(用于丢包和重排序检测)、以及负载格式(用于说明数据的编码格式)。
控制协定RTCP,用于QoS反馈和同步媒体流。相对于RTP来说,RTCP所占的频宽非常小,通常只有5%。
使用
RTP 使用偶数连线埠号接收传送数据,相应的RTCP则使用相邻的下一位奇数连线埠号。
RTP提供抖动补偿和数据无序到达检测的机制。由于IP网路的传输特性,数据的无序到达是很常见的。 RTP允许数据通过IP组播的方式传送到多个目的地。RTP被认为是在IP网路中传输音频和视频的基本标準。RTP通常配合模板和负载格式使用。
对于实时多媒体流套用,及时传送信息是首要目标,为达到目标可以忍受部分丢包。例如,在音频套用中的一个丢包,可能导致损失音频数据中的一秒内容,这个很容易通过合适的隐藏算法掩盖过去,从而不被人注意。由于TCP更注重可靠性而不是及时性,在RTP套用中很少使用。取而代之,大部分RTP实施是基于UDP的。
每一个多媒体流会建立一个RTP会话。一个会话包含带有RTP和RTCP连线埠号的IP位址。例如,音频和视频流使用分开的RTP会话,这样用户可以选择其中一个媒体流。形成会话的连线埠由其他协定(例如RTSP和SIP)来协商。RTP和RTCP使用UDP连线埠1024 - 65535。
报文格式
RTP报文由两部分组成:报头和有效载荷。RTP报头格式如图所示,其中:
l V:RTP协定的版本号,占2位,当前协定版本号为2。
l P:填充标誌,占1位,如果P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。
l X:扩展标誌,占1位,如果X=1,则在RTP报头后跟有一个扩展报头。
l CC:CSRC计数器,占4位,指示CSRC 标识符的个数。
l M: 标记,占1位,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。
l 同步信源(SSRC)标识符:占32位,用于标识同步信源。该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。
l 特约信源(CSRC)标识符:每个CSRC标识符占32位,可以有0~15个。每个CSRC标识了包含在该RTP报文有效载荷中的所有特约信源。
l PT: 有效载荷类型,占7位,用于说明RTP报文中有效载荷的类型,如GSM音频、JPEM图像等。
l 序列号:占16位,用于标识传送者所传送的RTP报文的序列号,每传送一个报文,序列号增1。接收者通过序列号来检测报文丢失情况,重新排序报文,恢複数据。
l 时戳(Timestamp):占32位,时戳反映了该RTP报文的第一个八位组的採样时刻。接收者使用时戳来计算延迟和延迟抖动,并进行同步控制。
V | P | X | CC | M | PT | 序列号 |
时戳 | ||||||
同步信源(SSRC)标识符 | ||||||
特约信源(CSRC)标识符 | ||||||
··· |
RTP报头格式
这里的同步信源是指产生媒体流的信源,它通过RTP报头中的一个32位数字SSRC标识符来标识,而不依赖于网路地址,接收者将根据SSRC标识符来区分不同的信源,进行RTP报文的分组。特约信源是指当混合器接收到一个或多个同步信源的RTP报文后,经过混合处理产生一个新的组合RTP报文,并把混合器作为组合RTP报文的SSRC,而将原来所有的SSRC都作为CSRC传送给接收者,使接收者知道组成组合报文的各个SSRC。
RTCP概要
RTCP 控制协定(RTCP) ― 监控服务质量并传送正在进行的会话参与者的相关信息。RTCP 第二方面的功能对于“鬆散受控”会话是足够的,也就是说,在没有明确的成员控制和组织的情况下,它并不非得用来支持一个应用程式的所有控制通信请求。
封包结构
Ver.(2位元)是协定的版本号码。P(1位元)是用于RTP封包(packet)结束点的预留空间,视封包是否需要多余的填塞空间。X(1位元)是否在使用延伸空间于封包之中。。CC(4位元)包含了CSRC数目用于修正标头(fixedheader)。M(onebit)是用于套用等级以及其原型(profile)的定义。如果不为零表示资料有特别的程式解译。PT(7bits)是指payload的格式并决定将如何去由套用程式加以解译。SSRC是同步化来源。