Wireshark 2.2.6 完整教程
前言:为什么是 Wireshark?
Wireshark 被誉为“网络世界的显微镜”,它是一款开源的协议分析器,能够捕获并实时显示通过网络的数据包,无论你是网络管理员、程序员、安全工程师,还是一名对网络技术充满好奇的学生,Wireshark 都是你不可或缺的强大工具。

本教程将带你从零开始,一步步掌握 Wireshark 的核心用法。
第一部分:准备工作
在开始之前,请确保你已经完成了以下步骤:
-
下载并安装 Wireshark 2.2.6
- 由于版本较旧,你可能无法从官网直接下载,可以从一些软件存档网站(如
oldversion.com)搜索并下载。 - 安装时务必勾选 "Install WinPcap" 选项! WinPcap 是一个数据包捕获库,是 Wireshark 能够捕获网络流量的基础,没有它,Wireshark 无法工作。
- 按照安装向导完成安装即可。
- 由于版本较旧,你可能无法从官网直接下载,可以从一些软件存档网站(如
-
了解你的网络环境
(图片来源网络,侵删)- 有线连接 vs. 无线连接:如果你使用有线连接(网线直连),Wireshark 默认会捕获所有经过网卡的数据,如果你使用 Wi-Fi,默认只能捕获连接到同一个 Wi-Fi 下的广播数据包和你自己设备的通信数据,要捕获所有 Wi-Fi 流量,需要将网卡设置为“混杂模式”(Promiscuous Mode),这通常需要管理员权限。
- 选择正确的网卡:一台电脑可能有多个网络接口(有线、无线、虚拟网卡等),捕获前必须选择你想要监听的那个网卡。
第二部分:首次启动与界面概览
打开 Wireshark 2.2.6,你会看到如下界面:
这个界面主要分为三个部分:
-
捕获接口列表
- 位于顶部左侧,列出了你电脑上所有可用的网络接口。
- 在每个接口旁边,会显示一些实时统计信息,如数据包接收速率 (
Pkt/s)、带宽 (Mbps)。 - 关键操作:点击你想要监听的网卡左侧的 开始捕获 按钮(一个蓝色鲨鱼鳍图标),或者直接双击该网卡。
-
数据包列表
(图片来源网络,侵删)- 位于顶部右侧,是捕获到的数据包的“目录”。
- 每一行代表一个数据包,并显示关键信息:
- No.:数据包序号。
- Time:捕获时间戳。
- Source:源 IP 地址或 MAC 地址。
- Destination:目标 IP 地址或 MAC 地址。
- Protocol:使用的协议(如 TCP, UDP, ICMP, DNS, HTTP 等)。
- Length:数据包长度。
- Info:关于该数据包的额外摘要信息。
-
数据包详情
- 位于底部左侧,是选中数据包的“解剖图”。
- 它以树状结构(协议栈)展示了数据包的完整封装结构,从物理层(以太网帧)到应用层(HTTP 请求)。
- 你可以点击每一层(如
Ethernet II,Internet Protocol Version 4,Transmission Control Protocol)来查看该层的详细字段。
-
数据包字节
- 位于底部右侧,是选中数据包的“原始形态”。
- 上半部分以十六进制显示数据,下半部分以 ASCII 字符显示可读部分。
- 这是分析应用层数据(如 HTTP 请求内容、DNS 查询域名)的关键区域。
第三部分:核心操作
开始与停止捕获
- 开始捕获:如前所述,点击网卡旁边的 开始捕获 按钮。
- 停止捕获:点击工具栏上的红色 停止 按钮。
- 重新开始捕获:点击工具栏上的 重新开始 按钮(一个循环箭头),这会清空当前捕获列表并开始新的捕获。
建议:在分析特定问题时,先停止捕获,分析完后再重新开始,这样可以保持列表的整洁。
使用过滤器
过滤器是 Wireshark 的灵魂,能帮你从海量数据包中快速找到目标。
A. 显示过滤器 这是最常用、最高效的过滤器,它只显示符合条件的数据包,而不删除其他数据。
- 语法:使用类似编程语言的语法,但非常直观。
- 位置:在工具栏下方有一个标有 "Filter:" 的输入框。
常用过滤器示例:
| 过滤器表达式 | 说明 |
|---|---|
http |
显示所有 HTTP 协议的数据包。 |
dns |
显示所有 DNS 协议的数据包。 |
ip.addr == 192.168.1.100 |
显示源或目标 IP 地址为 168.1.100 的所有数据包。 |
tcp.port == 80 |
显示源或目标端口为 80 (HTTP) 的所有 TCP 数据包。 |
tcp.port == 443 |
显示所有 HTTPS 流量。 |
icmp |
显示所有 ICMP 协议的数据包(如 ping 命令)。 |
dns and ip.addr == 8.8.8.8 |
显示与 Google DNS 服务器 (8.8.8) 的所有 DNS 通信。 |
tcp.flags.syn == 1 |
显示所有 TCP 握手中的 SYN 包(用于发起新连接)。 |
tcp.stream eq 0 |
显示属于第一个 TCP 会话的所有数据包。 |
B. 捕获过滤器 这个过滤器在数据包被捕获到内存之前就进行筛选,可以极大地减少系统资源占用,但功能比显示过滤器弱。
- 语法:使用
tcpdump的语法。 - 位置:在开始捕获前,点击 捕获选项 按钮(一个齿轮图标),在弹出的窗口中设置。
常用捕获过滤器示例:
| 过滤器表达式 | 说明 |
|---|---|
host 192.168.1.100 |
只捕获与 168.1.100 相关的流量。 |
port 80 |
只捕获端口 80 的流量。 |
tcp |
只捕获 TCP 流量。 |
src host 192.168.1.1 and dst port 22 |
只捕获来自 168.1.1 且目标端口为 22 (SSH) 的 TCP 流量。 |
技巧:不确定语法?在 捕获选项 窗口中,有一个 表达式... 按钮,可以帮你构建过滤器。
第四部分:实战分析
让我们通过几个常见的场景来实践。
分析网页访问过程
- 设置过滤器:在显示过滤器中输入
http,然后开始捕获。 - 访问网页:打开浏览器,访问一个网站,
http://www.baidu.com。 - 观察数据包:
- 你会看到很多
TCP数据包,因为 HTTP 基于 TCP。 - 找到一个
TCP协议的数据包,在 数据包详情 窗口中展开它,你会看到Transmission Control Protocol->Hypertext Transfer Protocol。 - 点击
Hypertext Transfer Protocol,在下方窗口就能看到 HTTP 请求的详细信息,GET / HTTP/1.1。 - 你还可以在 数据包字节 窗口中看到更原始的请求内容。
- 你会看到很多
- 分析 DNS 查询:清空过滤器,输入
dns,你会发现,在访问网页之前,有一个或多个 DNS 查询数据包,用于将www.baidu.com解析为 IP 地址。
分析 TCP 三次握手
- 设置过滤器:输入
tcp.port == 80(或你正在访问的网站端口)。 - 访问网页:再次访问一个网站。
- 查找握手包:
- 在数据包列表中,找到连续的三个 TCP 包。
- 查看 Info 列,通常会显示
[TCP SYN],[TCP SYN, ACK],[TCP ACK]。 - 第一次握手 (SYN):客户端向服务器发送一个 SYN 包,请求建立连接,在
tcp.flags中,你会看到syn标志位为1。 - 第二次握手 (SYN-ACK):服务器收到 SYN 后,回复一个 SYN-ACK 包,表示同意连接。
syn和ack标志位都为1。 - 第三次握手 (ACK):客户端收到 SYN-ACK 后,再发送一个 ACK 包,连接建立。
ack标志位为1。
追踪 TCP 流
当一个 TCP 会话产生大量数据包时,逐个分析会很麻烦,Wireshark 可以将一个完整的会话重组在一起。
- 找到流:在数据包列表中,找到属于同一个 TCP 会话的任意一个数据包(一个 HTTP 请求包)。
- 追踪流:右键点击该数据包,选择 追踪 -> TCP 流。
- 查看结果:会弹出一个新窗口,将这个 TCP 会话的所有数据包按时间顺序重组,清晰地显示了客户端和服务器之间的完整对话内容(如 HTTP 请求和响应),这对于调试应用层问题非常有用。
第五部分:高级技巧与注意事项
- 重新组装数据:对于被分片或加密(如 TLS/SSL)的数据,Wireshark 可以尝试重新组装,在 数据包详情 窗口中,右键点击协议层(如
TCP或TLS),选择 重新组装。 - 导出数据:你可以将感兴趣的数据包列表或数据包内容导出为文本、CSV 或其他格式,选择 文件 -> 导出指定数据包。
- 颜色规则:Wireshark 使用颜色来区分不同类型的数据包,方便快速识别。
- 黑色:TCP
- 蓝色:DNS
- 青色:UDP
- 你可以自定义颜色规则:通过 视图 -> 着色规则。
- 注意事项:
- 法律和道德:未经授权捕获和分析他人的网络流量是违法的! 请务必在获得授权的网络(如你自己的家庭、公司网络)或用于学习目的下使用 Wireshark。
- 性能:在高流量网络下捕获可能会消耗大量 CPU 和内存,建议使用捕获过滤器,并及时停止捕获。
- 敏感信息:捕获的数据包中可能包含密码、账号等敏感信息,请妥善处理你的捕获文件。
这份教程涵盖了 Wireshark 2.2.6 的核心功能,要真正掌握它,最好的方法就是多动手实践。
- 从简单的
ping命令开始,捕获并分析 ICMP 包。 - 用
traceroute或tracert命令,观察沿途的路由器是如何回复 ICMP 超时包的。 - 尝试使用
nslookup或dig命令,观察 DNS 查询的完整过程。
Wireshark 是一个功能极其强大的工具,本教程只是带你入门,随着你经验的积累,你会发现它在网络故障排查、性能优化、安全分析等领域的无穷魅力,祝你学习愉快!
