Southwest university of science and technology 视频信息处理与传输实验报告报告名称RTP-RTCP协议专业班级电子1002班学生姓名学号指导教师实验四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):表1 RTCP的五种分组类型第二部分是长度为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三、实验过程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 软件设置在Capture Options的设置中,将Interface设置为图上所示。
该字段指定我想用于进行捕捉的接口。
一次只能使用一个接口。
我的IP address是:192.168.0.100。
Capture Filter是捕捉过滤器,我只是选择抓取UDP的包。
进行简单的设置之后,点击开始进行抓包,等待几秒后,停止抓包,得到如图3所示。
图3 抓包四、数据结果分析整个窗口被分成三个部分:最上面为数据包列表,用来显示截获的每个数据包的总结性信息;中间为协议树,用来显示选定的数据包所属的协议信息;最下边是以十六进制形式表示的数据包内容,用来显示数据包在物理层上传输时的最终形式。
使用Wireshark可以很方便地对截获的数据包进行分析,包括该数据包的源地址、目的地址、所属协议等。
选取第一个包进行分析:帧号时间源地址目的地址高层协议包内信息概况No. Time Source Destination Protocol Info1 0.000000 218.0.156.24 192.168.0.100 UDP 62 Source port: 31843 Destination port:64512 源端口目的端口以下为物理层的数据帧概况,如图4所示:图4 物理层的数据帧Frame 1: (62 bytes on wire, 62 bytes captured) 1号帧,线路62字节,实际捕获62字节Arrival Time: NOV 11, 2013 09:49:10.062652000 捕获日期和时间Epoch Time: 1384134550.062652000 seconds 捕获时间[Time delta from previous captured frame:0.00000 seconds]此包与前1个捕获帧的时间间隔[Time delta from previous displayed frame:0.00000 seconds] 此包与前1个显示帧的时间间隔[Time since reference or first frame: 0.00 seconds]此包与第1帧的间隔时间Frame Number: 1 帧序号Packet Length: 62 bytes 帧长度Capture Length: 62 bytes 捕获长度[Frame is marked: False] 此帧是否做了标记:否[Protocols in frame: eth:ip:udp:data] 帧内封装的协议层次结构以下为数据链路层以太网帧头部信息,如图5所示:图5 数据链路层Ethernet II, Src: Tp-LinKT_6d:05:86 (00:21:27:6d: 05:86), Dst: ControlR _00: d2:16 (00:e0:80:00:d2:16)以太网协议版本II,源地址:厂名_序号(网卡地址),目的:厂名_序号(网卡地址)Destination: ControlR_00:d2:16(00:e0:80:00:d2:16)目的:厂名_序号(网卡地址)Source: Tp-LinKT_6d:05:86 (00:21:27:6d:05:86) 源:厂名_序号(网卡地址)Type: IP (0x0800) 帧内封装的上层协议类型为IP(十六进制码0800)以下为互联网层IP包头部信息,如图6所示:图6 互联网层IP包Internet Protocol, Src: 218.30.118.189 (192.168.0.100) , Dst: 192.168.0.100(192.168.0.100) 互联网协议,源IP地址,目的IP地址Version: 4 互联网协议IPv4Header length: 20 bytes IP包头部长度Differentiated Services Field:0x00(DSCP 0x00:Default;ECN:0x00)差分服务字段Total Length: 48 IP包的总长度Identification:0xb7cd (47051) 标志字段Flags:0x00 记字段Fragment offset: 0 分段偏移量(将一个IP包分段后传输时,本段的标识)Time to live: 52 生存期TTLProtocol: UDP (17) 此包内封装的上层协议为UDPHeader checksum:0x97cc[correct] 头部数据的校验[正确的] Source: 218.30.118.189 (192.168.0.100) 源IP地址Destination: 192.168.0.100(192.168.0.100) 目的IP地址以下为传输层TCP数据段头部信息,如图7所示:图7User Datagram Protocol, Src Port: 31843 (31843), Dst Port:64512(64512) 传输控制协议UDP的内容Source port: 31843 (31843) 源端口名称(端口号)Destination port: 64512(64512) 目的端口名称(端口号)Length: 28 长度Checksum: 0x0000 UDP数据段的校验和(由于选取的第一个目的地址是本机)Data: (20 bytes) 可选项五、实验中遇到的问题本次实验的主要问题在于文献的阅读和软件的使用,由于知识面的限制,对RTP和RTCP协议的了解和认识比较浅显,对于文献的阅读能力还需进一步提高;另外对于软件的使用和数据的分析,还是需要熟读协议的手册,对照抓包软件抓到数据进行分析和理解。