目录
1 实时运输协议 RTP
1.1 RTP 的层次
1.2 RTP 分组的首部格式
2 实时运输控制协议 RTCP
2.1 RTCP 分组
1 实时运输协议 RTP
·实时运输协议 RTP (Real-time Transport Protocol) 为实时应用提供端到端的运输,但不提供任何服务质量的保证。
·需要发送的多媒体数据块(音频/视频)经过压缩编码处理后,先送给 RTP 封装成为 RTP 分组(也可称为 RTP 报文 )。
·RTP 分组装入运输层的 UDP 用户数据报后,再向下递交给 IP 层。
·RTP 是一个协议框架,只包含了实时应用的一些共同的功能。
·RTP 不对多媒体数据块做任何处理,而只是向应用层提供一些附加的信息,让应用层知道应当如何进行处理。
1.1 RTP 的层次
·从应用开发者的角度看,RTP 应当是应用层的一部分。
·由于 RTP 向多媒体应用程序提供了服务(如时间戳和序号),因此也可以将 RTP 看成是在 UDP 之上的一个运输层的子层。
注意
·RTP 分组只包含 RTP 数据,控制由另一个配套使用的 RTCP 协议提供。
·RTP 在端口号 1025 到 65535 之间选择一个未使用的偶数 UDP 端口号,在同一次会话中的 RTCP 则使用下一个奇数 UDP 端口号。但端口号 5004 和 5005 则分别用作 RTP 和 RTCP 的默认端口号。
1.2 RTP 分组的首部格式
·版本:占 2 位。当前使用的是版本 2。
·填充 P:占 1 位。在某些特殊情况下需要对应用数据块加密,要求每一个数据块有确定的长度。如不满足这种长度要求,就需要进行填充。这时就把 P 位置 1,表示这个 RTP 分组的数据有若干填充字节。在数据部分的最后一个字节用来表示所填充的字节数。
·扩展 X:占 1 位。X 置 1 表示在此 RTP 首部后面还有扩展首部。扩展首部很少使用。
·参与源数:占 4 位。给出后面的参与源标识符的数目。
·标记 M:占 1 位。M 置 1 表示这个 RTP 分组具有特殊意义。例如,在传送视频流时用来表示每一帧的开始。
·有效载荷类型 (payload type):占 7 位。指出后面的 RTP 数据属于何种格式的应用。收到 RTP 分组的应用层就根据此字段指出的类型进行处理。
·序号:占 16 位。对每一个发送出的 RTP 分组,其序号加 1。在一次 RTP 会话开始时的初始序号是随机选择的。序号使接收端能够发现丢失的分组,同时也能将失序的 RTP 分组重新按序排列好。
·时间戳:占 32 位。反映了 RTP 分组中数据的第一个字节的采样时刻。在一次会话开始时时间戳的初始值是随机选择的。即使在没有信号发送时,时间戳的数值也要随时间而不断地增加。接收端使用时间戳可准确知道应当在什么时间还原哪一个数据块,从而消除时延的抖动。还可以用来使视频应用中声音和图像同步。
·同步源标识符 SSRC (Synchronous SouRCe identifier):占 32 位。是一个数,用来标志 RTP 流(stream) 的来源。SSRC 与 IP 地址无关,在新的 RTP 流开始时随机地产生。有多个 RTP 流复用到一个 UDP 用户数据报中时,SSRC 可使接收端的 UDP 能够将收到的 RTP 流送到各自的终点。
·参与源标识符 CSRC (Contributing SouRCe identifier):选项,最多可有 15 个。CSRC 是一个 32 位数,用来标志来源于不同地点的 RTP 流。在多播环境中,可以用中间的一个站(叫做混合站 mixer)把发往同一个地点的多个 RTP 流混合成一个流,在目的站再根据 CSRC 的数值把不同的 RTP 流分开。
2 实时运输控制协议 RTCP
·RTCP (RTP Control Protocol) 是与 RTP 配合使用的协议,与 RTP 协议不可分割。
·主要功能:
1.服务质量的监视与反馈;
2.媒体间的同步;
3.播组中成员的标识。
2.1 RTCP 分组
·RTCP 分组使用 UDP 传送,但不对音频/视频分组进行封装。
·可将多个 RTCP 分组封装在一个 UDP 用户数据报中。
·RTCP 分组周期性地在网上传送,它带有发送端和接收端对服务质量的统计信息报告。
RTCP 使用的五种分组类型
类型 | 缩写表示 | 意义 |
200 | SR | 发送端报告 |
201 | RR | 接收端报告 |
202 | SDES | 源点描述 |
203 | BYE | 结束 |
204 | APP | 特定应用 |
欢迎一起学习~