RTP为实时应用提供端到端的运输,但不提供任何服务质量的保证。多媒体数据块经过压缩编码处理后,先送给RTP封装成为RTP分组,RTP分组再装入UDP用户数据报,然后再向下地交给IP层。RTP是一个协议框架,因为它只包含了实时应用的一些共同的功能。
|
V:版本号;
P:填充字段标识;
X:扩展头标识;
CSRC count(CC):贡献源数目,和后面的CSRC有关。CSRC,贡献源,指的是不同步的源。在网络中,可能会有混合器将来自不同地点的RTP流混合成一个RTP流以节省带宽, CSRC用来区分不同的源;
M:标记一些重要的事件(由应用程序定义);
PT:净荷数据类型;
SN:序列号,每个分组的序列号(初始值随机),用来检测分组的丢失并恢复分组的序列;
TS:时间戳,反映RTP净荷中的第一个采样数据的采样时间。时间的粒度是净荷类型相关的。
例如,如果采样间隔是125微妙,在分组n+1中的第一个样本和在分组n中的第一个样本之间相差10毫秒,那么在这两个样本之间的采用数目将等于:
两个分组之间的时间/每个样本的时间=80
假定时钟颗粒度与采用间隔相同,那么分组n+1中的时标将比在分组n中的时标大80。
注意:时标和序列号的区别。由于像MPEG的交错帧的时标不是顺序发送的;但是顺序号必须是单调的。
SSRC:同步源标识符,用于标识同步源。同步源指的是,例如,一段影片的音频和视频通过不同的RTP流传输,它们是同步的。每个同步源是负责发送RTP分组并在RTP中设置序列号和时间戳的实体。
RTCP的主要功能是:服务质量的监视与反馈,媒体间的同步,以及多播组中成员的标识。由于RTCP分组很短,因此把多个RTCP分组封装在一个UDP用户数据报中。RTCP分组周期性的在网上传送,它带有发送端和接收端对服务质量的统计信息报告(如已发送的分组数和字节数,分组丢失率,分组到达时间间隔的抖动等)。
RTCP可以说是控制交通的协议,它提供了:
1)SR发送者报告分组:用来使发送端周期的向所有接收端用多播方式进行报告。内容包括:
该RTP流的SSRC;该RTP流中最新产生的RTP分组的时间戳和绝对时钟时间(或称墙上时间:wall clock time);该RTP流包含的分组数;该RTP流包含的字节数。
绝对时钟时间是必要的。因为RTP要求每一种媒体使用一个流。有了绝对时钟时间就可以进行图形和声音的同步。
2)RR接收者报告分组:用来使接收端周期性的向所有的点用多播方式进行报告。内容包括:
所接收到的RTP流的SSRC;该RTP流的分组丢失率;在该RTP流中的最后一个RTP分组的序号;分组到达时间间隔的抖动等。
发送RR分组有两个目的。第一,可以使所有的接收端和发送端了解当前网络的状态。
第二,可以使所有发送RTCP分组的站点自适应的调整自己发送RTCP分组的速率,RTCP分组的通信量不超过网络中的数据分组的通信量的5%,而接收端分组报告分组的通信量又应小于所有RTCP分组的通信量的75%。
3)SDES源描述分组:给出会话中参加者的描述,包括参加者的规范名(CNAME)
4)BYE分组:关闭一个数据流。
5)APP分组:应用程序能够定义新的分组类型。
一个概念:规范名字CNAME,用于标识某个实体,通常使用用户名@域名,一个实体可以产生不同的RTP流,各自有不用的SSRC,但是CNAME是固定的。