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

相关推荐
星夜夏空993 小时前
网络编程(5)—— Reactor实现(v4)
网络
rest10245 小时前
用io_uring进行io测试
网络
恒拓高科WorkPlus5 小时前
企业怎样选择IM即时通讯平台?私有化部署还是SaaS更适合?
网络·github
修船大队长6 小时前
配置接受报文每个报文对应一个mailbox配置流程记录
网络·单片机·mcu
一遍再一遍7 小时前
【LTE Attach流程】
网络
星夜夏空997 小时前
网络编程(5)—— Reactor实现(v3)
服务器·网络·php
枫叶丹47 小时前
从一次推理请求出发:模型、显存、网络与服务系统如何共同决定性能
网络·人工智能·chatgpt·开源·agent·codex
恒拓高科WorkPlus8 小时前
制造企业出现生产异常后,如何通过IM快速通知责任人?
网络·制造