抓包分析rtsp\rtp\h264
一、rtsp分析
rtsp是通过tcp传输的,过滤数据包,分析如下:
追踪tcp流,可以得到如下:
//tcp.port == 1234过滤得到:
OPTIONS rtsp://127.0.0.1:1234/ RTSP/1.0
CSeq: 2
User-Agent: LibVLC/3.0.16 (LIVE555 Streaming Media v2016.11.28)
RTSP/1.0 200 OK
Server: VLC/3.0.16
Content-Length: 0
Cseq: 2
Public: DESCRIBE,SETUP,TEARDOWN,PLAY,PAUSE,GET_PARAMETER
DESCRIBE rtsp://127.0.0.1:1234/ RTSP/1.0
CSeq: 3
User-Agent: LibVLC/3.0.16 (LIVE555 Streaming Media v2016.11.28)
Accept: application/sdp
RTSP/1.0 200 OK
Server: VLC/3.0.16
Date: Wed, 09 Mar 2022 02:51:18 GMT
Content-Type: application/sdp
Content-Base: rtsp://127.0.0.1:1234/
Content-Length: 547
Cache-Control: no-cache
Cseq: 3
v=0
o=- 16560462224506433247 16560462224506433247 IN IP4 LAPTOP-QF7IG4BT
s=Unnamed
i=N/A
c=IN IP4 0.0.0.0
t=0 0
a=tool:vlc 3.0.16
a=recvonly
a=type:broadcast
a=charset:UTF-8
a=control:rtsp://127.0.0.1:1234/
m=audio 0 RTP/AVP 14
b=AS:128
b=RR:0
a=rtpmap:14 MPA/90000/2
a=control:rtsp://127.0.0.1:1234/trackID=4
m=video 0 RTP/AVP 96
b=RR:0
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=64001f;sprop-parameter-sets=Z2QAH6zZQPARfvARAAADA+kAALuAjxgxlg==,aOvjyyLA;
a=control:rtsp://127.0.0.1:1234/trackID=5
SETUP rtsp://127.0.0.1:1234/trackID=4 RTSP/1.0
CSeq: 4
User-Agent: LibVLC/3.0.16 (LIVE555 Streaming Media v2016.11.28)
Transport: RTP/AVP;unicast;client_port=57200-57201
RTSP/1.0 200 OK
Server: VLC/3.0.16
Date: Wed, 09 Mar 2022 02:51:18 GMT
Transport: RTP/AVP/UDP;unicast;client_port=57200-57201;server_port=57202-57203;ssrc=99917EDA;mode=play
Session: c81572e98faef68e;timeout=60
Content-Length: 0
Cache-Control: no-cache
Cseq: 4
SETUP rtsp://127.0.0.1:1234/trackID=5 RTSP/1.0
CSeq: 5
User-Agent: LibVLC/3.0.16 (LIVE555 Streaming Media v2016.11.28)
Transport: RTP/AVP;unicast;client_port=57204-57205
Session: c81572e98faef68e
RTSP/1.0 200 OK
Server: VLC/3.0.16
Date: Wed, 09 Mar 2022 02:51:18 GMT //单播客户端 偶数端口rtp 奇数端口rtcp
Transport: RTP/AVP/UDP;unicast;client_port=57204-57205;server_port=57206-57207;ssrc=33E4A5A5;mode=play
Session: c81572e98faef68e;timeout=60
Content-Length: 0
Cache-Control: no-cache
Cseq: 5
PLAY rtsp://127.0.0.1:1234/ RTSP/1.0
CSeq: 6
User-Agent: LibVLC/3.0.16 (LIVE555 Streaming Media v2016.11.28)
Session: c81572e98faef68e
Range: npt=0.000-
RTSP/1.0 200 OK
Server: VLC/3.0.16
Date: Wed, 09 Mar 2022 02:51:19 GMT
RTP-Info: url=rtsp://127.0.0.1:1234/trackID=4;seq=33470;rtptime=673918348, url=rtsp://127.0.0.1:1234/trackID=5;seq=29052;rtptime=673918348
Range: npt=1636.471649-
Session: c81572e98faef68e;timeout=60
Content-Length: 0
Cache-Control: no-cache
Cseq: 6
===================================================
二、RTP报文分析
1.报文
三、rtcp包分析
RTCP也是用UDP来传送的,但RTCP封装的仅仅是一些控制信息,因而分组很短,所以可以将多个RTCP分组封装在一个UDP包中。RTCP有如下五种分组类型
下面只讲述SR类型
发送端报告分组SR(Sender Report)用来使发送端以多播方式向所有接收端报告发送情况。SR分组的主要内容有:相应的RTP流的SSRC,RTP流中最新产生的RTP分组的时间戳和NTP,RTP流包含的分组数,RTP流包含的字节数。SR包的封装如图所示
四、H264包分析
1.H264中NAL UNIT HEADER简介
原始码流都是由一个个的 NALU(Network Abstract Layer)网络抽象层 连续组成,其中NALU=[StartCode] + [NALU Header] + [NALU Payload]组成,其中
StartCode:表示一个NALU的开始,一般情况下是以4字节“00 00 00 01”或者3字节“00 00 01”,一般4字节居多。
NALU Header:表示一组视频编码的头部信息,具体下面分析。
Payload:表示原始字节序列的有效载荷。
NAL UNIT HEADER
下面对比一下原始码流的H264和H265的NAL unit header。其中H264的Nal Unit头是一个字节,具体每个位表示如下:
VCL: Video Coding Layer
解析原始码流的H264 TYPE方式:
//定义header[4]为去除掉“00 00 00 01”之后的那个字节
int type = header[4] & 0x1F
这里说明一下,有些编码是没有SEI帧的,SEI这个增强信息帧中一般填入一些,人脸识别的坐标等信息,也可以自定义一些信息。一般的流都是按照sps,pps,I ,p,I,P……的顺序发送的,其中流媒体发送的时候为了能够在任何点都能够解析编码,通常会在I帧前添加sps和pps两帧的单独包或者聚合包,之后再发送I帧。
RTP包发送的时候,就是将原始码流中的“00 00 00 01”去掉,按照封装格式封装,然后为每一个封装添加RTP header,再发送出去。
在RTP其中CC 很多情况下为0,即没有CSRC信息,所以通常情况下RTP header是由12个字节组成的。
如果使用UDP传输的话,直接使用这个RTP header;但是在tcp传输的时候会在header前在添加四个字节:
[magic number]+[channel number]+[data length]
H264数据包如下:
2.H.264 RTP 载荷封装格式
TYPE的类型说明
这里我们先说下Type的类型,RTP中增加了H264中23中以外的格式,先来看下这个header头部
这个Type类型用于区分封装的类型,H.264的帧类型1-23之间,之后RTP又有新增,如下:
这里有些类型分为A型和B型,区别在于是否含有(DON, DONB, DOND)信息,含有的为B型,不含有的为A型。我们一般情况下用到的都是A型,不含有(DON, DONB, DOND)信息的,是我们主要分析的对象。
所以从封装标准文档中看,分为三种格式分别为:Single NAL unit,aggregation packet,Fragmentation unit。
单个NAL包:SINGLE NAL UNIT PACKET
这种很简单,一个 RTP 包仅由一个完整的 NALU 组成. 这种情况下 RTP NAL 头类型字段和原始的 H.264的
NALU 头类型字段是一样的,即在范围1到23之间
聚合包:AGGREGATION PACKETS
单时间聚合包:SINGLE-TIME AGGREGATION PACKET
多时间聚合包:MULTI-TIME AGGREGATION PACKETS (MTAPS)
多时间聚合包分为两种:MTAP16和MTAP24,区别在于每个NALU TS offset的长度一个是16位,一个是24位。
MTAP16格式
MTAP24格式
分片单元:FRAGMENTATION UNITS (FUS)
FU-A 的格式如下
下面是FU indicator,FU Indicator其实和NAL头部几乎一样,就是nal类型变成了分片包的类型28,原先的nal类型保存到了FU Header中的Type。
FU header
这些内容填充好之后,就和payload数据合成一个RTP包,然后发送出去。
这里S=0,E=1,R=0
TYPE= 0X5C & 0X1F = 28
TYPE = 0X81&0X1F = 1 (P帧)
10000001—》S=1, E=0,R=0 P的起始包;
参考:https://www.freesion.com/article/2309579039/
抓包分析rtsp\rtp\h264相关推荐
- Wireshark 抓包分析 RTSP/RTP/RTCP 基本工作过程
整体而言,RTSP 通常工作于可靠的传输协议 TCP 之上,就像 HTTP 那样,用于发起/结束流媒体传输,交换流媒体元信息.RTP 通常工作于 UDP 之上,用于传输实际的流媒体数据,其中的载荷格式 ...
- linux怎么抓sip包,Ubuntu下使用Wireshark进行抓包分析(含SIP和RTP包)
遇到需要在Linux下抓包分析的问题,便用到了wireshark,非常强大的抓包分析软件,直接在系统里面安装,然后使用明亮抓包即可! 我这里用的是Ubuntuserver版,执行安装: 1.apt-g ...
- 用Wireshark抓包分析协议 计算机网络
此篇博客记录使用Wireshark抓包分析协议. 目录 一.DNS 二.分析TCP握手过程 三.TLS报文 四.HTTP协议 五.SMTP 六.ARP 七.RTP 八.RTMP 一.DNS DNS是域 ...
- C++/Qt音视频通话开发MetaRTC源码解读,dtls交互流程,dtls抓包分析
目录 dtls抓包分析 dtls流程,主叫发送Client Hello dtls流程,Application Data dtls流程,Encrypted Alert 本章内容解读MetaRTC开源代码 ...
- hls二次加密 m3u8_HLS实战之Wireshark抓包分析
0.引言 Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直 ...
- Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark
Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark Wireshark(前称Ethereal)是一个网络包分析工具.该工具主要是用来捕获网络包,并显示包的详细情况.本节将分别介绍 ...
- Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述
Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述 网络协议是用于不同计算机之间进行网络通信的.网络协议是网络上所有设备(如网络服务器.计算机.交换机.路由器等)之间通信规则的集合,它 ...
- Wireshark数据抓包分析——网络协议篇
Wireshark数据抓包分析--网络协议篇 Wireshark是目前最受欢迎的抓包工具.它可以运行在Windows.Linux及MAC OS X操作系统中,并提供了友好的图形界面.同时,Wiresh ...
- 转 Wireshark和TcpDump抓包分析心得
1. Wireshark与tcpdump介绍 Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Windows平台下使用Wireshark,如果是Linux的话 ...
最新文章
- protobuf和socket通信简单实例
- PHP版本VC6与VC9/VC11/VC14、Thread Safe与None-Thread Safe等的区别
- 我的Linux随笔目录
- java 64进制转10进制_java进制转换
- 第四周实践项目7 多项式求和
- 如何把很多照片拼成一张照片_一张25GB的照片,到底比普通照片强在哪儿?
- 6.微服务设计 --- 部署
- vlan理论03-vlan映射
- 【手把手教你如何从Tushare库下载股票数据,并保存在硬盘当中。第二篇下载存储数据】
- 破解Excel受保护文件
- CocosCreator矢量绘图组件(1)
- oracle匹配excel数据,ORACLE与excel的数据互传方法
- 磁盘列阵(RAID)
- 微信小程序拼团功能页面展示
- npm install 连接不上github解决办法
- Revert R12.1.3 Homepage Layout to Link Style as in R12.1.1 or 11i
- MPU6050加速度、角速度的解算以及互补滤波使用
- 等势线matlab仿真
- 诺基亚手机软件设计大赛
- es对几十亿数据能达到秒级响应吗_万亿数据下的多维实时分析系统,如何做到亚秒级响应...
热门文章
- 我来泼盆冷水:正面迎击AI的时代千万别被ChatGPT割了韭菜
- mysql tokudb innodb_TokuDB vs Innodb 基准测试对比
- win11点击任务栏快捷方式出现“该文件没有与之关联的应用来执行该操作”解决方法
- temporal shift module(TSM)
- BootstrapVue使用入门
- reason=Fielddata is disabled on text fields by default. Set fielddata=true on [brandName] in order t
- Windows Server2012多远程桌面配置
- ATTCK 红队实战 1
- Vue学习:事件修饰符
- INtouch与 ModbusTCP通讯