【Wireshark】安装与使用指南

1. Wireshark 工具介绍

Wireshark 是一款开源的网络协议分析工具,主要用于:

  • 分析抓取的网络数据包,包含TCP/IP、HTTP、DNS、数据库等协议

  • 排查网络延迟、丢包、连接重置、服务无响应等问题

  • 学习网络协议和进行安全分析

核心原则:

Wireshark 负责"分析",tcpdump/dumpcap 负责"抓包"。

抓包点应选在目标流量一定会经过的机器上。


2. Wireshark 安装

Windows

  1. 访问官网 wireshark.org,下载 Windows 64-bit 安装包。

  2. 右键安装包,选择"以管理员身份运行"。

  3. 组件选择页保持默认,必须勾选 Npcap。

  4. 安装完成后打开 Wireshark,能看到 Wi-Fi 或以太网接口即正常。

由于外网下载速度可能较慢,因此提供现有安装包,内含已抓包的练手.pacp 文件:

获取途径:关注公众号【科创视野】回复 wireshark


macOS

  1. 下载 .dmg 镜像并打开。

  2. 将 Wireshark 拖入 Applications。

  3. 关键一步 :在同一镜像中运行 Install ChmodBPF.pkg。

  4. 否则会因权限不足无法抓包。


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 的电脑,直接打开。

常用操作:

  1. 在顶部显示过滤器栏输入过滤条件。

  2. 点击任意数据包,查看中间详情面板的各层协议。

  3. 右键 TCP 包,选择 Follow(跟踪流) → TCP Stream,查看完整会话。

  4. 使用 Statistics → Conversations 查看流量对话。

  5. 使用 Statistics → IO Graph 查看流量随时间变化。

  6. 使用 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,即可完成从抓包到排障的完整闭环。

相关推荐
我不会插花弄玉9 小时前
6.传输层协议UDP【由浅入深-网络】
网络·网络协议·udp
火云代理10 小时前
更换网络后为什么会退出登录?分清 IP、Cookie 与会话的关系
服务器·网络·网络协议·tcp/ip·php·ip
xbzb13 小时前
容器 IP 每次重建都变?docker network 五种模式与自定义网桥固定地址
网络·docker·容器·ip·network·固定
火云代理14 小时前
同一个网站,有的网络能打开、有的打不开?认识 IPv4 与 IPv6 的访问差异
服务器·网络·网络协议·tcp/ip·测试工具·php·状态模式
坤坤子吖14 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
火云代理17 小时前
Python 使用代理 IP 前,先弄清 Requests 的配置来源与验证方法
网络·python·网络协议·tcp/ip·ip
如夏倾城17 小时前
QUIC——HTTP/3 的唯一底层传输协议 及 0-RTT恢复
网络·网络协议·tcp/ip·安全·http
科研邪修法18 小时前
培训PDF保护配置:把需求转换成可验收权限
linux·服务器·网络
略懂而已2 天前
安装SSL后网站速度变慢?
网络·网络协议·ssl