1. Wireshark 工具介绍
Wireshark 是一款开源的网络协议分析工具,主要用于:
分析抓取的网络数据包,包含TCP/IP、HTTP、DNS、数据库等协议
排查网络延迟、丢包、连接重置、服务无响应等问题
学习网络协议和进行安全分析
核心原则:
Wireshark 负责“分析”,tcpdump/dumpcap 负责“抓包”。
抓包点应选在目标流量一定会经过的机器上。
2. Wireshark 安装
Windows
访问官网 wireshark.org,下载 Windows 64-bit 安装包。
右键安装包,选择“以管理员身份运行”。
组件选择页保持默认,必须勾选 Npcap。
安装完成后打开 Wireshark,能看到 Wi-Fi 或以太网接口即正常。
由于外网下载速度可能较慢,因此提供现有安装包,内含已抓包的练手.pacp 文件:
获取途径:关注公众号【科创视野】回复wireshark
macOS
下载
.dmg镜像并打开。将 Wireshark 拖入
Applications。关键一步:在同一镜像中运行
Install ChmodBPF.pkg。否则会因权限不足无法抓包。
Linux(Ubuntu / Debian)
sudo apt update sudo apt install wireshark安装过程中会询问:
Should non-superusers be able to capture packets?
选择 Yes。
如果误选 No,执行:
sudo dpkg-reconfigure wireshark-common sudo usermod -aG wireshark $USER然后注销并重新登录。
3. Wireshark 使用
3.1 抓包在哪台机器进行
原则:
抓包点要尽量靠近故障边界。谁最可能知道真相,就在谁身上抓。
| 场景 | 优先抓包机器 | 目的 |
|---|---|---|
| 客户端报连接超时 | 服务端优先,客户端辅助 | 看 SYN 是否到达服务端 |
| 服务端报错或响应慢 | 服务端 | 看请求是否收到、响应是否发出 |
| 偶发丢包、重传 | 两端同时抓,或中间节点 | 对比时间戳,定位链路问题 |
| 数据库端口 2881 | 数据库服务端 + 客户端 | 确认 SQL 请求与响应 |
| 只能选一台 | 优先服务端 | 判断请求是否到达、服务端是否响应 |
如果服务端抓不到包,再去客户端抓,确认请求是否真正发出。
如果两端都有包但时间差很大,问题通常在网络链路或中间代理。
3.2 推荐抓包指令:tcpdump
Linux 服务器上推荐使用tcpdump,稳定、轻量、适合生产环境。
基础命令:
sudo tcpdump -i any -s 0 -nn port 2881 \ -w /tmp/$(date "+%Y%m%d%H%M%S")_$(hostname)_2881.pcap参数说明:
| 参数 | 含义 |
|---|---|
-i any | 监听所有网卡 |
-s 0 | 抓完整数据包,不截断 |
-nn | 不解析域名和端口名 |
port 2881 | 只抓源端口或目的端口为 2881 的流量 |
-w | 写入 pcap 文件 |
| 文件名 | 包含时间、主机名、端口,便于区分 |
3.3 用 Wireshark 打开并分析
抓包完成后,将.pcap文件下载到安装了 Wireshark 的电脑,直接打开。
常用操作:
在顶部显示过滤器栏输入过滤条件。
点击任意数据包,查看中间详情面板的各层协议。
右键 TCP 包,选择Follow(跟踪流) → TCP Stream,查看完整会话。
使用Statistics → Conversations查看流量对话。
使用Statistics → IO Graph查看流量随时间变化。
使用Analyze → Expert Information查看异常提示。
3.4 显示过滤器
打开 pcap 文件后,在 Wireshark 顶部的显示过滤器栏输入表达式,回车即可筛选数据包。
逻辑运算符:
&&:与||:或!:非
搜索二进制内容
有时需要直接搜索数据包载荷中的字符串,例如 SQL 语句中的select:
# 在 TCP 载荷中搜索 select,区分大小写。 tcp contains "select" # 忽略大小写,contains 做不到,需要改用正则匹配 matches tcp matches "(?i)select" # 在指定端口中搜索 select,适合数据库流量分析。 tcp.port == 2883 && tcp contains "select"追踪特定的 TCP 流
由于客户端用了不同的端口(32418 和 31782)连接 2883,如果您只想看某一整条会话,最快的方法是:
在任意数据包上右键 →Follow→TCP Stream。Wireshark 会自动生成一个tcp.stream eq 0(或对应编号)的过滤器,只显示该连接的完整交互过程。
3.5 AI 分析
现在 AI 这么强,直接让 AI 分析抓包文件即可。
总结
Wireshark 是协议分析工具,tcpdump 是服务器抓包工具。
抓包位置优先选服务端;如果服务端没收到,再去客户端或中间节点抓。
推荐服务器抓包命令:
抓完后用 Wireshark 打开,结合显示过滤器、Follow TCP Stream 和 Expert Information,即可完成从抓包到排障的完整闭环。