下面我将从 “是什么”、“为什么”、“怎么用” 三个层面,为你系统地梳理 Wireshark 网络分析的核心知识。

Wireshark 是什么?为什么用它?
是什么?
Wireshark 是一款开源的、跨平台的网络协议分析器,你可以把它想象成网络的“显微镜”或“听诊器”,它能够捕获流经你电脑网卡(或指定网络接口)的所有数据包,并以可读的方式将这些数据包的详细信息展示出来。
为什么用它?(核心价值)
- 故障排查:这是最常见的用途,当网络变慢、网页打不开、应用连接失败时,通过分析数据包,可以精确定位问题是出在延迟、丢包、还是 DNS 解析错误等。
- 性能分析:分析应用的流量模式,找出性能瓶颈,一个数据库查询是否发送了过多的小包,一个文件传输是否没有充分利用带宽。
- 安全审计:检测网络中的异常流量,如扫描行为、恶意软件通信、数据泄露等,通过分析数据包内容,可以发现潜在的攻击。
- 协议学习:对于学习网络协议(如 HTTP, TCP, DNS, DHCP)Wireshark 是最好的工具,你可以亲眼看到协议的握手过程、数据交互和挥手断开,比看书本直观得多。
- 开发调试:开发网络应用或 API 时,可以使用 Wireshark 来验证客户端和服务器之间的通信是否符合预期,检查请求和响应的格式是否正确。
如何使用 Wireshark?(核心操作指南)
安装与启动
- 下载:从 Wireshark 官网 下载并安装。
- 启动:安装时会自动安装 Npcap(用于数据包捕获的底层驱动),首次启动时,可能会提示管理员权限,允许它捕获数据包。
捕获数据包
- 选择接口:启动后,你会看到一个网络接口列表(如
以太网、WLAN、Loopback),选择你想监听的网卡,然后点击左上角的蓝色鲨鱼鳍图标开始捕获。- Loopback (127.0.0.1):用于分析本机进程间的通信。
- 以太网/WLAN:用于分析本地局域网流量。
- 停止捕获:点击红色的方块按钮停止捕获。
- 显示选项:在开始捕获前,可以设置“捕获选项”,比如只捕获特定接口、使用 BPF 过滤器(高级用法)等。
三窗体界面(理解核心布局)
Wireshark 的界面由三个主要部分组成,从上到下分别是:
-
数据包列表
- 作用:显示捕获到的所有数据包的概览。
- 关键列:
- No.:数据包序号。
- Time:时间戳,可以用来计算数据包之间的延迟。
- Source:源 IP 地址。
- Destination:目的 IP 地址。
- Protocol:协议类型(如 TCP, UDP, ICMP, DNS)。
- Length:数据包长度。
- Info:关于该数据包的摘要信息(如 HTTP 的 GET 请求、DNS 的查询域名)。
- 操作:点击列表中的任意一行,下方两个窗口的内容就会随之更新。
-
数据包详情
(图片来源网络,侵删)- 作用:以树状结构显示选中数据包的协议头部信息。
- 结构:从物理层开始,逐层向上解析(Ethernet II -> Internet Protocol Transmission Control Protocol -> Hypertext Transfer Protocol)。
- 操作:点击每个协议层(如
Transmission Control Protocol),可以展开或折叠该层的详细信息,这是理解数据包结构的核心区域。
-
数据包字节
- 作用:以十六进制 和 ASCII 码 形式显示数据包的原始内容。
- 结构:
- 左侧:十六进制数据,对应于数据包在物理介质上的实际传输形式。
- 右侧:ASCII 码,方便人类阅读文本内容。
- 中间:选中下方详情区中的某个字段(如 HTTP 的
Host头),这里会高亮显示该字段在原始数据中的位置。
Wireshark 网络分析的核心技能
过滤器 - 分析的利器
捕获时流量巨大,必须学会使用过滤器来快速定位目标数据包。
-
显示过滤器:在 Wireshark 顶部的过滤器栏输入,用于在已捕获的数据包列表中筛选,这是最常用、最强大的过滤器。
- 按 IP 地址过滤:
ip.addr == 192.168.1.100(只显示与 192.168.1.100 相关的包)ip.src == 192.168.1.100 && ip.dst == 8.8.8.8(只显示从 192.168.1.100 到 8.8.8.8 的包)
- 按协议过滤:
http(只显示 HTTP 流量)tcp.port == 80(只显示目标或源端口为 80 的 TCP 流量)dns(只显示 DNS 流量)
- 过滤:
http.request.method == "GET"(只显示 HTTP GET 请求)tcp contains "password"(在 TCP 数据包中搜索包含 "password" 的内容,注意这很敏感)
- 组合过滤:
ip.addr == 192.168.1.100 && dns(只显示 IP 地址为 192.168.1.100 的 DNS 流量)
- 按 IP 地址过滤:
-
捕获过滤器:在开始捕获前设置,用于在网卡驱动层面就丢弃不匹配的数据包,减少系统负载,语法基于
libpcap/WinPcap。
(图片来源网络,侵删)host 192.168.1.100(只捕获与 192.168.1.100 往来的包)tcp port 80 or tcp port 443(只捕获 HTTP 或 HTTPS 流量)icmp(只捕获 ICMP 流量)
实战场景分析
网页无法打开
- 捕获:打开 Wireshark,选择你的网络接口,开始捕获。
- 操作:在浏览器中输入一个网址(如
www.google.com)并回车。 - 分析:
- 第一步:DNS 查询,在过滤器中输入
dns,你应该能看到一个 Type 为 "A" 的查询请求,以及一个来自 DNS 服务器的响应,里面包含www.google.com的 IP 地址,如果这里没有响应,说明 DNS 解析失败。 - 第二步:TCP 三次握手,清空过滤器,输入
tcp.port == 443(因为现在是 HTTPS),你应该能看到一个 TCP 三次握手的过程。SYN(序列号=x)SYN, ACK(序列号=y, 确认号=x+1)ACK(序列号=x+1, 确认号=y+1)- 如果看不到
ACK包,说明连接建立失败。
- 第三步:TLS 握手,在 TCP 连接建立后,紧接着是 TLS/SSL 握手,包含
Client Hello,Server Hello,Certificate等多个数据包,如果这里失败,可能是证书问题。 - 第四步:HTTP 请求/响应,握手成功后,你才能看到应用层数据,即 HTTP GET 请求和服务器返回的 HTTP 响应状态码(如 200 OK, 404 Not Found)。
- 第一步:DNS 查询,在过滤器中输入
分析 TCP 慢启动
- 目标:观察一个文件下载过程中,TCP 窗口大小如何变化。
- 操作:捕获一个从服务器下载大文件的 TCP 流。
- 分析:
- 在过滤器中输入
tcp.stream eq <流号>(先找到一个数据流,右键点击数据包列表 -> Follow -> TCP Stream,可以看到流号)。 - 在数据包详情区,展开
Transmission Control Protocol。 - 观察每个数据包中的 Window Size 字段。
- 你会看到,在连接初期,窗口值很小,随着数据包被成功确认,窗口值指数级增长(1, 2, 4, 8, 16...),这就是 TCP 的慢启动机制,目的是防止网络拥塞。
- 在过滤器中输入
发现可疑扫描行为
- 目标:在网络中发现是否有主机在进行端口扫描。
- 分析:
- 端口扫描通常表现为一个源 IP 在短时间内向同一个目的 IP 的不同端口发送大量 SYN 包(TCP Connect 扫描)或 SYN/ACK 包(UDP 扫描)。
- 可以使用统计功能:
Statistics->Endpoints或Conversations。 - 在
Conversations(对话) 界面,查看 TCP 或 UDP 的列表,按Packets(包数) 或Bytes(字节数) 排序。 - 如果看到一个 IP 对另一个 IP 的多个端口都有大量、短暂的通信,这很可能就是扫描行为。
高级技巧与最佳实践
- Follow 流:右键点击数据包列表中的任意一个数据包,选择
Follow->TCP Stream/UDP Stream,Wireshark 会自动重组并按顺序显示该会话的所有数据,非常直观。 - 专家系统:Wireshark 底部有一个 "Expert Info" 标签页,它会自动分析所有数据包,并用不同颜色(如红色表示错误,黄色表示警告)标记出可能存在的问题,是快速发现异常的利器。
- 时间戳分析:利用
Time列,可以精确计算往返时间,从发送 SYN 到收到 SYN/ACK 的时间,就是一次 RTT。 - 保存和导出:
- 保存捕获文件:
.pcap或.pcapng格式,方便后续分析或分享。 - 导出对象:
File->Export Objects->HTTP,可以捕获并保存网页中下载的图片、文件等。
- 保存捕获文件:
- TShark:学习 Wireshark 的命令行版本
TShark,对于自动化脚本和服务器环境下的网络分析非常有用。
Wireshark 网络分析是一个“实践出真知”的技能,理论知识(如 TCP/IP 模型、各协议工作原理)是基础,但真正的能力来自于不断地使用它去分析真实世界的网络问题。
学习路径建议:
- 熟悉界面:了解三个窗口的作用。
- 掌握过滤器:这是从海量数据中找到目标的关键。
- 分析标准协议:自己动手去抓一次 DNS、HTTP、TCP 握手的数据包,把理论和实际对应起来。
- 解决实际问题:从身边的小问题开始,比如家里的 Wi-Fi 为什么卡顿,某个网站为什么打不开。
希望这份指南能帮助你开启 Wireshark 网络分析的大门!
