实时传输协议(RTP)
为数据提供了具有实时特征的端对端传送服务,如在组播或单播网络服务下的交互式视频音频或模拟数据。
应用程序通常在 UDP 上运行 RTP 以便使用其多路结点和校验服务;这两种协议都提供了传输层协议的功能。但是 RTP 可以与其它适合
的底层网络或传输协议一起使用。
如果底层网络提供组播方式,那么 RTP 可以使用该组播表传输数据到多个目的地。
实行有序传送, RTP 中的序列号允许接收方重组发送方的包序列,同时序列号也能用于决定适当的包位置,
例如:在视频解码中,就不需要顺序解码。
RTP标准定义了两个子协议,RTP和RTCP。
RTP
数据传输协议RTP,用于实时传输数据。
该协议提供的信息包括:时间戳(用于同步)、序列号(用于丢包和重排序检测)、以及负载格式(用于说明数据的编码格式)。
RTCP
控制协议RTCP,用于QoS(服务质量)反馈和同步媒体流。相对于RTP来说,RTCP所占的带宽非常小,通常只有5%。
偶数端口号接收发送数据,相应的RTCP则使用 相邻的下一位奇数端口号。
抖动补偿和
数据无序到达检测的机制。由于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 第二方面的功能对于“松散受控”会话是足够的,也就是说,在没有明
确的成员控制和组织的情况下,它并不非得用来支持一个应用程序的所有控制通信请求。
封包结构
Ver.(2位元)是协定的版本号码。
P(1位元)是用于RTP封包(packet)结束点的预留空间,视封包是否需要多余的填塞空间。
X(1位元)是否在使用延伸空间于封包之中。
CC(4位元)包含了CSRC数目用于修正标头(fixedheader)。
M(onebit)是用于应用等级以及其原型(profile)的定义。如果不为零表示资料有特别的程式解译。
PT(7bits)是指payload的格式并决定将如何去由应用程式加以解译。SSRC是同步化来源。
以上内容来自:百度百科