3. 定义 (Definitions)
RTP 负载 (RTP payload): RTP 在数据包中传输的数据, 例如音频采样或压缩视频数据. 负载格式及其解释超出本文档范围.
RTP 数据包 (RTP packet): 由固定 RTP 头部, 可能为空的贡献源列表 (见下文), 以及负载数据组成的数据包. 某些底层协议可能要求定义 RTP 数据包的封装. 通常, 一个底层协议数据包包含一个 RTP 数据包, 但如果封装方法允许, 也可以包含多个 RTP 数据包 (见第 11 节).
RTCP 数据包 (RTCP packet): 由类似 RTP 数据包的固定头部部分以及随后结构化元素组成的控制数据包, 这些结构化元素会随 RTCP 数据包类型而变化. 格式定义见第 6 节. 通常, 多个 RTCP 数据包会作为一个复合 RTCP 数据包在单个底层协议数据包中一起发送; 每个 RTCP 数据包固定头部中的长度字段支持这种做法.
端口 (Port): "传输协议用于区分给定主机计算机内多个目的地的抽象. TCP/IP 协议使用小的正整数标识端口." [12] OSI 传输层使用的传输选择器 (TSEL) 等价于端口. RTP 依赖较低层协议提供某种机制, 例如端口, 来复用一个会话的 RTP 和 RTCP 数据包.
传输地址 (Transport address): 标识传输层端点的网络地址和端口组合, 例如 IP 地址和 UDP 端口. 数据包从源传输地址发送到目标传输地址.
RTP 媒体类型 (RTP media type): RTP 媒体类型是在单个 RTP 会话中可以承载的负载类型集合. RTP 配置文件将 RTP 媒体类型分配给 RTP 负载类型.
多媒体会话 (Multimedia session): 一组公共参与者之间并发的 RTP 会话集合. 例如, 一个视频会议 (即一个多媒体会话) 可以包含一个音频 RTP 会话和一个视频 RTP 会话.
RTP 会话 (RTP session): 一组参与者之间使用 RTP 通信的关联. 一个参与者可以同时参与多个 RTP 会话. 在多媒体会话中, 每种媒体通常在单独的 RTP 会话中承载, 并具有自己的 RTCP 数据包, 除非编码本身将多种媒体复用到单个数据流中. 参与者通过接收使用不同目标传输地址对的不同会话来区分多个 RTP 会话, 其中一对传输地址由一个网络地址以及 RTP 和 RTCP 的一对端口组成. RTP 会话中的所有参与者可以共享一对公共目标传输地址, 如 IP 组播场景; 也可以为每个参与者使用不同的地址对, 如单播网络地址和端口对场景. 在单播场景中, 参与者可以使用同一对端口从会话中的所有其他参与者接收数据, 也可以为每个其他参与者使用不同的端口对.
RTP 会话的区别性特征是, 每个会话维护一个完整且独立的 SSRC 标识符空间 (见下一项定义). 一个 RTP 会话包含的参与者集合, 是那些能够接收任一参与者通过 RTP 以 SSRC 或 CSRC (也在下文定义) 形式传输的 SSRC 标识符, 或通过 RTCP 传输的 SSRC 标识符的参与者. 例如, 考虑一个使用单播 UDP 实现的三方会议, 每个参与者通过单独的端口对从另外两方接收数据. 如果每个参与者只把其接收自另一个参与者的数据的 RTCP 反馈发送回该参与者, 那么这个会议由三个独立的点到点 RTP 会话组成. 如果每个参与者将其接收自另一个参与者的数据的 RTCP 反馈同时提供给另外两个参与者, 那么这个会议由一个多方 RTP 会话组成. 后一种情况模拟了三方参与者之间使用 IP 组播通信时会出现的行为.
RTP 框架允许这里定义的各种变体, 但特定控制协议或应用设计通常会对这些变体施加约束.
同步源 (Synchronization source, SSRC): RTP 数据包流的来源, 由 RTP 头部中携带的 32 位数值 SSRC 标识符标识, 因而不依赖网络地址. 来自同一同步源的所有数据包构成同一时间和序列号空间的一部分, 因此接收者按同步源对数据包分组以便播放. 同步源的示例包括从麦克风或摄像机等信号源生成数据包流的发送者, 或 RTP 混音器 (见下文). 同步源可以随时间改变其数据格式, 例如音频编码. 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 数据包 (因为它们位于单独的端口). 这些称为第三方监测器. 第三方监测器接收 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]). 对于简单应用, 也可以使用电子邮件或会议数据库. 这些协议和机制的规范超出本文档范围.