rtp rtcp 协议相关分析

来源:互联网 发布:unity3d 鼠标点击移动 编辑:程序博客网 时间:2024/05/16 00:40

1流媒体协议

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

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

目前,支持流媒体传输的协议主要有:实时传输协议RTP、实时传输控制协议RTCP和实时流协议RTSP(Real-time Streaming Protocol) 等,此类协议在IP/TCP协议中的位置如图1所示。


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

2 RTP/RTCP协议

       RTP协议是IEIF提出的标准,对应的RFC文档为RFC3550。如图1所示,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分组的首部格式如图2所示,其中前12个字节是必须的。


图2RTP分组的首部格式

       RTCP 协议的主要功能是:服务质量的监视与反馈、媒体间的同步,以及多播组中成员的标识。RTCP 分组也使用 UDP 传送,但 RTCP 并不对声音或视像分组进行封装。可将多个 RTCP 分组封装在一个 UDP 用户数据报中。RTCP 分组周期性地在网上传送,它带有发送端和接收端对服务质量的统计信息报告。

       RTCP包含五种分组类型

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

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

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

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

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


****************************************************************************************************************************************************************************************

******************************************************************************        分界线           **********************************************************************************

****************************************************************************************************************************************************************************************

 RTP与RTCP协议介绍
2007-04-30 16:55:44
标签:RTP 协议 RTCP 休闲 职场
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://zhangjunhd.blog.51cto.com/113473/25481
本文主要介绍RTP与RTCP协议。
author: ZJ   06-11-17
Blog: [url]http://zhangjunhd.blog.51cto.com/[/url]
 
1威胁多媒体数据传输的一个尖锐的问题就是不可预料数据到达时间。但是流媒体的传输是需要数据的适时的到达用以播放和回放。rtp时间标签本身并不负责同步,rtp协议的数据报文和控制报文的使用相邻的不同端口,这样大大提高了协议的灵活性和处理的简单性。
rtp协议只是传输数据包,不管数据包传输的时间顺序。 rtp数据包的时候,有时候一帧数据被分割成几个包具有相同的时间标签,则可以知道时间标签并不是必须的。而udp协议虽然是传输层协议但是它没有作为osi只提供协议框架,开发者可以根据应用的具体要求对协议进行充分的扩展。
 
2.2  RTP报文结构
RTP头格式如图2所示:
开始12个八进制出现在每个RTP包中,而CSRC标识列表仅出现在混合器插入时。各段含义如下:
①版本(V)
2位,标识RTP版本。
 
②填充标识(P)
1位,如设置填充位,在包尾将包含附加填充字,它不属于有效载荷。填充的最后一个八进制包含应该忽略的八进制计数。某些加密算法需要固定大小的填充字,或为在底层协议数据单元中携带几个RTP包。
 
③扩展(X)
1位,如设置扩展位,固定头后跟一个头扩展。
 
④CSRC计数(CC)
4位,CSRC计数包括紧接在固定头后CSRC标识符个数。
 
⑤标记(M)
1位,标记解释由设置定义,目的在于允许重要事件在包流中标记出来。设置可定义其他标示位,或通过改变位数量来指定没有标记位。
 
⑥载荷类型(PT)
7位,记录后面资料使用哪种 Codec , receiver 端找出相应的 decoder 解碼出來。
 
常用 types:
Payload Type
Codec
0
PCM μ -Law
8
PCM-A Law
9
G..722 audio codec
4
G..723 audio codec
15
G..728 audio codec
18
G..729 audio codec
34
G..763 audio codec
31
G..761 audio codec
 
⑦系列号
16位,系列号随每个RTP数据包而增加1,由接收者用来探测包损失。系列号初值是随机的,使对加密的文本攻击更加困难。
 
⑧时标
32端知道在正确的时间将资料播放出来。
播放出来,因为如果data当应用程序开始一个rtprtp的会话之间周期的发放一些rtcprtcp由于音频和视频数据流比传统数据对网络的延时更敏感,要在网络中传输高质量的音频、视频信息,除带宽要求之外,还需其他更多的条件。RSVP预留部分网络资源(

0 0
原创粉丝点击