百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

HLS实战之Wireshark抓包分析

csdh11 2025-03-02 16:52 4 浏览

0.引言

Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。

在过去,网络封包分析软件是非常昂贵的,或是专门属于盈利用的软件。Ethereal的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal是全世界最广泛的网络封包分析软件之一。

Wireshark官网地址:
https://www.wireshark.org/

软件主界面:

wireshark怎么抓包、wireshark抓包详细图文教程

为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包。wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容,总结,如果是处理HTTP,HTTPS 还是用Fiddler, 其他协议比如TCP,UDP 就用wireshark。

wireshark 开始抓包

开始界面

wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一个网卡。点击Caputre->Interfaces.. 出现下面对话框,选择正确的网卡。然后点击"Start"按钮, 开始抓包。注意网卡,千万不能选错了,否则抓不到正确的数据。我下面抓包这里选取的是VM8.

Wireshark 窗口介绍

(1) Display Filter(显示过滤器), 用于过滤

(2) Packet List Pane(封包列表), 显示捕获到的封包, 有源地址和目标地址,端口号。 颜色不同,代表

(3) Packet Details Pane(封包详细信息), 显示封包中的字段

(4) Dissector Pane(16进制数据)

(5) Miscellanous(地址栏,杂项)

使用过滤是非常重要的, 初学者使用wireshark时,将会得到大量的冗余信息,在几千甚至几万条记录中,以至于很难找到自己需要的部分。搞得晕头转向。过滤器会帮助我们在大量的数据中迅速找到我们需要的信息。

过滤器有两种:

一种是显示过滤器,就是主界面上那个,用来在捕获的记录中找到所需要的记录

一种是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。 在Capture -> Capture Filters 中设置保存过滤,在Filter栏上,填好Filter的表达式后,点击Save按钮, 取个名字。比如"Filter 102"。

Filter栏上就多了个"Filter 102" 的按钮。

过滤表达式的规则

表达式规则如下:

(1) 协议过滤

比如TCP,只显示TCP协议。下面抓包中会涉及到RTMP和HTTP协议。

(2)IP 过滤

比如 ip.src ==192.168.1.102 显示源地址为192.168.1.102,ip.dst==192.168.1.102, 目标地址为192.168.1.102

(3)端口过滤

tcp.port ==80, 端口为80,tcp.srcport == 80, 只显示TCP协议的愿端口为80。下面涉及到8080端口。

(4)Http模式过滤

http.request.method=="GET", 只显示HTTP GET方法的。

(5)逻辑运算符为 AND/ OR


封包列表(Packet List Pane)

封包列表的面板中显示,编号,时间戳,源地址,目标地址,协议,长度,以及封包信息。 你可以看到不同的协议用了不同的颜色显示。你也可以修改这些显示颜色的规则, View ->Coloring Rules。

封包详细信息 (Packet Details Pane)

这个面板是我们最重要的,用来查看协议中的每一个字段。

各行信息分别为

Frame: 物理层的数据帧概况。

Ethernet II: 数据链路层以太网帧头部信息。

Internet Protocol Version 4: 互联网层IP包头部信息。

Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP。

Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议。


TCP包的具体内容

从下图可以看到wireshark捕获到的TCP包中的每个字段。

看到这, 基本上对wireshak有了初步了解, 现在我们看一个TCP三次握手的实例:

三次握手过程为,如下:


图中可以看到wireshark截获到了三次握手的三个数据包。第四个包才是HTTP的, 这说明HTTP的确是使用TCP建立连接。

第一次握手数据包

客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。 如下图

第二次握手的数据包

服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1, 如下图:

第三次握手的数据包

客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1, 如下图:

就这样通过了TCP三次握手,建立了连接。

这一节都是Wireshark使用图文教程。手把手教你抓包。


1.Wireshark抓包HLS

其中要设置三要素,三要素如下:

(1)ip地址

(2)端口

(3)协议 http

Wireshark窗口设置,如下:

ip.addr==172.16.204.133 and tcp.port==8080 and http


点击推流(可以使用各种推流工具),可以看到如下界面:

这里举例使用ffmpeg 推流: ffmpeg -re -i time.flv -vcodec copy -acodec copy -f flv -y

也可以参考前面的文章

超详细RTMP协议详解(资深流媒体架构师推荐)

手把手搭建流媒体服务器详细步骤

拉流使用ffplay(也可以使用其它工具),命令如下,界面如下表示可以捕获成功。

这里拉取RTMP流:ffplay
rtmp://172.16.204.133/live/livestream

拉取HTTP流,命令如下,表示可以捕获成功,可以看到这里捕获的都是HTTP协议的内容。

关于HLS手把手搭建流媒体服务器,可以参考这篇文章:手把手配置HLS流媒体服务器

这里拉取HTTP流:HLS拉流地址:ffplay
http://172.16.204.133:8080/live/livestream.m3u8

注意:HLS,这里走的是HTTP协议。

可以看到客户端请求服务器端livestream.m3u8的数据。

通过HLS抓包分析,可以看到通过HTTP分段拉取ts片段,如下图中的livestream-148.ts、livestream-149.ts、livestream-150.ts、livestream-151.ts

注意:客户端会实时拉取更新的livestream.m3u8。


还能抓取到PAT表、PMT表。

有些为了降低延时,有些策略会去拉取最近的ts流,但是这样可能会有个问题。为什么呢?

如果直接播放最后一个ts文件,那播放完当前ts文件的时候,这个时候去拉更新m3u8文件,接下来的ts文件不一定生成好。这样就可能会有断音,造成不好的用户体验。比如当前播放的是9秒,新生成的ts要10秒,这样就会造成断音。为了兼容这两种情况,那就可以适当缓冲下,再播放。

本篇文章偏向实战,抓包分析,本篇文章就分析到这里,欢迎大家关注欢迎关注,点赞,转发,收藏,分享,评论区讨论。

后面关于项目知识,后期会更新。欢迎关注微信公众号"记录世界 from antonio"。

相关推荐

万字硬核解析!RocketMQ集群环境搭建

一、RocketMQ集群架构通过之前安装单台RocketMQ,并演示了消息的收发,已经基本了解了RocketMQ是怎么样工作的,下面就来搭建一个集群...

推荐一款单机10W+的可用即时通讯工具

今天给大家推荐一款单机10W+的可用即时通讯工具,她就是:courier-信使。她是一款简洁轻量的即时通讯工具。?展示截图...

tar、gzip、zip、jar是什么,怎么查看?

...

建议收藏!深入理解Java虚拟机:JVM垃圾回收算法+垃圾收集器

02JVM垃圾回收算法2.1什么是垃圾回收?...

Spring boot——Actuator 详解

一、什么是ActuatorSpringBootActuator模块提供了生产级别的功能,比如健康检查,审计,指标收集,HTTP跟踪等,帮助我们监控和管理SpringBoot应用。...

JVM 参数调优

时至今日,生产环境中依旧是JDK8占据主流,因此,本文将围绕JDK8常用的CMS和G1进行相关参数的讲解。...

Java开发工程师进阶篇- 扫盲Java中的各种锁,你学会了吗?

-Java中锁的概念...

Linux入门手册

Linux是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的性能稳定的操作系统,可免费使用并自由传播。Linux是众多操作系统之一,目前流行的服务器和PC端操作系统有Li...

java:Cassandra入门与实战——下

Cassandra入门与实战——上...

带你来搭建虚拟机和Redis集群,记得收藏

来源于公众号Java爱好者社区,作者东升的思考1、前言我们看到分析Redis使用或原理的文章不少,但是完整搭建一套独立的Redis集群环境的介绍,并不是很多或者说还不够详细。那么,本文会手把...

做开发这么久了,还不会搭建服务器Maven私有仓库?这也太Low了吧

大家好,我是冰河~~...

JDK 17 之 JVM调优 史诗级 教程

JDK17之JVM调优史诗级教程文章目录...

带你认识JDK8中超nice的Native Memory Tracking

本文分享自华为云社区《NativeMemoryTracking详解(1):基础介绍》,作者:毕昇小助手。0.引言我们经常会好奇,我启动了一个JVM,他到底会占据多大的内存?他的内存都消耗在哪...

JVM 堆外内存泄漏排查

现象:operation服务持续内存增长不释放导致超过80%阈值告警,通过观察内存不会下降,而且占用内存为14G超过了jvm参数-Xmx10G的限制...

Spring Boot整合MybatisPlus和Druid

在Java中,我比较ORM...