# Wireshark 抓包
Wireshark 是非常流行的网络抓包分析软件,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程各种问题定位。由于本次主要讲解通过国标协议 GB28181 对接视频,就需要通过抓包工具来分析请求,类似于开发过程中通过浏览器进行 network 的调试一样。
# 如何下载
通过这个下载地址 https://www.wireshark.org/ (opens new window) 下载所需的版本。然后就是常规的安装步骤了,一步一步点击。

# 如何抓包
# 开始抓包
安装完成后,打开 Wireshark 在首页界面选择需要抓包的网卡。
波浪线代表的当前网卡的实时流量


左上角前3个按钮依次代表, 启动抓包/停止抓包/重新开始抓包
我们看到目前会把通过当前网卡的网络请求全部抓取了,但在实际应用中我们只需要关注指定的请求就行,所以我们可以输入过滤条件,只关注我们需要的,避免过多打扰。
过滤器分为两类:
- 抓包过滤器(Capture Filter):在抓包前生效,决定哪些数据包被捕获。
- 显示过滤器(Display Filter):在抓包后生效,用于筛选展示符合条件的数据包。
# 抓包过滤器(Capture Filter)

抓包过滤器基于 libpcap 语法(与 tcpdump 兼容),主要语法元素包括:
| 类型 | 含义 | 示例 |
|---|---|---|
| Type | 主机、网络或端口 | host、net、port |
| Dir | 方向 | src、dst |
| Proto | 协议 | ether、ip、tcp、udp、icmp 等 |
| 逻辑运算符 | 条件组合 | &&(与)、` |
# 协议过滤
最简单的方式,直接输入协议名:
tcp # 只抓取 TCP 协议数据包
udp # 只抓取 UDP 数据包
icmp # 只抓取 ICMP 协议数据包
# IP 过滤
host 192.168.0.179 # 抓取与该主机通信的所有数据包
src host 192.168.0.179 # 抓取源 IP 为 192.168.0.179 的数据包
dst host 192.168.0.179 # 抓取目的 IP 为 192.168.0.179 的数据包
# 端口过滤
port 80 # 抓取与端口 80 相关的所有数据包
src port 80 # 抓取源端口为 80 的数据包
dst port 80 # 抓取目标端口为 80 的数据包
# 逻辑组合
src host 192.168.0.179 && dst port 80
# 源 IP 为 192.168.0.179 且目标端口为 80 的数据包
host 192.168.0.179 || host 192.168.0.179
# 主机为 192.168.0.179 或 192.168.0.179 的数据包
!broadcast
# 排除广播包
# 显示过滤器(Display Filter)
显示过滤器是 Wireshark 的核心分析利器,支持丰富的字段匹配与逻辑组合。语法更强大、更灵活,常用于分析阶段。

ip.addr 代表过滤源 IP 地址或目标 IP 地址为 192.168.0.178 并且 协议类型为 sip
ip.src 代表过滤源 IP 地址
ip.dst 代表过滤目标 IP 地址
逻辑运算符(&& 与、|| 或、!非)
# 比较操作符
| 操作符 | 含义 |
|---|---|
== | 等于 |
!= | 不等于 |
>、< | 大于、小于 |
>=、<= | 大于等于、小于等于 |
# 协议过滤
tcp # 仅显示 TCP 协议包
http # 仅显示 HTTP 协议包
icmp # 仅显示 ICMP 协议包
# IP 地址过滤
ip.src == 192.168.0.179 # 源地址为 192.168.0.179
ip.dst == 192.168.0.179 # 目标地址为 192.168.0.179
ip.addr == 192.168.0.179 # 源或目标包含该地址
# 端口过滤
tcp.port == 80 # 源或目标端口为 80
tcp.srcport == 80 # 源端口为 80
tcp.dstport == 80 # 目标端口为 80
udp.port == 53 # DNS 查询包
# HTTP 模式过滤
http.request.method == "GET" # 仅显示 HTTP GET 请求
http.request.method == "POST" # 仅显示 HTTP POST 请求
http.host == "www.example.com" # 指定主机域名的请求
http.response.code == 404 # 显示 404 响应包
# 逻辑运算符
| 符号 | 含义 |
|---|---|
and | 与 |
or | 或 |
not | 非 |
示例:
ip.addr == 192.168.0.179 and icmp
# 仅显示来自 192.168.0.179 的 ICMP 包
tcp.port == 80 or tcp.port == 443
# 过滤 HTTP 与 HTTPS 流量
not arp and not icmp
# 排除 ARP 与 ICMP 包
参考资料:
https://www.cnblogs.com/linyfeng/p/9496126.html