# Wireshark 抓包

Wireshark 是非常流行的网络抓包分析软件,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程各种问题定位。由于本次主要讲解通过国标协议 GB28181 对接视频,就需要通过抓包工具来分析请求,类似于开发过程中通过浏览器进行 network 的调试一样。

# 如何下载

通过这个下载地址 https://www.wireshark.org/ (opens new window) 下载所需的版本。然后就是常规的安装步骤了,一步一步点击。

image-20251011090354111

# 如何抓包

# 开始抓包

安装完成后,打开 Wireshark 在首页界面选择需要抓包的网卡。

波浪线代表的当前网卡的实时流量

image-20251011091006118

image-20251011091932605

左上角前3个按钮依次代表, 启动抓包/停止抓包/重新开始抓包

我们看到目前会把通过当前网卡的网络请求全部抓取了,但在实际应用中我们只需要关注指定的请求就行,所以我们可以输入过滤条件,只关注我们需要的,避免过多打扰。

过滤器分为两类:

  • 抓包过滤器(Capture Filter):在抓包前生效,决定哪些数据包被捕获。
  • 显示过滤器(Display Filter):在抓包后生效,用于筛选展示符合条件的数据包。

# 抓包过滤器(Capture Filter)

image-20251011101721231

抓包过滤器基于 libpcap 语法(与 tcpdump 兼容),主要语法元素包括:

类型 含义 示例
Type 主机、网络或端口 hostnetport
Dir 方向 srcdst
Proto 协议 etheriptcpudpicmp
逻辑运算符 条件组合 &&(与)、`

# 协议过滤

最简单的方式,直接输入协议名:

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 的核心分析利器,支持丰富的字段匹配与逻辑组合。语法更强大、更灵活,常用于分析阶段。

image-20251011092459938

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

上次更新: 2025/10/27