本文目录导读:
Wireshark 是一个非常强大且常用的网络协议分析器(抓包工具),它主要用于捕获和分析网络数据包,帮助排查网络故障、分析协议细节或进行安全审计。
以下是一份从入门到进阶的 Wireshark 核心用法指南。
基础入门
安装与启动
- 下载:官网
wireshark.org,选择对应操作系统版本。 - 权限:
- Windows:安装时需要勾选安装
Npcap(抓包驱动),安装后通常需要以管理员身份运行。 - macOS/Linux:需要
root权限,通常在终端使用sudo wireshark启动,或授予当前用户抓包权限。
- Windows:安装时需要勾选安装
选择捕获接口
启动后,你会看到一个界面列出所有网络接口(网卡)。
- 常用接口:
- 以太网 (Ethernet):有线连接。
- Wi-Fi:无线连接。
- Loopback (lo):本机回环地址(用于分析访问
0.0.1的流量)。
- 操作:双击某个接口开始实时抓包;或右键选择“Start”。
主界面布局
捕获开始后,界面主要分为三个窗格:
| 区域 | 名称 | |
|---|---|---|
| 顶部 | 数据包列表窗格 | 显示所有捕获的包摘要(编号、时间、源/目的IP、协议、长度、信息)。 |
| 中部 | 数据包详情窗格 | 点击某个包,这里会展开该包的协议层次结构(如:帧 -> 以太网 -> IP -> TCP -> HTTP)。 |
| 底部 | 原始字节窗格 | 以十六进制和ASCII码显示数据包的原始比特流。 |
核心功能:捕获过滤 vs 显示过滤
Wireshark 有两种过滤机制,非常关键且容易混淆。
| 特性 | 捕获过滤 (Capture Filter) | 显示过滤 (Display Filter) |
|---|---|---|
| 作用时机 | 在抓包开始前设置,决定哪些包被丢弃。 | 在抓包开始后设置,决定哪些包被显示。 |
| 语法风格 | 类似 tcpdump 的古老语法(较简单)。 |
自定义的强大语法(与逻辑、协议字段相关)。 |
| 目的 | 减少磁盘/内存占用,抓取特定流量。 | 从海量数据中快速定位目标包。 |
| 常用场景 | 只抓 80 或 443 端口流量。 |
抓取所有包,然后只显示 HTTP 或 DNS。 |
捕获过滤(抓包前)
在接口选择界面的“Capture Filter”输入框设置。
- 常用语法:
host 192.168.1.1:只抓与168.1.1通信的包。port 80:只抓 HTTP 流量。not arp:不抓 ARP 协议。src net 192.168.1.0/24:仅抓取源地址为168.1.x的包。
显示过滤(抓包后)
在界面顶部 “Filter” 工具栏输入,输入时会有语法提示,按回车应用。这是日常使用最多的功能。
- 常用语法:
- 基本协议:
http、dns、tcp、udp、icmp、arp - IP 地址:
ip.addr == 192.168.1.1(源或目的)、ip.src == 10.0.0.1(仅源) - 端口:
tcp.port == 443、udp.port == 53 - 逻辑组合:
http and ip.addr == 192.168.1.1(与)tcp.port == 80 or tcp.port == 8080(或)!arp(非,等同于not arp)
- 高级字段:
http.request.method == "GET"(只看GET请求)tcp.analysis.flags(标记TCP异常,如重传)frame.len > 1000(查看大于1000字节的包)
- 基本协议:
进阶与实用技巧
追踪流 (Follow Stream)
这是分析应用层协议(如 HTTP、FTP、SMTP)内容的最实用功能。
- 操作:在某个 HTTP 或 TCP 包上右键 -> Follow -> TCP Stream 或 HTTP Stream。
- 效果:Wireshark 会重组整个会话,显示客户端和服务器的完整对话内容(如网页源代码、下载的文件数据等)。
专家信息 (Expert Info)
- 位置:底部状态栏的圆形图标,或菜单
Analyze->Expert Info。 - 作用:自动分析包并标记错误、警告、注意等,如 TCP 重传 (Retransmission)、失序 (Out-of-Order)、连接重置 (RST) 等,这是排查网络延迟和丢包的利器。
着色规则 (Coloring Rules)
- 作用:不同协议默认显示不同颜色(如 HTTP 浅蓝色、DNS 浅黄色,TCP 错误深红色)。
- 自定义:
View->Coloring Rules,想高亮所有Google的流量,可以新建规则。
统计功能 (Statistics)
- Hierarchy:
Statistics-> Protocol Hierarchy,可以看到各类协议占用流量的比例,快速定位流量大户(是 HTTP 多还是 UDP 多?)。 - Conversations:
Statistics-> Conversations,查看所有通信双方的对话,按数据包数量或字节数排序,快速找出消耗带宽最大的 IP。 - IO Graph:
Statistics-> IO Graph,生成吞吐量折线图,用于分析流量突增或周期性波动。
导出特定对象 (Export Objects)
- 操作:
File->Export Objects->HTTP...或SMB...。 - 作用:当抓到包含文件传输的流量时(如网页图片、下载的文件),可以直接导出这些文件,无需手动从十六进制中提取。
常见场景示例
场景1:网站打不开,是DNS的问题吗?
- 开始抓包。
- 在浏览器访问网站。
- 停止抓包,在过滤栏输入:
dns - 检查:
- 是否有
Standard query response? - 如果有响应,看
Answers部分是否有IP地址? - 如果没有响应或响应失败,说明是 DNS 解析问题。
- 是否有
场景2:网页加载慢,是哪个环节卡了?
- 过滤栏输入:
http or dns - 计算时间差:
- DNS 耗时:
DNS Query时间戳 到DNS Response时间戳。 - TCP 连接耗时:
SYN到SYN ACK(三次握手第一、二步)。 - SSL/TLS 耗时:
Client Hello到Server Hello Done。 - 传输耗时:
HTTP GET请求发出 到 收到第一个[TCP Segment of a reassembled PDU]。
- DNS 耗时:
场景3:怀疑有人蹭网或电脑中毒发起攻击
- 过滤栏输入:
arp,看是否有大量、高频、源IP不同的ARP请求(可能是扫描)。 - 过滤栏输入:
icmp,看是否有大量Echo (ping)请求(可能是Ping Flood)。 - 查看
Statistics->Endpoints,按数据包数量排序,看哪个 IP 流量异常大。
注意事项
- 不要在生产环境长期抓包:尤其是高流量场景,Wireshark 占用内存和CPU较大。
- 不要在公共网络抓他人密码:在未授权的情况下抓取 HTTPS 之前(明文)的密码是违法的,现代 HTTPS 环境下抓到的内容是加密的。
- 磁盘空间:默认情况下,Wireshark 会把所有抓到的包暂存在内存中,停止后才会写入文件,如果抓包时间长,建议设置“自动停止”或“分片保存”(
Capture->Options->Stop capture after)。 - 使用显示过滤字段:在包详情窗格中,右键点击任一字段 -> Apply as Filter -> Selected,可以快速生成精确的显示过滤表达式。
总结一句话: 用 捕获过滤 来限制抓取范围以节省资源,用 显示过滤 来灵活查找数据,用 追踪流 来查看应用层原始内容。
标签: Wireshark用法