跳到主要内容

3. 定义 (Definitions)

RTP 负载 (R: The data transported by RTP in a packet): 通过 RTP 在报文中所传输的数据, 例如音频样本或压缩视频数据。负载的格式和解释不在本文档范围内。

RTP 包 (RTP packet): 由一个固定的 RTP 头部、一个可能为空的产生源 (contributing sources, 见下文) 列表以及负载数据组成的数据包。某些下层协议可能需要定义对 RTP 包的封装。通常, 一个下层协议报文包含单个 RTP 包, 但如果封装方法允许, 也可以包含多个 RTP 包 (见第 11 节)。

RTCP 包 (RTCP packet): 一种控制包, 由类似于 RTP 数据包的固定头部部分组成, 其后跟随随 RTCP 包类型而变化的结构化元素。其格式在第 6 节中定义。通常, 多个 RTCP 包作为一个复合 RTCP 包 (compound RTCP packet) 在单个下层协议报文中一起发送; 这由每个 RTCP 包固定头部中的长度字段所支持。

端口 (Port): "传输协议用来区分给定主机计算机内多个目的地的抽象。TCP/IP 协议使用小的正整数来标识端口。" [12] OSI 传输层使用的传输选择器 (TSEL) 等同于端口。RTP 依赖下层协议提供某种机制 (如端口) 来多路复用 (multiplex) 一个会话的 RTP 和 RTCP 包。

传输地址 (Transport address): 网络地址与端口的组合, 用于标识一个传输层端点, 例如一个 IP 地址和一个 UDP 端口。报文从源传输地址发送到目的传输地址。

RTP 媒体类型 (RTP media type): RTP 媒体类型是可以承载于单个 RTP 会话中的一组负载类型 (payload types)。RTP 配置文件 (Profile) 将 RTP 媒体类型分配给 RTP 负载类型。

多媒体会话 (Multimedia session): 一组共同的参与者之间并发的多个 RTP 会话。例如, 一个视频会议 (它本身是一个多媒体会话) 可能包含一个音频 RTP 会话和一个视频 RTP 会话。

RTP 会话 (RTP session): 一组使用 RTP 进行通信的参与者之间的一种关联。一个参与者可以同时参与多个 RTP 会话。在多媒体会话中, 每种媒体通常承载于一个独立的 RTP 会话中, 并拥有自己的 RTCP 包, 除非编码本身将多种媒体多路复用进单一数据流。参与者通过接收到使用不同目的地传输地址对的、不同的会话来区分多个 RTP 会话, 其中一对传输地址由一个网络地址加上一对分别用于 RTP 和 RTCP 的端口组成。一个 RTP 会话中的所有参与者可以共享一个共同的目的地传输地址对 (如 IP 多播的情形), 或者每对地址对每个参与者可以不同 (如各自独立的单播网络地址和端口对的情形)。在单播情形下, 一个参与者可以使用相同的端口对接收来自会话中所有其他参与者的数据, 也可以为每个其他参与者使用不同的端口对。

  一个 RTP 会话的区分特征是, 每个会话都维护着一份完整、独立的 SSRC 标识符空间 (下文定义)。包含在一个 RTP 会话中的参与者集合, 由那些能够接收到任一参与者所发送的 SSRC 标识符的参与者组成——该标识符通过 RTP 作为 SSRC 或 CSRC (也在下文定义) 发送, 或者通过 RTCP 发送。例如, 考虑一个使用单播 UDP 实现的三方会议, 每个参与者在独立的端口对上从其他两个参与者接收数据。如果每个参与者仅将其关于来自另一个参与者的数据的 RTCP 反馈发回给该参与者, 那么该会议由三个独立的点对点 RTP 会话组成。如果每个参与者将其对一个其他参与者的接收情况反馈给另外两个参与者, 那么该会议由一个多方 RTP 会话组成。后一种情况模拟了这三个参与者之间使用 IP 多播通信时会出现的行为。

RTP 框架允许此处定义的这些变体, 但特定的控制协议或应用设计通常会对这些变体施加约束。

同步源 (Synchronization source, SSRC): 一路 RTP 包流的来源, 由一个 32 位的数字型 SSRC 标识符标识, 该标识符携带在 RTP 头部中, 从而不依赖于网络地址。来自同一个同步源的所有包构成相同的定时和序列号空间的一部分, 因此接收方按同步源对包进行分组以便回放。同步源的例子包括由诸如麦克风或摄像头之类的信号源派生出的包流的发送者, 或一个 RTP 混合器 (mixer, 见下文)。一个同步源可以随时间改变其数据格式, 例如音频编码。SSRC 标识符是一个随机选取的值, 旨在特定 RTP 会话内全局唯一 (见第 8 节)。一个参与者不必为其多媒体会话中的所有 RTP 会话使用相同的 SSRC 标识符; SSRC 标识符的绑定通过 RTCP 提供 (见第 6.5.1 节)。如果一个参与者在一个 RTP 会话中生成多个流 (例如来自独立的摄像头), 每一个必须被标识为一个不同的 SSRC。

贡献源 (Contributing source, CSRC): 一路 RTP 包流的来源, 它贡献于由某个 RTP 混合器 (见下文) 所产生的组合流。混合器将该组合流所源自的那些源的 SSRC 标识符列表插入到该包的 RTP 头部中。这个列表称为 CSRC 列表。一个典型的应用实例是音频会议, 其中混合器指出所有参与组合产生外出包的发言者,

  即使所有音频包都包含相同的 SSRC 标识符 (即混合器的标识符), 接收方也能指出当前的发言者。

端系统 (End system): 生成待发送于 RTP 包中的内容, 和/或消费所接收到的 RTP 包内容的应用。一个端系统在特定的 RTP 会话中可以扮演一个或多个同步源的角色, 但通常只有一个。

混合器 (Mixer): 一种中间系统, 它从一个或多个源接收 RTP 包, 可能会改变数据格式, 以某种方式组合这些包, 然后转发一个新 RTP 包。由于多个输入源之间的定时通常并不同步, 混合器会在各流之间进行定时调整, 并为组合流生成自己的定时。因此, 所有源自一个混合器的数据报都会被标识为以该混合器作为它们的同步源。

转换器 (Translator): 一种中间系统, 它转发 RTP 包时保持其同步源标识符不变。转换器的例子包括: 在不进行混合的情况下进行编码转换的设备、从多播到单播的复制器, 以及防火墙中的应用层过滤器。

监视器 (Monitor): 一种接收 RTP 会话中参与者所发送的 RTCP 包 (尤其是接收报告), 并估计当前服务质量的应釐, 用于分发监视、故障诊断和长期统计的应用。监视功能很可能被内建到参与会话的应用中, 但也可能是一个独立的、不以其他方式参与、也不发送或接收 RTP 数据包 (因为它们在不同的端口上) 的应用。这些被称为第三方监视器 (third-party monitors)。第三方监视器也可以接收 RTP 数据包但不发送 RTCP 包, 或不被计入会话之中, 这也是可接受的。

非 RTP 手段 (Non-RTP means): 除 RTP 之外可能还需要的、用于提供可用服务的协议和机制。特别是对于多媒体会议, 一个控制协议可以分发多播地址和加密密钥、协商要使用的加密算法, 并定义在 RTP 负载类型值与它们所代表的负载格式之间对于没有预定义负载类型值的格式的动态映射。此类协议的例子包括会话发起协议 (Session Initiation Protocol, SIP) (RFC 3261 [13])、ITU 建议 H.323 [14], 以及使用 SDP (RFC 2327 [15]) 的应用, 如 RTSP (RFC 2326 [16])。对于简单的

  应用, 也可以使用电子邮件或会议数据库。此类协议和机制的规范不在本文档范围内。