学习RFC3550:RTP/RTCP实时传输协议基础知识

6 篇文章 0 订阅
2 篇文章 0 订阅

一 前言

RF3550定义实时传输协议RTP和它的控制协议RTCP。RTP协议是Internet上针对流媒体传输的基础协议,该协议详细说明在互联网上传输音视频的标准数据包格式。RTP本身只保证实时数据的传输,并不能提供可靠传输、流量控制和拥塞控制等服务质量保证,这需要RTCP协议提供这些服务。</br>

RTCP协议负责流媒体的传输质量保证,提供流量控制和拥塞控制等服务。在RTP会话期间,各参与者周期性彼此发送RTCP报文。报文中包含各参与者数据发送和接收等统计信息,参与者可以据此动态控制流媒体传输质量。RTP和RTCP配合使用,通过有效反馈使使流媒体传输效率最佳化。</br>

IETF的RFC3550定义RTP/RTCP协议的基本内容,包括报文格式、传输规则等。除此之外,IETF还定义一系列扩展协议,包括RTP档次扩展,RTCP报文类型扩展,等等。本文对这些协议进行初步归纳总结,在分析RFC3550的基础上,以档次为主线分析RTP系列协议,以报文类型为主线分析RTCP系列协议。</br>

二 RFC3550协议

RFC3550 - RTP: A Transport Protocol for Real-Time Applications (RTP)</br>
RFC3550协议定义RTP和RTCP协议的最基本内容,包括报文格式及头部扩展、发送和接收规则、RTP Mixer和Translator、协议安全等内容。详细内容都在协议中定义,这里只简述RTP和RTCP报文的基本格式。</br>

图1 RTP报文头部格式

RTP报文由固定头部、(可选)扩展头部和负载三部分组成,如图1所示。头部中的X域标示固定头部后面是否跟随扩展头部,PT域定义负载类型。各部分的详细定义请参考RFC3550[1]。</br>

图2 RTCP报文Sender Report头部格式

RFC3550根据RTCP报文类型定义SR、RR、SDES、BYE和APP五种报文格式。图2显示了SR(Sender Report)的报文格式,包括固定头部、发送端信息和报告块三部分组成:发送端信息携带NTP时间同步和数据发送统计等内容,报告块则包含发送端接收到数据的统计信息。关于RTCP报文格式的详细信息,请继续参考RFC3550 [1]。</br>

二 RTP档次扩展

RFC3550关于RTP档次的定义如下[1]:</br>
“档次定义了一系列负载类型和对应的负载格式,也定义了特定于具体应用的RTP扩展和修改。典型地,某个应用仅基于一个档次运行。”</br>

IETF针对RFC3550在档次方面定义了一系列扩展协议,总结如下表1:</br>

表1 RFC3550在档次方面的扩展

RFC3551(RTP/AVP)在RFC3550的基础上针对RTP档次进行补充形成RTP/APVP档次,被用在具有最小会话控制的音视频会议中,是其它扩展档次的基础。该档次在没有参数协商和成员控制的会话中非常有用。该档次也为音视频定义一系列编码和负载格式。对于具体的流媒体负载格式,IETF也定义一系列协议详细描述,如VP8视频负载格式[6]和H264视频负载格式[7],等等。</br>

RFC3711(SRTP,也即RTP/SAVP)是RTP/AVP在安全方面进行扩展形成的档次,为RTP/RTCP提供数据加密、消息认证、重放保护等功能。SRTP具有高吞吐量和低数据膨胀等特点,是异构环境下对RTP/RTCP数据的有效保护。</br>

RFC4585(RTP/AVPF)是RTP/AVP在及时反馈方面进行扩展形成的档次,使得接收端能够向发送端提供及时反馈,实现短时调整和基于反馈的修复机制。该协议定义早期RTCP报文以实现及时反馈,并定义一系列通用RTCP反馈报文和特定于应用的反馈报文,如NACK、PLI、SLI、RPSI等。</br>

RTC5124(RTP/SAVPF)则是RTP/SAVP和RTP/AVPF的综合。SAVP和AVPF在使用时,需要参与者借助于SDP协议[8]就档次和参数信息达成一致。但是对一个RTP会话来说,这两种档次不能同时被协商。而实际应用中,我们有同时使用这两种档次的需要。因此,RTP/SAVPF档次应运而生,它能够使得RTP会话同时具有安全和及时反馈两方面的特性。</br>

本节对RFC3550在档次方面扩展形成的一系列协议进行初步分析。可以看到,RFC3550只定义最基本的内容,在实际应用中会对其在安全性、及时反馈等方面进行扩展。</br>

三 RTCP报文类型扩展

RFC 3550定义五种RTCP报文,类型在报文头部的PT域定义。表2对它们作简单描述。</br>

表2 RFC3550定义的五种RTCP报文

SR报文用于发送端报告本端的数据发送统计信息和数据接收统计信息,RR报文用于报告本端的数据接收统计信息,SDES报文用于报告本端的描述性信息,BYE在本端离开会话时发送,而APP则是特定于应用的数据。</br>

IETF根据实际需求对RTCP的报文类型进行扩展,定义了一系列协议。对这类RTCP报文总结如表3所示:</br>

表3 RTCP其它报文及所在RFC

下面对这些RFC做进一步分析:</br>
RFC5450 - Transmission Time Offsets in RTP Streams</br>
该协议在定义一种更精细地描述传输时间的方法的基础上,定义一种改进的Jitter报告报文,负载类型为195。</br>

RFC5104 - Codec Control Messages in the RTP Audio-Visual Profile with Feedback (AVPF)</br>
该协议对RFC4585 AVPF档次进一步补充,定义一系列传输层和特定于负载的RTCP报文格式。该系列报文对SR/RR报文的RC域重定义为FMT域,用以区分报文的子类型。综合RFC4585所定义的报文,如下表4所示:</br>

表4 RTPFB和PSFB及其子类型

RFC3611 - RTP Control Protocol Extended Reports (RTCP XR)</br>
该协议定义RTCP扩展报告块,负载类型为207。RTCP扩展报告块在SR/RR报告块的基础上传输更多的信息。RFC3661定义了7种子报告块,总结如表5:</br>

表5 RFC3611扩展报告块

本节以报文类型为主线,归纳总结RTCP报文及其扩展报文,内容比较多也比较繁琐。这些报文为RTP提供更丰富的控制信息和统计数据。</br>

四 总结

本文在分析RTP/RTCP基础协议RFC3550的基础上,以档次为主线分析RTP系列扩展协议,以报文类型为主线分析RTCP系列扩展协议。通过以上工作,得到一个较为清晰的框架和流程,为进一步学习RTP/RTCP协议打下良好基础。</br>
</br>

参考文献

[1] RFC3550 - RTP: A Transport Protocol for Real-Time Applications </br>
[2] RFC3551 - RTP Profile for Audio and Video Conferences with Minimal Control </br>
[3] RFC3711 - The Secure Real-time Transport Protocol (SRTP) </br>
[4] RFC4585 - Extended RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/AVPF) </br>
[5] RFC5124 - Extended Secure RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/SAVPF) </br>
[6] RFC7741 - RTP Payload Format for VP8 Video </br>
[7] RFC6184 - RTP Payload Format for H.264 Video </br>
[8] RFC4566 - SDP: Session Description Protocol </br>
[9] RFC 5450 - Transmission Time Offsets in RTP Streams </br>
[10] RFC 5104 - Codec Control Messages in the RTP Audio-Visual Profile with Feedback (AVPF) </br>
[11] RFC3611 - RTP Control Protocol Extended Reports (RTCP XR) </br>



作者:weizhenwei
链接:https://www.jianshu.com/p/e5e21aeb219f
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本文描述RTP (real-time transport protocol),实时传输协议RTP 在多点传送(多播) 或单点传送(单播)的网络服务上,提供端对端的网络传输功能,适合应用程序传输实时数据, 如:音频,视频或者仿真数据。RTP 没有为实时服务提供资源预留的功能,也不能保证QoS (服 务质量)。数据传输功能由一个控制协议RTCP)来扩展,通过扩展,可以用一种方式对数据 传输进行监测控制,该协议RTCP)可以升级到大型的多点传送(多播)网络,并提供最小限 度的控制和鉴别功能。RTPRTCP 被设计成和下面的传输层和网络层无关。协议支持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 接收RTPRTCP (非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 网络和传输协议之上的RTPRTP 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) 作者地址 完整的版权声明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值