RTP定议
RTP(RealTimeTransportProtocol )实时传输协议的缩写定义了用于通过Internet传输音频和视频的标准数据包格式。它在RFC1889中定义。它由音频视频传输工作组开发,并于1996年首次发布。RTP广泛用于涉及流媒体的通信和娱乐系统,例如电话,视频电话会议应用程序,电视服务和基于Web的一键通功能。
RTP与RTP控制协议(RTCP)结合使用。RTP承载媒体流(例如,音频和视频),RTCP用于监控传输统计信息和服务质量(QoS),并帮助同步多个流。RTP在偶数端口号上发起和接收,关联的RTCP通信使用下一个更高的奇数端口号。RTP是VoIP的基础之一,它与SIP结合使用,SIP有助于通过网络建立连接。
RTP的历史:
该协议由四名成员组成的互联网工程任务组(IETF)开发:
S.Casner(PacketDesign)
V.雅各布森(数据包设计)
H.舒尔茨林(哥伦比亚大学)
R.Frederick(BlueCoatSystemsInc.)
RTP于1996年首次发布,称为RFC1889。接下来,它于2003年发布,名称为RFC3550。
RTP的应用:
RTP主要有助于媒体混合,排序和时间戳。
互联网协议语音(VoIP)
通过互联网进行视频电话会议。
互联网音频和视频流。
RTP报头格式:
RTP报文的报头格式图示如下图所示:
RTP的标头格式非常简单,它涵盖了所有实时应用程序。标题格式的每个字段的说明如下:
版本:
此2位字段定义版本号。当前版本为2。
P–此字段的长度为1位。如果值为1,则表示数据包末尾存在填充,如果值为0,则没有填充。
X–此字段的长度也是1位。如果此字段的值设置为1,则它表示数据和基本标头之间有一个额外的扩展标头,如果值为0,则没有额外的扩展名。
参与者计数–此4位字段指示参与者数。此处,最大可能的贡献者数为15,因为4位字段可以允许数字形式为0到15。
M–此字段的长度为1位,应用程序将其用作结束标记以指示其数据的结束。
负载类型–此字段的长度为7位,用于指示负载类型。我们列出了一些常见类型的有效载荷的应用。
负载类型
编码名称
0
微音频
1
1016
2
G721音频
3
GSM音频
5-6
DV14音频
7
液晶屏音频
8
PCMAAudio
9
G722音频
10-11
L16音频
14
MPEG音频
15
G728音频
26
运动JPEG
31
H.216
32
MPEG1视频
33
MPEG2视频
有效负载类型是一个唯一的数字,以RTP标头格式以7位表示。每个有效负载类型都指示音频/视频媒体的特定编码。允许RTP源在给定时间发送单个有效负载类型。此字段主要指定媒体流中使用的编解码器类型。
例如,如果我们使用“1”作为编码名称为1016的有效负载类型,则意味着它将对媒体流使用FS-1016语音编码。
如果我们使用编码名称为H.261的“31”有效载荷类型,则意味着它将使用ITU-T视频压缩标准。同样,每个有效负载类型的数量都表示用于音频/视频流的特定编码类型。
序列号–此字段的长度为16位。它用于为RTP数据包提供序列号。它有助于排序。第一个数据包的序列号被赋予一个随机数,然后每个下一个数据包的序列号递增1。此字段主要有助于检查丢失的数据包和顺序不匹配。
时间戳–此字段的长度为32位。它用于查找不同RTP数据包的时间之间的关系。第一个数据包的时间戳是随机给出的,然后是下一个数据包的时间戳,由上一个时间戳和生成当前数据包的第一个字节所花费的时间之和给出。1时钟周期的值因应用而异。
同步源标识符–这是一个32位字段,用于标识和定义源。此源标识符的值是由源本身选择的随机数。这主要有助于解决当两个源以相同的序列编号开始时出现的冲突。
参与者标识符–这也是一个32位字段,用于在会话中存在多个源的源标识中。混合器源使用同步源标识符,其他剩余源(最多15个)使用参与者标识符。
通过RTP协议传输的数据如下所示:
增补噪声