首页 > 其他 > 详细

RTP头简介

时间:2015-09-09 14:52:01      阅读:840      评论:0      收藏:0      [点我收藏+]


参考:

RFC3550_RTP协议中文版 
rfc3550


RTP包主要由两部分组成,head和payload,head最小12个字节,可扩展。

1 相关定义

1.1 RTP 包(RTP packet)

一种数据包,其组成部分有:一个固定 RTP 报头,一个可能为空的作用源(contributing sources)列表(见下文),以及负载数据。

1.2 RTP 负载(RTP payload)

通过 RTP 传输的包中的数据,例如,音频样本或压缩好的视频数据。

1.3 RTCP 包(RTCP packet)

一种控制包,其组成有两部分:一个类似 RTP 包的固定报头, 一个结构化的部分(该部分具体元素依不同 RTCP 包的类型而定)。

1.4 同步源(SSRC,Synchronization source)

RTP 包流的源,用 RTP 报头中 32 位数值的SSRC 标识符进行标识, 使其不依赖于网络地址。 一个同步源的所有包构成了相同计时和序列号空间的一部分, 这样接收方就可以把一个同步源的包放在一起, 来进行重放。举些同步源的例子,像来自同一信号源的包流的发送方,如麦克风、摄影机、RTP 混频器(见下文)就是同步源。一个同步源可能随着时间变化而改变其数据格式, 如音频编码。 SSRC 标识符是一个随机选取的值,它在特定的 RTP 会话中是全局唯一(globally unique)的(见章节8)。参与者并不需要在一个多媒体会议的所有 RTP 会话中,使用相同的 SSRC 标识符;SSRC 标识符的绑定通过RTCP(见章节 6.5.1)。如果参与者在一个 RTP 会话中生成了多个流,例如来自多个摄影机,则每个摄影机都必须标识成单独的同步源。

1.5 终端系统(End system)

一种应用程序,它产生发送出的 RTP 包中内容,或者使用接收到的 RTP 包中内容。 在一个特定的 RTP 会话中, 一个终端系统可以扮演一个或多个同步源角色,但通常是一个。

1.6 作用源(CSRC,Contributing source )

若一个 RTP 包流的源,对由 RTP 混频器生成的组合流起了作用,则它就是一个作用源。


2 RTP头

技术分享


前 12 个字节出现在每个 RTP 包中,仅仅在被混合器插入时,才出现 CSRC 识别符列表。这 
些域有以下意义:

  • 版本(V):2 比特 此域定义了 RTP 的版本。此协议定义的版本是 2。(值 1 被 RTP 草案版本 
    使用,值 0 用在最初"vat"语音工具使用的协议中。)


  • 填充(P):1 比特 若填料比特被设置,则此包包含一到多个附加在末端的填充比特,填充比 
    特不算作负载的一部分。 填充的最后一个字节指明可以忽略多少个填充比特。 填充可能用于某些 
    具有固定长度的加密算法,或者用于在底层数据单元中传输多个 RTP 包。


  • 扩展(X):1 比特 若设置扩展比特,固定头(仅)后面跟随一个头扩展。


  • CSRC 计数(CC):4 比特 CSRC 计数包含了跟在固定头后面 CSRC 识别符的数目。


  • 标志(M):1 比特 标志的解释由具体协议规定。它用来允许在比特流中标记重要的事件,如 
    帧边界。


  • 负载类型(PT):7 比特 此域定义了负载的格式,由具体应用决定其解释。协议可以规定负载 
    类型码和负载格式之间一个默认的匹配。 其他的负载类型码可以通过非 RTP 方法动态定义。 RTP 
    发送端在任意给定时间发出一个单独的 RTP 负载类型;此域不用来复用不同的媒体流。


  • 序列号(sequence number):16 比特 每发送一个 RTP 数据包,序列号加 1,接收端可 
    以据此检测丢包和重建包序列。 序列号的初始值是随机的(不可预测),以使即便在源本身不加密 
    时(有时包要通过翻译器,它会这样做),对加密算法泛知的普通文本攻击也会更加困难。


  • 时间戳(timestamp) 32 比特时间戳反映了 RTP 数据包中第一个字节的采样时间。时 
    钟频率依赖于负载数据格式,并在描述文件(profile)中进行描述。也可以通过 RTP 方法对负 
    载格式动态描述。时间戳可用来实现不同媒体流的同步


  • SSRC:32 比特 用以识别同步源。标识符被随机生成,以使在同一个 RTP 会话期中没有 
    任何两个同步源有相同的 SSRC 识别符。尽管多个源选择同一个 SSRC 识别符的概率很低,所 
    有 RTP 实现工具都必须准备检测和解决冲突。若一个源改变本身的源传输地址,必须选择新的 
    SSRC 识别符,以避免被当作一个环路源。

下面是抓包示例

技术分享


RTP头简介

原文:http://feather.blog.51cto.com/4767437/1693056

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!