视频信息处理与传输实验4
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四RTP-RTCP协议
一、实验目的
1、了解实时传输协议RTP和实时传输控制协议RTCP的基本原理;
2、学习使用RTP数据报发送实时数据,并接收重组;
3、学会使用Wireshark进行抓包,并分析数据。
二、实验内容
1、RTP协议报文段的说明语句
RTP(Real-time Transport Protocol,实时传输协议)是一个网络传输协议。RTP报文由两部分组成:报头和有效载荷。RTP报头格式如图1所示,其中:
图1 RTP报头格式
V:RTP协议的版本号,占2位,当前协议版本号为2。
P:填充标志,占1位,如果P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。
X:扩展标志,占1位,如果X=1,则在RTP报头后跟有一个扩展报头。
CC:CSRC计数器,占4位,指示CSRC 标识符的个数。
M: 标记,占1位,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。
PT: 有效载荷类型,占7位,用于说明RTP报文中有效载荷的类型,如GSM 音频、JPEM图像等。
序列号:占16位,用于标识发送者所发送的RTP报文的序列号,每发送一个报文,序列号增1。接收者通过序列号来检测报文丢失情况,重新排序报文,恢复数据。
时戳(Timestamp):占32位,时戳反映了该RTP报文的第一个八位组的采样时刻。接收者使用时戳来计算延迟和延迟抖动,并进行同步控制。
同步信源(SSRC)标识符:占32位,用于标识同步信源。该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。
特约信源(CSRC)标识符:每个CSRC标识符占32位,可以有0~15个。每个CSRC标识了包含在该RTP报文有效载荷中的所有特约信源。
2、RTCP协议报文段的说明语句
RTCP(RTP Control Protocol,控制协议)——监控服务质量并传送正在进行的会话参与者的相关信息。RTCP包括五种数据包类型(RFC3550 Page69):
以上五种分组的封装大同小异,以SR报文为例详细描述一下RTCP报文格式(RFC3550 Page35):
每个字段的含义如下:
V、P字段与RTP报头中相应字段的含义相同。
RC:接收报告计数,5位。数据包中RR数据块的数目,可为0。
PT:数据包类型,8位。其值为常量200,用于标识SR数据包。
Length:16位。RTCP数据包的长度,包括报头和补充字节信息,每32位为一个计数单元。
SSRC:32位。创建SR数据包的同步源标识符。
第二部分是长度为20个字节的发送端信息,每个SR都含有这部分信息。它对发送端传输的数据进行计数。每个字段的含义如下:
NTP时间标志:64位。表示SR的发送时间。它与从接收端返回的时间标志配合用来计算在发送端和接收端间的数据传输时间。
RTP时间标志:32位。与NTP时间标志对应的时间值。它用于同步与NTP 时间标志同步的数据源。也可用于接收端估算RTP时钟频率。
发送端数据包计数:32位。从开始传输到产生SR数据包这段时间内由发送端发送的RTP数据包。发送端改变其SSRC标识符时重新设置该计数值。
第三部分是0个或多个RR数据块。数据块的数量由接收最后一个报告以来该发送端所收听的其它数据源的数量确定。每个RR数据块通过接收来自单同步源的RTP数据包传输统计信息。由于冲突而使数据源改变其SSRC标识符时,接收端不改变其统计信息。统计信息有:
SSRC_n(数据源标识符):32位。SSRC标识符,在RR数据块中与数据源有关的信息。
丢失率:8位。发送前一个SR或RR数据包后来自数据源SSRC_ n的RTP 数据包的丢失比例等于丢失的数据包除以发送的数据包。因复制而使数据包丢失数为负值时,丢失率为0。
丢失数据包累计数:24位。开始接收后,来自数据源SSRC_n的丢失数据包数量等于发送的数据包减去实际收到的数据包,包括以后收到的或复制的数据包。因此,后来收到的数据包不作为丢失数据包。当复制数据包时,丢失数据包的值可能为负数。发送的数据包个数等于收到的数据包中的最大序号减去最小序号。
收到的最大序号扩展:32位。低16位为从数据源SSRCen收到的RTP数据包的最大序号。高16位为对上述序号的扩展。
接收抖动:32位。RTP数据包收到时刻的统计偏差的估值,用时间标志单元作测量单位,用无符号正数表示。
最后SR延时(LSR):32位。NTP时间标志的中间32位。若没有收到SR报告,则该字设置为0。
从最后一个SR以来的延时(DLSR):32位。从数据源SSRC_ n接收到最后的SR数据包到发送相应的接收报告间的延时,以1/65536秒为单位。若没有收到SR数据包,则DLSR字段设置为0。
RR数据包的格式如图4所示。除净荷类型字段的值为常量201外,其它字段与SR数据包中相应字段的含义相同。去掉了5个字(NTP时间标志、RTP时间标志、发送端数据包和字节计数)的发送端信息。
不发送数据或不接收报告时,在混合RTCP数据包的开始部分应放置空的RR 数据包(RC=0)。
表3 RR的报文格式
三、实验过程
1、完成RTP报文段的说明语句
struct RTP_PDU {
unsigned short Version:2; /* protocol version */
unsigned short P:1; /* padding flag */
unsigned short X:1; /* header extension flag */
unsigned short CC:4; /* CSRC count */
unsigned short M:1; /* marker bit */
unsigned short PT:7; /* payload type */
u_int16 SEQ; /* sequence number */
u_int32 TS; /* timestamp */
u_int32 SSRC; /* synchronization source */
u_int32 CSRC[1]; /* optional CSRC list */
}
2、完成RTCP报文段的说明语句
struct RTCP_PUD {
unsigned short Version:2; /* protocol version */
unsigned short P:1; /* padding flag */
unsigned short Count:5; /* varies by packet type */
unsigned short PT:8; /* RTCP packet type */
u_int16 Length; /* pkt len in words, w/o this word */ }
3、用Wireshark软件抓取视频和音频网络数据报,并给出RTP和RTCP数据报的分析结果。
在用Wireshark进行抓包实验中,首先是对其进行软件设置。我在实验过程中的设置如图2。
图2 软件设置