Wireshark 抓包分析和过滤

FreeGuideOnline 10阅读 2026-07-12

Wireshark 抓包分析与过滤完全指南

Wireshark 是世界上最流行的网络协议分析器。它能让你捕获网络流量并深入查看数据包细节,无论你是网络管理员排查故障、开发者调试网络应用,还是安全工程师进行流量审计,掌握 Wireshark 的抓包与过滤能力,都能极大提升你的工作效率。本教程将从零开始,带你系统掌握数据包捕获、显示过滤、捕获过滤以及常见场景的分析技巧。

环境准备与基本界面

安装与首次启动

访问 www.wireshark.org 下载对应操作系统版本。安装时建议同时安装 WinPcapNpcap(Windows)组件,否则 Wireshark 无法抓取网卡流量。macOS 和 Linux 系统通常通过包管理器安装即可,注意授予抓包权限。

启动后,你会看到主界面列出了本机所有网络接口。选择一个有流量的接口(例如正在上网的 Wi‑Fi 或以太网),双击即可开始实时抓包。

认识三个主要面板

抓包开始后,Wireshark 分为三个区域:

  • 数据包列表(上部) :每一行是一个抓到的数据包,最多显示七列:编号、时间、源地址、目的地址、协议、长度、信息。
  • 数据包详情(中部) :选中一个数据包后,以树状结构显示各层协议字段(帧、以太网、IP、TCP/UDP、应用层等)。
  • 原始字节(下部) :对应包的十六进制和 ASCII 表示,选中上方某字段时对应字节会高亮。

抓住这三块关系,你就掌握了 Wireshark 分析的核心视图。

开始第一次抓包

基本抓包操作

在接口上双击后,Wireshark 立即显示流量。如果只想抓取特定来源的流量,可以在开始前设置捕获过滤器(见后文),但初次学习可以不加限制直接开始。

建议关闭其它网络应用,打开一个简单的目标,比如在浏览器访问 http://example.com,然后停止抓包(点击红色方块按钮)。此时你可以看到 DNS 查询、TCP 三次握手、HTTP 请求响应等一系列数据包。

保存与打开抓包文件

停止抓包后,通过 File → Save As 保存为 .pcap.pcapng 文件。抓包文件可与他人共享,使用 Wireshark 再次打开即可离线分析,无需重新捕获。

显示过滤器:精准锁定目标数据

抓包文件可能包含大量无关流量,显示过滤器让你从已捕获的包中筛选所需,不改变抓取内容。

基本语法与常用显示过滤器

显示过滤器采用一种表达式语言,格式为 协议.字段 比较符 值,字符串用双引号,布尔运算符为 andornot,也可直接写 &&||!

最常用的过滤器示例:

  • 按 IP 地址ip.addr == 192.168.1.10 (显示与这个 IP 通信的所有包)
  • 按端口tcp.port == 80udp.port == 53
  • 按协议:直接键入 httpdnsarp
  • 排除流量!arp 排除所有 ARP 包
  • 组合条件ip.src == 10.0.0.1 and tcp.dstport == 443

输入过滤器时,文本框颜色变为绿色表示语法正确,红色表示错误。

针对 HTTP/DNS 的过滤技巧

HTTP 流量常用过滤器:

  • http.request.method == GET — 只看 HTTP GET 请求
  • http.response.code == 404 — 查看 404 响应
  • http.host contains "example" — 请求主机名包含 example
  • http.cookie — 提取所有包含 Cookie 的包

DNS 流量常用过滤器:

  • dns.flags.response == 0 — 只看 DNS 查询(请求)
  • dns.flags.response == 1 — 只看 DNS 响应
  • dns.qry.name contains "wikipedia" — 查询域名包含 wikipedia
  • dns.resp.name == "www.example.com" — 响应中匹配域名

追踪 TCP 流与会话

对某个 HTTP 或 TLS 包右键选择 Follow → TCP Stream,Wireshark 会重构完整的双向数据流,并以可读方式显示。同时自动应用显示过滤器 tcp.stream eq N,让你聚焦于此连接的所有包。这对于分析应用层协议细节尤为方便。

捕获过滤器:精确控制抓取内容

捕获过滤器在抓包开始前生效,使用 BPF(Berkeley Packet Filter) 语法。设置正确的捕获过滤器可以减少抓包文件大小并保护敏感信息。

BPF 语法速成

BPF 过滤器由原语和运算符组成:

过滤目标 语法示例
主机 host 192.168.1.1
源或目标 src 10.0.0.5dst 8.8.8.8
网络 net 192.168.1.0/24
端口 port 53tcp port 80udp portrange 1-1024
协议 arpicmptcpudp
组合 src host 10.0.0.3 and dst port 443
否定 not port 22

在 Wireshark 主界面双击接口前,可以在“捕获过滤器”输入框填写,或通过 Capture → Options 选择接口后设定。

典型捕获过滤器场景

  • 只抓与某服务器的通信:host 93.184.216.34(example.com 的 IP)
  • 排除无关协议:not arp and not stp and not dhcp
  • 抓取特定网段 DNS 报文:src net 192.168.0.0/24 and udp port 53
  • 抓取 VLAN 标签流量:vlanvlan 100

常见分析案例

诊断 TCP 连接问题

TCP 三次握手失败是常见网络故障。使用显示过滤器 tcp.flags.syn == 1 and tcp.flags.ack == 0 查看所有 SYN 包。若某个 SYN 后无对应 SYN‑ACK,可能是目标端口未开放或防火墙拦截。进一步通过 ip.addr == x.x.x.x 追踪对应 IP,并查看是否有 ICMP “destination unreachable” 包。

分析 TLS 握手指纹

现在大量流量加密,但仍可通过 Client Hello 和 Server Hello 分析协商参数。用显示过滤器 tls.handshake.type == 1 查看客户端支持的密码套件、SNI(服务器名称)等。tls.handshake.extensions_server_name 可提取域名。

定位 ARP 欺骗或重复 IP

ARP 欺骗表现为短时间内多个 MAC 地址声称同一 IP。显示过滤器 arp.duplicate-address-frame 可自动标记可能的地址冲突。结合 arp.opcode == 2(ARP 应答)手动排查。

提取文件、图片等传输内容

HTTP 明文传输可右键 HTTP 对象选择“Export Object → HTTP”,Wireshark 列出所有文件、图片、脚本等,可直接保存。对于更复杂的协议,可能需要跟随 TCP 流手动提取。

高级过滤与效率技巧

使用右键快速构建过滤条件

选中包详情中的任意字段(如 ip.src),右键选择“Apply as Filter → Selected” 立即过滤。选择“Prepare as Filter”可先填入但不立即执行,方便组合多个条件。这是最常用的操作之一。

自定义过滤栏自动补全

在显示过滤器栏输入部分单词后按 TabCtrl+Space 会弹出补全列表,列出可用协议和字段。熟练后可快速构建复杂查询。

通过着色规则辅助分析

Wireshark 默认为不同协议着色(TCP 浅紫、HTTP 绿色等),你也可以自定义着色规则:View → Coloring Rules。例如将特定源 IP 的包加亮黄色,结合显示过滤器使用事半功倍。

使用宏和过滤器按钮

将常用过滤器添加到工具栏:点击显示过滤器右侧的“书签”图标,选择“管理过滤器”,添加并勾选“显示过滤器按钮”。之后可一键切换,适合定期执行的监控任务。

总结与学习路径

掌握 Wireshark 的核心是:先会抓、再会筛。从简单全量捕获开始,逐渐习惯用显示过滤器缩小范围,再学习 BPF 捕获过滤器精确抓取。日常排查时,推荐的四步工作流为:

  1. 全局浏览:抓包后先看协议层次统计(Statistics → Protocol Hierarchy),了解流量组成。
  2. 问题定位:利用显示过滤器或跟踪功能锁定可疑连接。
  3. 对比协议细节:仔细检查 TCP 标志、应用层请求/响应码。
  4. 导出证据:导出相关对象或流,保存为新的抓包文件。

官方内置的 Help → Sample Captures 提供了大量可练习的实例,建议加载后尝试用不同过滤器分析,持续打磨你的 Wireshark 技能。当你能在数 GB 的流量文件中像看书一样快速定位关键信息时,你就真正掌握了网络分析的利器。