Wireshark 的基本使用
Wireshark
是一款功能强大的开源网络协议分析器,用于捕获和交互式浏览计算机网络上的数据包。它被广泛应用于网络故障排除、网络协议分析、软件和通信协议开发以及教育等领域。
Wireshark 的基本使用
Wireshark 是一个图形用户界面 (GUI) 工具,其使用相对直观。
1. 安装 Wireshark
- Linux (Debian/Ubuntu):
sudo apt update sudo apt install wireshark # 可能需要将您的用户添加到 wireshark 用户组,以便无需 root 权限即可捕获 sudo usermod -aG wireshark $USER # 之后您可能需要注销并重新登录才能使更改生效
- Windows/macOS:
从 Wireshark 官网 下载对应操作系统的安装包并按照提示安装。在 Windows 上安装时,通常会同时安装Npcap
(或旧版 WinPcap),这是进行数据包捕获所必需的驱动程序。
2. 启动 Wireshark
安装完成后,您可以在应用程序菜单中找到并启动 Wireshark。
3. 选择捕获接口
启动 Wireshark 后,您会看到一个欢迎界面,列出了您计算机上所有的网络接口(例如以太网卡、Wi-Fi 网卡、回环接口等)。
- 选择您想要捕获流量的接口。 例如,如果您通过 Wi-Fi 连接互联网,就选择您的 Wi-Fi 网卡;如果您通过有线连接,就选择以太网卡。
- 通常,接口旁边会有实时流量图,您可以根据流量图判断哪个接口正在传输数据。
- 双击 您要捕获的接口,或者选中接口后点击左上角的蓝色鲨鱼鳍图标(“Start capturing packets”)。
4. 开始捕获数据包
一旦选择了接口并开始捕获,您会看到数据包以列表的形式实时显示在 Wireshark 主窗口中。
- 红色方块图标: 停止捕获。
- 蓝色鲨鱼鳍图标: 开始捕获(如果当前未捕获)。
- 圆形箭头图标: 重新启动捕获(会清空当前捕获到的数据)。
5. Wireshark 界面概览
Wireshark 的主界面通常分为三个主要面板:
-
数据包列表面板 (Packet List Pane - 上方):
- 显示捕获到的所有数据包的摘要信息,包括:
- No. (序号): 数据包的编号。
- Time (时间): 数据包被捕获的时间(相对于捕获开始的时间)。
- Source (源地址): 发送数据包的 IP 地址或 MAC 地址。
- Destination (目的地址): 接收数据包的 IP 地址或 MAC 地址。
- Protocol (协议): 数据包使用的协议(如 TCP, UDP, HTTP, DNS 等)。
- Length (长度): 数据包的字节长度。
- Info (信息): 数据包的简要描述。
- 点击列表中的任何数据包,下面的面板会显示该数据包的详细信息。
- 显示捕获到的所有数据包的摘要信息,包括:
-
数据包详细信息面板 (Packet Details Pane - 中间):
- 显示选中数据包的详细协议层次结构。您可以展开或折叠各个协议层(如以太网层、IP 层、TCP 层、HTTP 层等),查看每个协议头中的字段和值。
- 这对理解协议如何工作以及发现异常非常有用。
-
数据包字节面板 (Packet Bytes Pane - 下方):
- 显示选中数据包的原始字节数据(十六进制和 ASCII )。
- 当您在数据包详细信息面板中选择一个字段时,这个面板会突出显示该字段对应的原始字节。
6. 过滤数据包
捕获大量数据包后,找到您感兴趣的数据包可能很困难。Wireshark 提供了强大的过滤功能:
-
捕获过滤器 (Capture Filters): 在开始捕获之前设置,用于只捕获符合特定条件的数据包,从而减少捕获文件的体积。在选择接口的界面输入。
- 示例:
host 192.168.1.1
:只捕获与 IP 地址 192.168.1.1 相关的数据包。port 80
:只捕获端口 80 的流量(通常是 HTTP)。tcp
:只捕获 TCP 协议的流量。udp
:只捕获 UDP 协议的流量。src host 192.168.1.1 and dst port 22
:从源主机 192.168.1.1 到目的端口 22 的流量。
- 示例:
-
显示过滤器 (Display Filters): 在捕获过程中或捕获结束后设置,用于只显示符合特定条件的数据包,不影响捕获文件的内容。在主窗口顶部的“Apply a display filter…”输入框中输入。
-
示例:
http
:只显示 HTTP 协议的流量。dns
:只显示 DNS 协议的流量。ip.addr == 192.168.1.1
:只显示源或目的地址为 192.168.1.1 的流量。tcp.port == 80
:只显示源或目的端口为 80 的 TCP 流量。http.request
:只显示 HTTP 请求。http.response.code == 200
:只显示 HTTP 状态码为 200 的响应。!arp
:不显示 ARP 流量。tcp.flags.syn == 1 and tcp.flags.ack == 0
:显示 TCP SYN 包。contains "password"
:显示包含 “password” 字符串的数据包 (需要注意大小写和编码)。
-
使用方法: 在显示过滤器输入框中输入表达式,然后按回车键或点击右侧的“Apply”按钮。如果过滤器语法错误,输入框会变成红色。
-
7. 保存和打开捕获文件
- 保存:
File
->Save
或Save As...
。通常保存为.pcapng
或.pcap
格式。 - 打开:
File
->Open
。您可以打开之前保存的捕获文件,或从其他工具(如 tcpdump)捕获的文件。
8. 分析功能(高级)
- Follow TCP Stream (追踪 TCP 流): 右键点击一个 TCP 数据包,选择
Follow
->TCP Stream
。这会弹出一个新窗口,显示该 TCP 连接中所有可打印的会话数据,非常有助于分析 HTTP 会话、FTP 会话等应用层数据。 - 统计信息 (Statistics): Wireshark 提供了多种统计功能,如:
Protocol Hierarchy (协议分层):
查看各种协议在捕获中所占的比例。Conversations (会话):
查看各种协议的会话列表,可以按 IP 地址、端口等排序。Endpoint (端点):
列出所有参与通信的端点及其统计信息。
- 专家信息 (Expert Information):
Analyze
->Expert Information
。Wireshark 会尝试识别捕获中的异常情况,如重传、重复 ACK、零窗口等,帮助您快速定位网络问题。
示例使用场景:
-
查看网页访问:
- 选择您的网络接口。
- 开始捕获。
- 在浏览器中访问一个网页(例如
http://example.com
)。 - 停止捕获。
- 在显示过滤器中输入
http
或ip.addr == your_web_server_ip
。 - 找到 HTTP GET 请求和 HTTP 200 OK 响应,右键点击
Follow
->TCP Stream
查看请求和响应的原始内容。
-
Ping 不通问题:
- 选择您的网络接口。
- 开始捕获。
- 在命令行中
ping other_host
。 - 停止捕获。
- 在显示过滤器中输入
icmp
。 - 查看是否有 ICMP 请求和响应,或者是否有 ICMP 错误消息。
-
DNS 解析问题:
- 选择您的网络接口。
- 开始捕获。
- 尝试访问一个域名。
- 停止捕获。
- 在显示过滤器中输入
dns
。 - 查看 DNS 查询和响应,确认解析是否成功。
重要提示:
- 权限: 在 Linux 上,您可能需要 root 权限或将您的用户添加到
wireshark
组才能捕获数据包。 - 混杂模式 (Promiscuous Mode): 默认情况下,Wireshark 会尝试将网卡设置为混杂模式,这意味着网卡会接收所有流经它的数据包,而不仅仅是发往本机的数据包。这对于网络分析至关重要。
- 加密流量: Wireshark 无法直接解密 HTTPS 或其他加密协议的流量,除非您拥有相应的私钥并进行额外配置。
- 法律与道德: 未经授权,请勿在您不拥有或未被授权的网络上捕获和分析数据包。
掌握这些基本操作,您就可以开始使用 Wireshark 进行网络分析了。随着实践的深入,您会发现它在网络故障排除和协议理解方面的巨大价值。