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协议使用小的正整数来标识端口。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(下文也有定义)或在RTCP中传输的SSRC标识符的接收方。例如,考虑一个使用单播UDP实现的三方会议,每个参与者在不同的端口对上从其他两个参与者接收。如果每个参与者仅将有关从另一个参与者接收的数据的RTCP反馈发送回该参与者,则该会议由三个单独的点对点RTP会话组成。如果每个参与者向其从对方参与者接收的数据提供有关其接收情况的RTCP反馈,那么该会议由一个多方RTP会话组成。后一种情况模拟了在三个参与者之间进行IP组播通信时的行为。
RTP框架允许定义的这些变化,但特定的控制协议或应用程序设计通常会对这些变化施加约束。
同步源 (SSRC - Synchronization Source): RTP数据包流的源,由32位数值的SSRC标识符识别,该标识符在RTP头部中传输,不依赖于网络地址。来自同步源的所有数据包组成相同的定时和序列号空间的一部分,因此接收方通过同步源对数据包进行分组以进行播放。同步源的示例包括来自信号源(如麦克风或摄像头)派生的数据包流的发送方,或RTP混合器(见下文)。同步源可以随时间改变其数据格式,例如音频编码。SSRC标识符是随机选择的值,目的是在特定的RTP会话中具有全局唯一性。参与者不需要在多媒体会话中的所有RTP会话中使用相同的SSRC标识符; SSRC标识符的绑定通过RTCP提供(见第6.5.1节)。如果参与者在一个RTP会话中生成多个流,例如来自不同视频摄像头的流,每个流必须被标识为不同的SSRC。
贡献源 (CSRC - Contributing Source): 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一起提供可用服务的协议和机制。特别是对于多媒体会议,控制协议可以分发多播地址和用于加密的密钥,协商要使用的加密算法,并为没有预定义的有效载荷类型值的有效载荷格式定义动态映射。此类协议的示例包括会话初始化协议(SIP)(RFC 3261[13])、ITU建议H.323[14]和使用SDP(RFC 2327[15])的应用,例如RTSP(RFC 2326[16])。对于简单的应用程序,还可以使用电子邮件或会议数据库。这些协议和机制的规范超出了本文档的范围。