RTP/RTCP协议

Warning: 本文原网页 http://www.cnblogs.com/moonvan/archive/2011/09/11/2173448.html

              在此基础上略作修改,如有侵权,请告知删除,谢谢!

流媒体协议

当前在Internet上传输音频和视频等信息主要有两种方式:下载和流式传输。

下载情况下,用户需要先下载整个媒体文件到本地,然后才能播放媒体文件。

流式传输是指传输之前首先对多媒体进行预处理(降低质量和高效压缩),然后使用缓存系统来保证数据连续正确地进行传输。使用流式传输可以边下载边观看流媒体节目,可以实现网上直播、视频会议等。

目前,支持流媒体传输的协议主要有:实时传输协议RTP(Real-time Transport Protocol)、实时传输控制协议RTCP(Real-time

Transport Control Protocol)实时流协议RTSP(Real-time Streaming Protocol) 等,此类协议在IP/TCP协议中的位置如图所

示。

0_1312533661cwxI

图 1 流媒体协议在IP/TCP协议中的位置

0_1328873949qWNw

图 2 TCP/IP模型及各层对应协议

RTP/RTCP协议

    RTP协议

RTP 为实时应用提供端到端的数据运输,但不提供任何服务质量的保证,服务质量由RTCP来提供

从应用开发者的角度看,RTP 应当是应用层的一部分。在应用的发送端,开发者必须编写用 RTP 封装分组的程序代码,然后把

RTP分组交给 UDP 插口接口。在接收端,RTP 分组通过 UDP 插口接口进入应用层后,还要利用开发者编写的程序代码从 RTP 分组

中把应用数据块提取出来。

 

RTP工作机制:当应用程序建立一个RTP会话时,应用程序将确定一对目的传输地址。目的传输地址由一个网络地址和一对端口组

成,有两个端口:一个给RTP包,一个给RTCP包,使得RTP/RTCP数据能够正确发送。

 RTP数据发向偶数的UDP端口而对应的控制信号RTCP数据发向相邻的奇数UDP端口(偶数的UDP端口+1),这样就构成一个

UDP端口对。 RTP的发送过程如下,接收过程则相反。

       1) RTP协议从上层接收流媒体信息码流(如H.263),封装成RTP数据包;RTCP从上层接收控制信息,封装成RTCP控制包。

       2) RTP将RTP 数据包发往UDP端口对中偶数端口;RTCP将RTCP控制包发往UDP端口对中的奇数端口。

 

RTP分组只包含RTP数据,而控制是由RTCP协议提供。RTP在1025到65535之间选择一个未使用的偶数UDP端口号,而在同一次会

话中的RTCP则使用下一个奇数UDP端口号。端口号5004和5005分别用作RTP和RTCP的默认端口号。RTP分组的首部格式如图3所

示,其中前12个字节是必须的。

0_1312533725GJd8

图 3 RTP分组的首部格式

     RTCP协议

     RTCP 协议的主要功能是:服务质量的监视与反馈、媒体间的同步,以及多播组中成员的标识

     RTCP 分组也使用 UDP 传送,但RTCP 并不对声音或视像分组进行封装。可将多个 RTCP 分组封装在一个 UDP 用户数据报 

     中。RTCP 分组周期性地在网上送,它带有发送端和接收端对服务质量的统计信息报告。

 

     RTCP包含五种分组类型:

        1)结束分组 BYE 表示关闭一个数据流。

        2)特定应用分组 APP 使应用程序能够定义新的分组类型。

        3)接收端报告分组 RR 用来使接收端周期性地向所有的点用多播方式进行报告。

        4)发送端报告分组 SR 用来使发送端周期性地向所有接收端用多播方式进行报告。

        5)源点描述分组 SDES 给出会话中参加者的描述。

原文地址:https://www.cnblogs.com/louis-tin/p/4862209.html