RTP:实时应用程序传输协议
摘要
本文描述RTP(real-time transport protocol),实时传输协议。RTP在多点传送(多播)或单点传送(单播)的网络服务上,提供端对端的网络传输功能,适合应用程序传输实时数据,如:音频,视频或者仿真数据。RTP没有为实时服务提供资源预留的功能,也不能保证QoS(服务质量)。数据传输功能由一个控制协议(RTCP)来扩展,通过扩展,可以用一种方式对数据传输进行监测控制,该协议(RTCP)可以升级到大型的多点传送(多播)网络,并提供最小限度的控制和鉴别功能。RTP和RTCP被设计成和下面的传输层和网络层无关。协议支持RTP标准的转换器和混合器的使用。
本文的大多数内容和旧版的RFC1889相同。在线路里传输的数据包格式没有改变,唯一的改变是使用协议的规则和控制算法。为了最小化传输,发送RTCP数据包时超过了设定的速率,而在这时,很多的参与者同时加入了一个会话,在这样的情况下,一个新加入到(用于计算的可升级的)计时器算法中的元素是最大的改变。
目录(Table of Contents)
1. 引言 (Introduction)
1 1 术语(Terminology)
2 RTP使用场景(RTP Use Scenarios)
2 1 简单多播音频会议( Simple Multicast Audio Conference)
2 2 音频和视频会议(Audio and Video Conference)
2 3 混频器和转换器(Mixers and Translators)
2 4 分层编码(Layered Encodings)
3 定义(Definitions)
4 字节序,校正和时间格式(Byte Order, Alignment, and Time Format)
5 RTP数据传输协议(RTP Data Transfer Protocol)
5 1 RTP固定头域(RTP Fixed Header Fields)
5 2 多路复用RTP会话(Multiplexing RTP Sessions)
5 3 RTP头的配置文件详细变更(Profile-Specific Modifications to the RTP Header)
5 3 1 RTP报头扩展(RTP Header Extension)
6 RTP控制协议(RTP Control Protocol) -- RTCP
6 1 RTCP包格式(RTCP Packet Format)
6 2 RTCP传输间隔(RTCP Transmission Interval)
6 2 1 维护会话成员数目(Maintaining the number of session members)
6 3 RTCP包的发送与接收规则(RTCP Packet Send and Receive Rules)
6 3 1 计算RTCP传输间隔(Computing the RTCP Transmission Interval)
6 3 2 初始化(Initialization)
6 3 3 接收RTP或RTCP(非BYE)包(Receiving an RTP or Non-BYE RTCP Packet)
6 3 4 接收RTCP(BYE)包(Receiving an RTCP BYE Packet)
6 3 5 SSRC计时失效(Timing Out an SSRC)
6 3 6 关于传输计时器的到期(Expiration of Transmission Timer)
6 3 7 传输一个 BYE 包(Transmitting a BYE Packet)
6 3 8 更新we_sent(Updating we_sent)
6 3 9 分配源描述带宽(Allocation of Source Description Bandwidth)
6 4 发送方和接收方报告(Sender and Receiver Reports)
6 4 1 SR:发送方报告的RTCP包(SR: Sender report RTCP packet)
6 4 2 RR:接收方报告的RTCP包(RR: Receiver Report RTCP Packet)
6 4 3 扩展发送方和接收方报告(Extending the Sender and Receiver Reports )
6 4 4 分析发送方和接收方报告(Analyzing Sender and Receiver Reports )
6 5 SDES:源描述RTCP包(SDES: Source description RTCP packet)
6 5 1 CNAME:规范终端标识符的SDES数据项(CNAME: Canonical End-Point Identifier SDES Item)
6 5 2 NAME:用户名的SDES数据项(NAME: User name SDES item)
6 5 3 EMAIL:电子邮件地址的SDES数据项(EMAIL: Electronic Mail Address SDES Item)
6 5 4 PHONE:电话号码的SDES数据项(PHONE: Phone Number SDES Item)
6 5 5 LOC:地理用户地址的SDES数据项(LOC: Geographic User Location SDES Item)
6 5 6 TOOL:应用程序或工具名字的SDES数据项(TOOL: Application or Tool Name SDES Item)
6 5 7 NOTE:通知/状态的SDES数据项(NOTE: Notice/Status SDES Item)
6 5 8 PRIV:私有扩展的SDES数据项(PRIV: Private Extensions SDES Item)
6 6 BYE:Goodbye RTCP包(BYE: Goodbye RTCP packet)
6 7 APP:定义应用程序的RTCP包(APP: Application-Defined RTCP Packet)
7 RTP转换器和混频器(RTP Translators and Mixers)
7 1 概述(General Description )
7 2 在转换器中的RTCP数据处理(RTCP Processing in Translators)
7 3 在混频器中的RTCP数据处理(RTCP Processing in Mixers )
7 4 级联混频器(Cascaded Mixers)
8 SSRC标识符的分配和使用(SSRC Identifier Allocation and Use)
8 1 冲突概率(Probability of Collision )
8 2 冲突解决和循环检测(Collision Resolution and Loop Detection)
8 3 在分层编码中使用(Use with Layered Encodings)
9 安全(Security )
9 1 机密性(Confidentiality)
9 2 身份验证和消息完整性(Authentication and Message Integrity)
10 拥塞控制(Congestion Control)
11 网络和传输协议之上的RTP(RTP over Network and Transport Protocols)
12 协议常量摘要(Summary of Protocol Constants)
12 1 RTCP 包类型(RTCP Packet Types)
12 2 SDES 类型(SDES Types)
13 RTP概况和负载格式详细说明
(RTP Profiles and Payload Format Specifications)
14 安全考虑(Security Considerations)
15 IANA考虑(IANA Considerations)
16 知识产权声明(Intellectual Property Rights Statement)
17 鸣谢(Acknowledgments)
附录 A 算法(Algorithms)
附录 A 1 RTP数据头有效性检查(RTP Data Header Validity Checks )
附录 A 2 RTCP数据头有效性检查(RTCP Header Validity Checks)
附录 A 3 确定RTP包预期数目和丢失数目(Determining Number of Packets Expected and Lost)
附录 A 4 生成SDES RTCP包(Generating RTCP SDES Packets)
附录 A 5 解析RTCP SDES包(Parsing RTCP SDES Packets)
附录 A 6 生成32位随机标识符(Generating a Random 32-bit Identifier
附录 A 7 计算RTCP传输间隔(Computing the RTCP Transmission Interval)
附录 A 8 估测两次到达间隔的抖动(Estimating the Interarrival Jitter)
附录 B 与RFC1889不同之外(Changes from RFC 1889)
参考书目(References)
标准化引用(Normative References )
资料性引用(Informative References)
作者地址
完整的版权声明
1.绪论
本文详细的介绍实时传输协议RTP,RTP提供带有实时特性的端对端数据传输服务,传输的数据如:交互式的音频和视频。那些服务包括有效载荷类型定义,序列号,时间戳和传输监测控制。应用程序在UDP上运行RTP来使用它的多路技术和checksum服务。2种协议都提供传输协议的部分功能。不过,RTP可能被其他适当的下层网络和传输协议使用(见11节)。如果下层网络支持,RTP支持数据使用多播分发机制转发到多个目的地。
注意RTP本身没有提供任何的机制来确保实时的传输或其他的服务质量保证,而是由低层的服务来完成。它不保证传输或防止乱序传输,它不假定下层网络是否可靠,是否按顺序传送数据包。RTP包含的序列号允许接受方重构发送方的数据包顺序,但序列号也用来确定一个数据包的正确位置,例如,在视频解码的时候不用按顺序的对数据包进行解码。
但是RTP原先的设计是用来满足多参与者的多媒体会议的需要,它没有限定于专门的应用。连续数据的储存,交互分布式仿真,动态标记,以及控制和测量应用程序也可能会适合使用RTP。
该文档定义RTP,由2个密切联系的部分组成:
○实时传输协议RTP,用于实时传输数据。
○RTP控制协议RTCP,用于监控服务质量和传达关于在一个正在进行的会议中的参与者的信息。后者对“宽松控制”的会议可能已经足够,但是并没有必要去支持一个应用程序所有的通讯控制条件。这个功能可能充分的或者部分的被一个单独的会议控制协议所包含,这超过了本文档的范围。
RTP表现了协议的一种新的类型,该类型由Clark和Tennenhouse提出[10],遵循应用级(framing)框架和(integrated layer processing)统一层处理的原则。就是说,RTP被规定为可扩展的,用来提供一个专门的应用程序需要的信息,并将会经常性的被归并到应用程序的处理中,而不是作为一个单独的层被实现。RTP只是一个故意不完成的协议框架。本文档详细说明那些功能,希望这些功能能够普遍贯穿于所有适合使用RTP的应用程序。和常规的协议不同,额外的功能可能通过完善协议本身或者增加一个可能需要分析的选项机制来增加,RTP被规定为可以根据需要通过修改和/或增加操作,“剪裁”到报头。具体的例子见5.3和6.4.3节。
因此,除了本文档,用于专门应用程序的RTP完整的说明将还需要一个或者更多的同类文档(见13节):
○ 一个框架(大致轮廓)的说明文档,该文档定义了一系列的有效载荷类型编码和它们与有效载荷格式之间的映射(例如,媒体编码)。一个框架可能也定义了应用程序对R