-- RTP 协议 /RTP 控制协议 RTCP
RTP 协议
实时传输协议 RTP 提供了实时信息的端对端传输业务,如交互的语音和图象;这些业务包括负载类型识别,
序列编号,加入时间标志,传输监视.典型的应用是在 UDP 层上传输 RTP 包,以利用它的复用和总和检测业
务.
RTP 包括两个紧密相关的部分:
- 实时传输协议(RTP),传输有实时特性的信息;
- RTP 控制协议(RTCP),监视业务质量和传输对话中成员的信息.
RTP 包头
RTP 头有以下格式:
0 1 2 3
0 1 23 4 5 6 7 89 0 1 2 3 45 6 7 8 90 1 2 34 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X| CC |M| PT | 序列号 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 时间标志 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 同步源(SSRC)识别符 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 有贡献源(CSRC)识别符 |
| ... ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
RTP 包头格式
前 12 个字节出现在每个 RTP 包中,仅仅在被混合器插入时,才出现 CSRC 识别符列表.这些域有以下意
义:
版本(V):2 比特 此域定义了 RTP 的版本.此协议定义的版本是 2.(值 1 被 RTP 草案版本使用,值 0 用在最
初"vat"语音工具使用的协议中.)
填料(P):1 比特 若填料比特被设置,此包包含一到多个附加在末端的填充比特,不是负载的一部分.填料的
最后一个字节包含可以忽略多少个填充比特.填料可能用于某些具有固定长度的加密算法,或者在底层数据
单元中传输多个 RTP 包.
扩展(X):1 比特 若设置扩展比特,固定头(仅)后面跟随一个头扩展.
CSRC 计数(CC):4 比特 CSRC 计数包含了跟在固定头后面 CSRC 识别符的数目.
标志(M):1 比特 标志的解释由具体协议规定.它用来允许在比特流中标记重要的事件,如帧范围.规定该
标志在静音后的第一个语音包时置位.
负载类型(PT):7 比特 此域定义了负载的格式,由具体应用决定其解释.协议可以规定负载类型码和负载
格式之间一个默认的匹配.其他的负载类型码可以通过非 RTP 方法动态定义.RTP 发射机在任意给定时间发
出一个单独的 RTP 负载类型;此域不用来复用不同的媒体流.
序列号:16 比特 每发送一个 RTP 数据包,序列号加一,接收机可以据此检测包损和重建包序列.序列号的
初始值是随机的(不可预测),以使即便在源本身不加密时(有时包要通过翻译器,它会这样做),对加密算法泛
知的普通文本攻击也会更加困难.
时间标志:32 比特 时间标志反映了 RTP 数据包中第一个比特的抽样瞬间.抽样瞬间必须由随时间单调和
线形增长的时钟得到,以进行同步和抖动计算.时钟的分辨率必须满足要求的同步准确度,足以进行包到达抖
动测量.时钟频率与作为负载传输的数据格式独立,在协议中或定义此格式的负载类型说明中静态定义,也可
以在通过非 RTP 方法定义的负载格式中动态说明.若 RTP 包周期性生成,可以使用由抽样时钟确定的额定抽