Wireshark 2.0.2 完整教程:从入门到精通
目录
- 前言:什么是 Wireshark?
- 第一步:安装与准备
- 第二步:认识主界面
- 第三步:捕获数据包
- 第四步:分析数据包(核心)
- 1 使用过滤器
- 2 解读数据包详情
- 3 查看原始数据
- 第五步:实战演练
- 1 场景一:排查网页打不开的问题
- 2 场景二:分析 DNS 查询过程
- 第六步:高级技巧与进阶
- 1 设置捕获过滤器
- 2 导出和保存数据
- 3 跟流
- 第七步:常见问题与注意事项
前言:什么是 Wireshark?
Wireshark 是一款开源的、跨平台的网络协议分析器,你可以把它想象成网络的“X光机”或“听诊器”,它能够捕获你计算机与网络之间传输的所有数据包,并以可读的方式展示出来,让你清晰地看到网络中到底发生了什么。

主要用途:
- 网络故障排查:定位网络延迟、丢包、连接失败等问题。
- 性能分析:分析网络带宽使用情况,找出性能瓶颈。
- 安全审计:检测网络攻击、异常流量或恶意软件通信。
- 协议学习:通过查看真实的数据包,深入理解各种网络协议(如 HTTP, DNS, TCP/IP)的工作原理。
第一步:安装与准备
在开始之前,你需要确保以下几点:
-
下载与安装:
- 访问 Wireshark 官方网站:https://www.wireshark.org/
- 在 2.0.2 发布时期,你可以直接在 "Download" 页面找到对应的安装包,你可以下载最新版,其核心操作与 2.0.2 基本相同。
- 安装时,务必勾选 "Install WinPcap" 选项,WinPcap 是一个数据包捕获库,没有它,Wireshark 无法在 Windows 上捕获网络流量。
-
以管理员身份运行:
(图片来源网络,侵删)捕获网络数据包需要修改网络接口的设置,这通常需要管理员权限,每次启动 Wireshark 时,建议右键点击图标,选择“以管理员身份运行”。
-
选择正确的网络接口:
- 这是最关键的一步,你需要告诉 Wireshark 在哪个网络连接上监听流量。
- 打开 Wireshark 后,主界面上方会显示你计算机上所有的网络接口(如以太网、Wi-Fi)。
eth0或以太网:通常代表有线连接。wlan0或WLAN:通常代表无线 Wi-Fi 连接。Loopback: lo:代表本地回环地址(127.0.0.1),用于本机进程间通信,一般用于调试本地服务。- 点击你想要分析的那个接口左边的蓝色小鱼图标,开始捕获数据。
第二步:认识主界面
Wireshark 2.0.2 的主界面分为三个主要部分,从上到下依次是:
-
工具栏:
(图片来源网络,侵删)提供了最常用的快捷操作,如开始/停止捕获、重新开始捕获、打开/保存文件等。
-
数据包列表:
- 这是界面的核心区域,它会列出所有捕获到的数据包,每行代表一个数据包。
- 列信息:默认包含
编号、时间戳、源地址、目标地址、协议、长度、信息等,你可以通过右键点击列标题来自定义显示哪些列。 - 操作:点击任意一行,下方的“数据包详情”区域就会显示该数据包的详细信息。
-
数据包详情:
- 当你在“数据包列表”中选中一个数据包后,这里会以树状结构展示该数据包的协议分层信息。
- 一个 HTTP 请求的数据包,会先显示
Frame(物理帧),然后是Ethernet II(以太网帧头),Internet Protocol Version 4(IP),Transmission Control Protocol(TCP),最后是Hypertext Transfer Protocol(HTTP)。 - 操作:点击每一层(如
HTTP),下方的“数据包字节”区域就会显示该层协议的原始数据。
-
数据包字节:
- 这是最底层的区域,以十六进制和 ASCII 码两种形式展示选中数据包的原始内容。
- 左边是十六进制,右边是对应的 ASCII 字符,中间的竖线 () 标识了可打印字符的范围。
- 操作:当你点击“数据包详情”中的某个字段时,这里对应的字节区域会高亮显示,让你能直观地看到协议字段与原始数据的对应关系。
第三步:捕获数据包
- 选择接口:如上所述,点击你想监听的网络接口旁的蓝色小鱼图标。
- 开始捕获:图标会变成红色方块,表示正在捕获,所有经过该接口的网络流量都会被记录下来。
- 产生流量:为了捕获到有用的数据,你需要进行一些网络活动。
- 打开浏览器,访问一个网站(如
www.google.com)。 ping一个地址(在命令行中输入ping baidu.com)。- 发送一封邮件。
- 打开浏览器,访问一个网站(如
- 停止捕获:点击红色的方块按钮,停止捕获。
你的“数据包列表”中应该充满了数据包,如果你没有使用过滤器,列表可能会非常庞大。
第四步:分析数据包(核心)
面对成千上万个数据包,如何快速找到你关心的信息?答案是:过滤器。
1 使用过滤器
Wireshark 有两种过滤器:
- 捕获过滤器:在数据包被捕获之前就进行过滤,只捕获你感兴趣的包,优点是效率高,占用资源少,缺点是设置语法复杂。
- 显示过滤器:在数据包被捕获之后,在界面中进行过滤,优点是语法简单直观,功能强大,是日常分析中最常用的工具。
显示过滤器语法(重点): 在 Wireshark 顶部的显示过滤器输入框中输入表达式。
-
按协议过滤:这是最常用的方式。
http:只显示 HTTP 协议的数据包。dns:只显示 DNS 协议的数据包。tcp:只显示 TCP 协议的数据包。arp:只显示 ARP 协议的数据包。
-
按 IP 地址过滤:
ip.addr == 192.168.1.100:只显示源地址或目标地址为168.1.100的包。ip.src == 192.168.1.100:只显示源地址为168.1.100的包。ip.dst == 8.8.8.8:只显示目标地址为8.8.8(Google DNS) 的包。
-
按端口号过滤:
tcp.port == 80:只显示源或目标端口为 80 (HTTP) 的 TCP 包。tcp.srcport == 443:只显示源端口为 443 (HTTPS) 的 TCP 包。udp.port == 53:只显示端口为 53 (DNS) 的 UDP 包。
-
组合过滤:
http and ip.addr == 192.168.1.100:显示主机168.1.100的所有 HTTP 流量。tcp.port == 80 or tcp.port == 443:显示所有 HTTP 或 HTTPS 流量。
提示:输入过滤器时,Wireshark 会自动提示可用的字段和语法,善用这个功能!
2 解读数据包详情
假设我们过滤出了 http 流量,并选中一个数据包,查看其“数据包详情”部分:
- Frame:物理层信息,如捕获长度、到达时间等。
- Ethernet II:数据链路层(OSI 第二层),包含了源 MAC 地址和目标 MAC 地址。
- Internet Protocol Version 4:网络层(OSI 第三层),包含了源 IP 地址和目标 IP 地址。
- Transmission Control Protocol:传输层(OSI 第四层),包含了源端口、目标端口,以及 TCP 的标志位(如
SYN,ACK,FIN)。 - Hypertext Transfer Protocol:应用层(OSI 第七层),这里是 HTTP 协议的具体内容,
GET /index.html HTTP/1.1请求。
通过点击每一层,你可以自底向上地理解一个数据包的封装过程。
3 查看原始数据
在“数据包字节”区域,你可以看到最原始的 16 进制数据,当你选中“数据包详情”中的某个字段时,这里对应的字节会高亮,这对于调试或理解协议字段的具体编码方式非常有帮助。
第五步:实战演练
排查网页打不开的问题
- 启动捕获:选择你的网络接口,开始捕获。
- 尝试访问:在浏览器中输入一个你无法访问的网址(或一个能访问的用于对比)。
- 停止捕获:访问失败后,停止捕获。
- 分析流量:
- 在显示过滤器中输入
dns,看看有没有 DNS 查询请求。- 如果有
No such name或类似的错误响应,说明是 DNS 解析失败。 - 如果没有 DNS 请求,说明浏览器根本没有发起域名解析。
- 如果有
- DNS 正常,过滤
http或https。- 查看是否有
TCP三次握手(SYN->SYN/ACK->ACK)成功建立。 - 如果握手失败,可能是网络问题或防火墙阻止了连接。
- 如果握手成功,查看是否有
HTTP GET请求和服务器返回的200 OK响应,如果收到404 Not Found或500 Internal Server Error,则是 Web 服务器的问题。
- 查看是否有
- 在显示过滤器中输入
分析 DNS 查询过程
- 启动捕获,过滤器输入
dns。 - 在命令行执行
nslookup www.baidu.com。 - 停止捕获。
- 在数据包列表中,你会看到一系列的 DNS 请求和响应。
- 选中第一个 DNS 请求包:
- 在“数据包详情”中,展开
Domain Name System。 - 你会看到
Queries部分,里面有www.baidu.com的查询记录,查询类型通常是A(IPv4 地址)。 - 再看
Answers部分,这里包含了百度服务器的 IP 地址(如181.38.148)。
- 在“数据包详情”中,展开
- 分析后续包:有时 DNS 查询不是一蹴而就的,可能会有多个请求,或者涉及到 NS(域名服务器)记录等。
第六步:高级技巧与进阶
1 设置捕获过滤器
当你只需要捕获特定流量时,使用捕获过滤器可以极大减少数据量,避免硬盘写满,并提高性能。
语法基于 libpcap/WinPcap,与 tcpdump 类似。
- 示例:
- 只捕获与特定 IP 的通信:
host 192.168.1.100 - 只捕获特定端口的流量:
port 80 - 只捕获 TCP 流量:
tcp - 只捕获来自某个网段的流量:
src net 192.168.1.0/24 - 组合使用:
tcp and port 80 and host 192.168.1.100
- 只捕获与特定 IP 的通信:
注意:捕获过滤器的语法比显示过滤器严格,不支持 and/or 等复杂逻辑,需要用 && 和 。
2 导出和保存数据
- 保存所有数据:
文件 -> 保存,可以选择保存为.pcapng(推荐,Wireshark 新格式)或.pcap(旧格式)。 - 导出特定数据:选中一个或多个数据包(按住
Ctrl或Shift多选),右键选择导出选中分组为...,可以保存为纯文本、CSV 等格式,方便在其他工具中分析。
3 跟流
这是 Wireshark 的一个强大功能,可以自动将属于同一个 TCP/UDP 会话的所有数据包重组并展示出来。
- 操作:在“数据包列表”中,选中一个属于你感兴趣会话的数据包(比如一个 HTTP 请求包)。
- 右键点击,选择
跟随 -> TCP 流(或UDP 流)。 - Wireshark 会弹出一个新窗口,以原始文本的形式展示这个完整的会话内容,包括客户端的请求和服务器的响应,这对于分析应用层协议(如 HTTP, FTP, SMTP)的交互细节非常有用。
第七步:常见问题与注意事项
-
为什么我捕获不到数据?
- 权限问题:是否以管理员身份运行?
- 接口问题:是否选择了正确的网络接口?
- 流量问题:你的网络活动是否产生了流量?尝试
ping一下。 - 交换机问题:如果你在交换机上监听,默认只能捕获到广播包和发往本机的包,要捕获其他主机的流量,需要配置端口镜像。
-
数据包太多,看不过来怎么办?
- 立即使用显示过滤器:从一开始就使用过滤器(如
http,dns)来缩小范围。 - 使用捕获过滤器:如果条件允许,在捕获前就设置好过滤规则。
- 立即使用显示过滤器:从一开始就使用过滤器(如
-
数据包的顺序和时间戳是什么意思?
Number:捕获的序号。Time:精确到微秒的时间戳,用于分析网络延迟和乱序问题,默认是相对时间(从捕获开始算起),可以设置为绝对时间。
Wireshark 2.0.2 是一个功能极其强大的工具,掌握它的关键在于:
- 熟悉界面:理解列表、详情、字节三个部分的关系。
- 善用过滤器:显示过滤器是你的日常利器,捕获过滤器是你的性能加速器。
- 理解分层:从物理层到应用层,逐层分析数据包的结构。
- 勤于实践:多尝试分析不同的网络场景,如浏览网页、发送邮件、使用聊天工具等,在实践中积累经验。
希望这份教程能帮助你顺利入门 Wireshark 2.0.2,网络世界纷繁复杂,而 Wireshark 就是你探索它最得力的伙伴,祝你学习愉快!
