Wireshark新手入门不劝退:半小时跑通抓包与排障闭环

Wireshark抓包网络分析
于 2026-10-01 03:50:32 修改
·本内容遵循CC 4.0 BY-SA版权协议

我见过太多新人被 Wireshark 劝退,甚至圈子里流传一句话:“别劝新人学 Wireshark,那是劝退。”这话我理解,但不太同意。Wireshark 确实不是一款零基础友好的软件,但新人被劝退,往往不是因为工具本身难,而是学习姿势不对:一上来就打开抓包,面对满屏的数据包列表,没人告诉他该看什么、该过滤什么、抓到之后下一步干嘛。今天我想从自己带人的经验出发,重新梳理一条新手适用、不劝退的 Wireshark 学习路径。目标很简单:让一个完全没抓过包的人,在半小时内跑通“选网卡 -> 抓包 -> 过滤 -> 看协议树 -> 定位问题”这个最小闭环。之后你再决定要不要深入,而不是第一次打开就卸载。

Wireshark 本质上是一个网络分析工具,它的核心能力是抓包、解析和过滤。你要用它解决什么问题,决定了你该学哪些功能。对新手来说,最该先掌握的不是一堆复杂参数,而是建立“包”的直觉:数据在网络上是怎么封装、怎么传输、怎么被拆开的。很多人觉得它难,是因为被 TCP/IP、ARP、DNS、HTTP 这些协议栈术语砸懵了。但换个角度想,这些概念恰恰是网络排障的基本功,Wireshark 只是把它们从一个黑盒变成了看得见摸得着的列表。这篇内容不劝你放弃,而是帮你把学习顺序倒过来:先会抓,再会看,最后再研究过滤器语法和高级图表。

1. 先说结论:Wireshark 难的不是软件,是入门姿势

1.1 Wireshark 到底在劝退谁

Wireshark 这个工具本身并不难安装,双击下一步就行。真正难的是它的使用场景:你要在什么网卡上抓包、抓到的包属于哪一层协议、你关心的是源地址还是目标端口、为什么有的是红色有的是蓝色、TCP 三次握手的包长什么样……这些知识如果之前完全没有接触过,界面就像天书。

我发现一个规律:被劝退的新人通常有一个共同特征,就是没有任何“问题驱动”。他们打开 Wireshark,看到的是 Default、Ethernet、WLAN 一堆网卡,随便点一个开始捕获,然后整个屏幕开始疯狂滚动,几秒钟几千个包,浏览器后台、系统更新、ARP 广播全混在一起。这时候别说分析了,连鼠标都不敢点。所以与其说 Wireshark 难,不如说“没有明确目标就开始抓包”这个动作本身就是劝退的开始。

反过来,如果带着一个非常具体的问题打开 Wireshark,比如“我想看看 ping 网关的时候有没有丢包”“我想确认某个 HTTP 请求有没有发出去”,整个体验会完全不同。你只需要选对网卡、抓几秒、打一行 icmp 或 http 过滤器,然后双击一个包看协议树,问题往往一目了然。这就是我后面要反复强调的:Wireshark 是排障工具,不是观光工具。

1.2 真正劝退新人的三件事

根据我带过的新人和踩过的坑,可以把“劝退”原因归结为三件事。

第一,不知道怎么选网卡。笔记本上通常有 WLAN 和以太网,有时候还有虚拟网卡、蓝牙网卡。选错了抓半天是空的,或者抓到的全是和自己无关的广播包。第二,过滤器写不明白。很多人分不清“捕获过滤器”和“显示过滤器”,上来就在顶部绿色框里写 port 80,结果语法报错,心态直接炸了。第三,抓到包之后不会分析。就算过滤出了 HTTP 请求,也不知道 TCP 三次握手在哪看、状态码 500 在哪看、请求耗时怎么算,最后还是回到纯靠猜。

其实这三件事都可以通过改变学习顺序来解决。我的建议是:先不要碰过滤器语法,先抓一次 ping 包,看看 ICMP 请求和回应长什么样。等你亲眼看到数据包从自己的机器发到网关,再回到之前,这个流程就算建立起来了。之后所谓的过滤器、协议解析、VLAN 标签、HTTP 分析,都是在这个流程上叠加需求。那个顺序一旦颠倒,新人面对的就不是一个工具,而是一座迷宫。

2. 新手第一次抓包:先把工具和环境跑通

2.1 安装选型与驱动细节

先说安装。Wireshark 官网下载安装包,Windows 下安装时有一个关键选项:是否安装 Npcap。这个一定要装,它是 Windows 下抓包的底层驱动。新版安装包一般默认勾选,但还是有人会在安装过程中把 Npcap 取消掉,导致装完 Wireshark 后网卡列表为空。还有个旧组件叫 Win10pcap,不建议选,兼容性和维护状态都不如 Npcap。

另外,Windows 下跑 Wireshark 最好右键“以管理员身份运行”。如果你发现能打开软件但抓不到包,十有八九是权限不足。不是每次都需要管理员,但新手阶段统一用管理员启动,能少踩一个坑。

macOS 上可以直接用 Homebrew 安装:

BASH
brew install --cask wireshark

Linux 上 Debian/Ubuntu 系可以用:

BASH
sudo apt install wireshark ts hark

注意,Linux 下 Wireshark 默认不允许普通用户直接抓包,安装完成后要执行一次配置:

BASH
sudo dpkg-reconfigure wireshark-common

在弹窗中选择“是”,然后把当前用户加入 wireshark 组:

BASH
sudo usermod -aG wireshark $USER

之后重新登录一次,才能不依赖 sudo 直接抓包。这个步骤经常被新手忽略,结果一启动就提示“There are no interfaces on which a capture can be done”,非常劝退。

TShark 是 Wireshark 的命令行版本,如果你以后要写脚本批量分析 pcap 文件,它比 GUI 更高效。新手阶段不用急着学,但至少知道有这个东西存在。安装 Wireshark 时通常会自带 tshark,命令行输入 tshark --version 能跑通就说明环境没问题。

2.2 用一次 ping 把流程走通

环境准备好之后,不要急着去抓那些复杂的 HTTP 或 DNS,先用 ping 把流程跑一遍。因为 ICMP 报文结构足够简单,请求和回应一一对应,非常适合建立“包”的直觉。

具体操作是这样的:打开 Wireshark,选择你的物理网卡。笔记本连着 Wi-Fi 就选 WLAN,插着网线就选以太网,然后点击左上角的蓝色鲨鱼鳍开始捕获。接着打开命令行,ping 你的网关,比如 Windows 下:

BASH
ping -n 4 192.168.1.1

macOS 和 Linux 下可以 ping -c 4 192.168.1.1,实际上为了简单起见,也可以直接 ping 一个本地地址或局域网内肯定存在的主机。抓十几秒后停止捕获,在顶部显示过滤器里输入:

TEXT
icmp

这时列表中只剩 ICMP 包。你会发现一个规律:如果你 ping 了 4 次,应该看到 4 个 Request 和 4 个 Reply,成对出现。双击一个 Request 包,中间面板会展开协议树:第一层是 Frame(帧),第二层是 Ethernet II(以太网帧头),再往上是 Internet Control Message Protocol,也就是 ICMP 本身。可以看到 Type 是 8(Echo Request),Identifier 和 Sequence Number 是一对序号。再看对应的 Reply,Type 是 0(Echo Reply),Identifier 和 Sequence Number 与请求完全相同。

这一步的关键不是记 ICMP 参数,而是理解“发送端构造一个请求,接收端回应一个响应”这个最基本的信息交换模型。以后再碰到 TCP、HTTP、DNS,虽然协议字段不同,但看待网络通讯的视角是一致的:谁在发起、谁在响应、数据放在哪个字段里、TTL 还剩多少、有没有延迟和重传。那个感觉建立起来之后,Wireshark 就不再是劝退工具了。

2.3 抓包时最容易被忽略的“混杂模式”

Wireshark 的网卡选项里有一个“混杂模式”开关,英文叫 Promiscuous Mode。默认情况下它是开着的,意思是网卡接收所有经过的数据帧,而不只是发给自己的。这个功能听起来高大上,但实际在新手阶段,不建议一开始就纠结它。

在普通交换网络里,交换机只会把帧转发给目标端口,其他端口的流量根本到你网卡,混不混杂差别不大。只有在接入交换机镜像口、无线抓包或者 HUB 共享介质这类特殊环境里,混杂模式才有意义。很多新人误以为开了混杂模式就能看到整个局域网所有人的流量,所以在公司里打开 Wireshark,发现只能看到自己的包,就以为工具坏了。这不是 Wireshark 的问题,而是网络架构决定的。知道这一点,至少能减少一半的困惑。

如果你确实想让新手看见“效果”,可以用回环接口抓包:在 Windows 安装了 Npcap 并勾选 Support loopback traffic 后,会出现 Npcap Loopback Adapter;Linux 下直接选 lo。用 ping 127.0.0.1 就能抓到本机回环包。不过回环流量只会走虚拟接口,不走物理网卡,所以有时会被忽略。我建议 Ping 网关优先,那种“包真的从网卡出去了”的感觉,比回环更直观。

3. 过滤器语法:先学会显示过滤器,再碰捕获过滤器

3.1 两类过滤器到底差在哪儿

Wireshark 里存在两套过滤器,名字相似但完全不是一回事,这也是新手最容易栽跟头的地方。

  • 捕获过滤器写在网卡选择界面旁边那个绿色框里,语法是 BPF(Berkeley Packet Filter),它在抓包之前起作用,直接决定哪些包进到 Wireshark 的内存里。过滤掉的包根本不会出现,所以如果你在捕获过滤器里写了 icmp,之后想回头查 HTTP 流量就只能重新抓。
  • 显示过滤器写在主界面上方的绿色工具栏里,语法是 Wireshark 自己的表达式语言,它只在已经抓到的数据包上做隐藏,不会删除任何数据。写错过滤器没有关系,重新输入或者删掉就能看到全部包。

新手阶段,99% 的场景用显示过滤器就够了。理由很简单:抓包成本很低,先把全部流量抓下来,事后用显示过滤器反复筛选,比一开始用捕获过滤器“一刀切”安全得多。很多人习惯一开始就把捕获过滤器写成 port 443 或 host 192.168.1.1,结果发现想分析同一个问题的其他关联流量时,数据已经没了,只好重新抓。建议先抓全量,再过滤,这几乎是排障时的最优解。

3.2 捕获过滤器:只记几个 BPF 常用写法

捕获过滤器虽然不是新手主战场,但有几个常用表达式值得提前认识。它们非常简短,适合在条件明确、流量很大的场景下使用,减少磁盘写入和界面滚动:

需求 捕获过滤器写法 说明
只抓某个主机 host 192.168.1.10 源或目标 IP 匹配
只抓某个端口 port 80 或 tcp port 443 常用协议端口
只抓 ICMP icmp 网络层协议
抓某个网段 net 192.168.1.0/24 按子网过滤
组合条件 host 192.168.1.10 and tcp port 80 用 and/or/not 组合

注意 BPF 里的关键字是 and、or、not,有些文档简写成 &&、||、!。Wireshark 的捕获过滤器也兼容这些简写,但用完整的 and 更清晰。这里的 host 不加 ip. 前缀,port 只表示端口号,不用区分 TCP 还是 UDP,如果需要精确指定就写 tcp port。

我第一次带新人时,让他们在命令行用 tshark 加上捕获过滤器抓 ping:

BASH
tshark -i eth0 -f "icmp" -w ping.pcapng

-i 指定网卡,-f 后面跟捕获过滤器,-w 表示把结果写入 pcapng 文件。之后用 Wireshark 打开这个文件,看到的都是 ICMP 包,非常干净。这个过程能让新手理解“捕获过滤器在源头筛选”的价值,而且比 GUI 操作更清晰。

3.3 显示过滤器:新手必学的 8 个表达式

显示过滤器才是日常用得最多的。打开 Wireshark 主界面,在工具栏那个绿色(或者红色)输入框里写表达式,输入框会根据语法是否正确变色:绿色表示有效,红色表示有错误,同时在下方会给出错误提示。

以下这 8 个表达式,几乎能覆盖新手 80% 的日常场景:

需求 显示过滤器 说明
只看某个 IP 发出的包 ip.src == 192.168.1.10 源地址
只看发往某个 IP 的包 ip.dst == 192.168.1.10 目标地址
只看某个端口的 TCP 包 tcp.port == 80 源或目标端口
只看某个协议 http、dns、icmp 直接写协议名
只看 TCP SYN 包 tcp.flags.syn == 1 握手的第一步
只看 HTTP GET 请求 http.request.method == "GET" 注意字符串带引号
只看 HTTP 响应状态码 500 http.response.code == 500 后端错误定位
在包内容里找关键字 frame contains "admin" 常用于报文内容搜索

这里的语法逻辑比 BPF 更贴近协议字段:点号分隔的字段名,比如 ip.src、tcp.port、http.request.method,后面的比较符是 ==、!=、>、<,字符串用双引号,组合条件用 and、or、not,还可以加括号:

TEXT
(ip.src == 192.168.1.10 and http) or icmp

这条表达式的意思是:要么是来自 192.168.1.10 的 HTTP 包,要么是任意 ICMP 包。新手不用硬背字段名,Wireshark 提供了表达式按钮。点开之后可以直接搜索协议字段,比如输入“tcp.port”,它还会自动补全为合法表达式。养成用“过滤器 + 自动补全”的习惯,比死记字段名效率高得多。

3.4 判断过滤表达式是否生效

很多时候过滤后列表为空,不一定是不存在该流量,也可能是表达式写错了。Wireshark 的显示过滤器有一个隐藏规则:如果过滤器语法合法但没有匹配任何包,界面会显示“0 packets displayed”,并且你当前输入框仍然在生效。如果你隐约觉得应该有包,可以先清空过滤器,看看“X packets displayed”那个数字变了没有,再确认网卡和抓包时间。

还有一个很实用的技巧:选中列表中的任意一个包,在某个字段上右键,选择“作为过滤器应用”或“准备过滤器”,Wireshark 会自动生成对应的过滤表达式。比如选中一个 TCP 包,右键目标地址字段选“作为过滤器应用”,一个 ip.dst == 某个IP 的表达式就自动填好了。这样既可以避免手输入错误,也能慢慢学会字段的命名规律。

4. 常见分析场景:HTTP、VLAN、中文乱码与可视化

4.1 HTTP 请求/响应分析:本地起一个服务最安全

HTTP 是 Web 开发绕不开的协议,也是 Wireshark 新手练手的好对象。不过我不建议新手直接跑去“抓某个网站”,一来 HTTPS 加密包解析不出明文(除非你能合法导入解密密钥),二来未经授权抓取别人服务流量并不合适。最稳妥的做法是在本机起一个 HTTP 服务,用自己的流量学习。

比如在某个目录下执行:

BASH
python3 -m http.server 8000

然后用浏览器或者 curl 访问:

BASH
curl http://127.0.0.1:8000/

同时在 Wireshark 里抓 loopback 接口或者物理网卡,显示过滤器输入 http,就能看到完整过程:TCP 三次握手、HTTP GET 请求、HTTP 200 OK 响应。双击 HTTP 请求包,展开 Hypertext Transfer Protocol 层,能看到 Request Method、Request URI、Host、User-Agent 这些字段;再看响应包里,可以看到 Status Code 和 Content-Type。

如果要看完整的请求和响应内容,右键一个 HTTP 包,选择“Follow” -> “HTTP Stream”,Wireshark 会把整个会话拼接成一屏文本。这个方法在排查接口返回值、确认 request body 是否丢失、判断 Content-Length 是否和实际内容一致时非常实用。我自己调试后端接口时经常用这套流程,比在代码里打日志更直观,因为它看到的是真实的网络字节流。

4.2 中文显示成“....”怎么破

很多新人抓 HTTP 包时发现:响应体里的中文全部变成了一串点号,比如 {"name":"...."},第一反应是乱码。其实这不是乱码,而是 Wireshark 的显示规则:它默认把不可打印的 ASCII 字符显示成点号,中文字节属于非 ASCII 区,所以显示为“.”,但原始字节并没有丢失。

想验证也很简单,在 Packet Bytes 面板下方有十六进制视图,可以看到对应的字节其实是 e4 b8 ad(UTF-8 编码的“中”字)。如果直接在 Follow HTTP Stream 窗口里看,可能同样是点号,因为那个窗口默认按 ASCII 渲染。正确做法是在 Follow Stream 窗口把底部的“Show data as”切到“Raw”或“Hex Dump”,拿到原始十六进制数据,再把它贴到文本编辑器或 CyberChef 这类工具里做 UTF-8/GBK 转码。

还有一个笨但实用的方法:在 Packet Bytes 面板选中响应体的原始字节,右键“导出分组字节流”,保存为 .bin 文件,然后用文本编辑器打开。如果文件编码是 UTF-8,里面的中文就正常了。实际场景中中文乱码问题很多时候不在 Wireshark,而在上游:HTTP 响应头声明的编码和实际返回内容的编码不一致,或者客户端拿到的字节流被错误解码。用 Wireshark 看清原始字节,才能判断到底是哪一端的问题。

4.3 看到 VLAN 标签别慌

在某些环境下抓包,会发现以太网协议头里多了一个 802.1Q 字段,而且帧头变得不太“标准”。这个就是 VLAN Tag。它出现在交换机 trunk 口或者配置了 VLAN 的接口上,Wireshark 会自动解析,在协议树中显示一个 802.1Q Virtual LAN 层,里面有 Priority、DEI、ID,也就是 VLAN ID。

如果你需要按 VLAN 过滤,显示过滤器可以写:

TEXT
vlan.id == 100

或者直接输入 vlan,查看所有带 VLAN 标签的包。还有一种更直观的方式:在“视图 -> 显示列”或者“首选项 -> 外观 -> 列”中新增一列,字段名填 vlan.id,这样主界面表格里会直接显示每个数据包属于哪个 VLAN。这个功能在排查接入交换机问题时特别有用,比如你明明连着某个端口,却发现抓到的包 VLAN ID 和你预期不符,往往是交换机 PVID 配置错了。

新人第一次看到 VLAN 标签,第一反应可能是“协议又变复杂了”。但换个角度想,Wireshark 已经把标签解析成清清楚楚的字段,你只需要会过滤、会看 ID,就已经比从前靠瞎猜强太多了。

4.4 可视化功能不是给新手炫技的

Wireshark 的可视化功能听上去很酷,但新人最容易在这里浪费时间。我的建议是:先掌握两个最基础的可视化入口——IO Graph 和 Flow Graph。

IO Graph 在“统计 -> IO Graph”里,它能以时间为横轴画出流量速率。比如 HTTP 请求突然变慢,你可以看 IO Graph 有没有明显的吞吐下降区间;也可以加上过滤器,单独比较某个 IP 的流量走势。默认图形是一堆折线,但你可以新增不同的过滤器,把 TCP 重传、HTTP 响应等流量画成不同颜色的曲线。

Flow Graph 在“统计 -> 流量图”里,它按时间顺序展示节点之间的连接过程,尤其适合看 TCP 握手和挥手。拿 HTTP 本地服务的抓包结果生成流量图,会非常清楚看到 SYN、SYN-ACK、ACK 的顺序,以及 HTTP 请求和响应之间隔了多久。这个图特别适合给人讲网络交互流程,比单纯指点数据包列表省力很多。

至于 TCP Stream Graphs 里的 Time-Sequence(Stevens) 和 Throughput 图,属于进阶排障范畴,新手建议先跳过。如果你以后遇到“网络慢但抓包没有丢包”的问题,再回来研究这些图不迟。让新人一上来就研究这些复杂图表,才是真正的劝退。

5. 新手最常踩的坑:网卡、权限、过滤和看包

5.1 为什么抓不到包/网卡列表是空的

这个经典问题已经快成 Wireshark 新手区的日经帖了。常见原因按概率排序:一是 Npcap 没装好,或者装完 Wireshark 后驱动被安全软件拦截;二是没有以管理员身份运行;三是选择网卡时选错了虚拟网卡,导致数据包根本没走那个接口。

排查思路很简单:先在网卡列表里看每一行的“捕获”列有没有绿色波形图标,如果显示灰色,说明接口不可用。再尝试跑一下 tshark 查看接口:

BASH
tshark -D

这条命令会列出所有可用的网络接口及编号。如果输出为空,大概率是驱动或权限问题。Windows 下重启 Npcap 服务有时候能解决,Linux 下检查用户是否在 wireshark 组。另外,如果你是在虚拟机里抓包,要确保虚拟网卡模式正确,NAT 和桥接模式下看到的流量范围完全不同。

还有一点很多人忽略:无线网卡在多数 AP 环境里,即便开了混杂模式,也抓不到其他设备的流量。这是因为无线网卡和接入点之间有加密和关联机制,没有建立关联的帧根本不会发给你的网卡。所以新手在办公室或咖啡厅试图抓别人的包,通常只会看到自己的流量。这个现象不是 Wireshark 的问题,你反而应该记住:Wireshark 不是一个能随便看别人消息的工具,它能帮你看清自己这台机器在网络上的通信过程。

5.2 抓到一堆包但看不懂怎么办

我刚学 Wireshark 的时候,最喜欢干的事就是抓到一堆乱码一样的包,然后逐行翻看,结果什么也没看懂。后来我总结出一个笨但有效的思路:先把目标确定成一个具体的 IP 或端口,然后只关心与它相关的包。

比如你正在排查一个网页打不开的问题,过滤 http 后会发现根本没有 HTTP 请求包,那问题大概率出在 TCP 连接建立阶段,也就是 SYN 包发出去后没有回应。再看 DNS 是否解析失败、ARP 是否有回复,一层一层往下走。Wireshark 的默认配色规则这时候很有用:红色通常代表 TCP 异常,比如重传、RST、重复 ACK;浅绿色一般是 HTTP/DNS 等应用层流量;黑色底通常是时间戳异常或重复包。如果你没看到这些颜色,可以在“视图 -> 着色规则”里打开规则面板,看看每个颜色代表什么。

另一种缩小范围的方法是用“统计 -> 对话”或“统计 -> 端点”窗口。它会告诉你当前抓包里哪两个 IP 之间通讯最多、哪个端口承载了大部分流量。你可以直接在这个窗口里右键某个 IP,选择“作为过滤器应用”,瞬间把主界面变成只显示与该主机相关的包。这个路径比手动翻列表快太多了。

5.3 看不到回环流量

回环流量,也就是本机进程与进程之间的通信,在 Windows 上默认可能抓不到。解决方法是安装 Npcap 时勾选 Support loopback traffic,抓包时选择名为 Npcap Loopback Adapter 的接口。Linux 上选择 lo 接口即可,macOS 上由于系统限制,回环抓包通常要配合虚拟接口或第三方工具,新手阶段可以忽略。

回环流量的重要性在于:你在本机起了 Python HTTP 服务,然后浏览器访问 127.0.0.1,如果不选对回环接口,就什么也看不到。选对之后,可以看到完整的三次握手和 HTTP 请求响应。这里要注意,回环包没有以太网帧头,所以协议树里不会出现 Ethernet II 层,直接就是 Linux cooked capture 或类似结构,不要以为漏了什么。

5.4 过滤表达式总报错

新手写显示过滤器时最常犯三个错。第一是大小写问题,Wireshark 的字段名区分大小写,ip.src 正确,IP.src 或者 Ip.src 都会报错。第二是字符串没有加双引号,比如 http.request.method == GET 是不行的,必须写成 "GET"。第三是同时混用了 BPF 和 Wireshark 语法,比如在显示过滤器里写 host 192.168.1.1,这属于捕获过滤器写法,显示过滤器里应该写 ip.addr == 192.168.1.1。

如果语法确实没错但过滤不出结果,就按前面说的,先用右键菜单让 Wireshark 自己生成过滤器,再检查字段值是否和你要的一致。比如你想过滤某个端口,但该端口实际是 UDP 而不是 TCP,你写 tcp.port == 53 自然没有结果,改成 udp.port == 53 就对了。类似这种问题,用“表达式”按钮搜索字段,能帮你少走很多弯路。

6. 实操记录:一个“慢请求”排查的完整过程

6.1 场景描述与抓包规划

说一个我印象很深的实操案例。有次一个同事反馈,他写的一个本地接口偶尔返回很慢,从几十毫秒到几秒钟不等。代码里加了日志,但日志只能看到处理时间和返回时间,中间是不是有网络延迟完全没法确认。我就用 Wireshark 帮他定位。

整个过程中我们用到的核心问题很简单:请求从客户端发出到服务器收到,以及服务器返回到客户端收到,每一段消耗了多久。为了减少干扰,我们决定在本机回环接口上抓包,客户端用 curl 发请求,服务端用 Python 起一个简单的 HTTP 服务,并人为做了一个 time.sleep(0.5) 模拟慢处理。这样既有真实问题,又可控。

6.2 数据采集与关键过滤步骤

先在 Wireshark 选择回环接口,开始捕获。然后在命令行执行:

BASH
curl -v http://127.0.0.1:8000/api/test

抓到几十个包后停止捕获,输入显示过滤器:

TEXT
http.request.method == "GET" or http.response

这样可以同时看到请求和响应。接着右键任意一个 HTTP 请求包,选择“Follow HTTP Stream”,可以直接看到一次完整的请求响应正文。但这里我们不是为了看内容,而是为了看时间线。

回到主界面,把显示过滤器改成:

TEXT
tcp.port == 8000

这样能看见完整的 TCP 连接过程。按住 Ctrl 选中一个请求包和一个响应包,看它们的时间戳差值,就能算出服务器响应耗时。如果请求到服务器立刻收到响应,那问题就在客户端或网络层;如果请求到达服务器后过了一段时间才收到响应,那就要去服务端代码里找,比如是不是有同步锁、数据库查询慢、GC 停顿等问题。

6.3 用图表确认结论

最后我们用 IO Graph 给这次抓包画了一张图,Y 轴选 bytes/tick,过滤器分别设置成 tcp.port == 8000 and tcp.flags.syn == 1 和 tcp.port == 8000 and http.response。从图上能清晰看到,响应包出现的时间点明显落后于请求包几百毫秒。再用 Flow Graph 看连接时间轴,几乎一眼就能确认问题出在服务端处理延迟而不是网络传输。

这个例子我每次带新人都会重放一遍,因为它证明了 Wireshark 的核心理念:不是看每一行字节,而是看时间、流向和关联关系。一个完全不熟悉 Wireshark 的人,只要会启动抓包、会写 tcp.port == 8000 这一个过滤表达式,再用 IO Graph 看一眼,就能完成一次专业排障。这就是为什么我说“不要劝新人放弃”。

7. 关于“可视化”再补几句

Wireshark 的热搜词里经常出现“可视化”,很多新人以为它能直接生成炫酷拓扑图。说实话,Wireshark 的可视化更偏向“排障辅助”,不是网络拓扑绘制工具。你需要知道两个实用入口:一个是前面提到的 IO Graph,另一个是“统计 -> TCP Stream Graphs”。

IO Graph 适合观察整体流量趋势。比如你怀疑电脑在半夜跑了大流量,抓一天包不现实,但可以抓十几分钟看 IO Graph 有没有周期性峰值。再配合过滤器,能区分是系统更新、备份程序还是某个进程在持续发包。

TCP Stream Graphs 里的 Time-Sequence(Stevens) 图可以很直观地看到 TCP 发送端和接收端的序列号变化。如果图中出现水平平台,说明接收窗口满了或者发送端在等待确认;如果曲线回退,说明发生了重传。这个图对新手来说可能需要一点 TCP 状态机基础,但只要你知道“平头=等待、回退=重传”这个规律,排查“网络慢”这个问题时会有奇效。不过,我仍然建议新手先不要碰这块,等你能熟练过滤和看协议树之后,再把这些图作为第二层排障工具。

可视化正确的打开方式是:先用显示过滤器缩小范围,再生成图形,最后结合协议树细节确认根因。顺序反过来的话,你会被花花绿绿的曲线和图例绕晕。Wireshark 不是用来“画得好看”的,是用来“回答具体问题”的。

8. 给新手的实操建议和个人体会

带过几轮新人之后,我发现真正能用好 Wireshark 的人,并不是记住最多过滤表达式的人,而是敢于带着问题去抓包的人。我的建议很简单:不要从“学软件”开始,而是从“解决一个真实的网络问题”开始。

第一次抓 ICMP,第二次抓本地 HTTP 服务,第三次抓一个自己故意制造的网络故障,比如把服务停掉看看 TCP 重试多少次、什么表现。这样三次之后,Wireshark 在你眼里就不再是一堆乱码,而是一套有逻辑的、能看得见摸得着的网络解释系统。

我个人还有一个经验:多用右键。Wireshark 里几乎每个字段都支持右键操作,“作为过滤器应用”“准备过滤器”“Follow Stream”“导出分组字节流”,这些功能远比手动输入命令可靠。很多新人不敢乱点右键,其实右键菜单就是 Wireshark 给你的“新手辅助线”,它能帮你快速从一堆包里抽丝剥茧。

至于那些让人望而生畏的高级功能,比如 BPF、TLS 解密、远程抓包、命令行 tshark 批处理,你现在不学也没关系。等有一天你发现 GUI 操作太慢、需要批量分析几百个 pcap 文件时,自然会去补。学习的节奏应该跟着需求走,而不是被工具的功能列表牵着走。我第一次用 tshark 写脚本批量提取所有 HTTP URL 时,已经是用 Wireshark 三年之后的事了,一点也不晚。

所以别再被“别劝新人学 Wireshark”这句话吓住了。Wireshark 劝退的从来不是新人,而是那些没有目标、没有方法、一上来就想一夜精通的人。从选对网卡、抓一次 ping、写一个显示过滤表达式开始,你已经在路上了。剩下的,只需要在遇到问题时打开它,用它看清每一次请求和响应的全貌。

Wireshark抓包入门实战:从安装到排查网络故障
本文系统讲解Wireshark从安装配置(重点区分Npcap与WinPcap、管理员权限)、界面认知(包列表/详情/字节流/过滤器栏)、基础抓包流程(DNS解析、TCP三次握手、HTTP明文请求响应)到核心分析技术(显示过滤器语法、TCP流追踪、RTT延迟评估、重传/RST/Duplicate ACK识别)的完整路径。强调分层排障思维,覆盖常见坑点如抓不到包、Npcap蓝屏、Wi-Fi流量限制及合规性边界。
weixin_33831673
267
CTF逆向入门:从flag定位到工具链闭环的五类题型与实战
本文系统梳理CTF逆向五大题型(PE/ELF、Python/Java/.NET、Android APK、流量分析、固件/特殊格式),详解静态分析(strings、IDA伪代码)、动态调试(gdb断点、寄存器观察)、抓包分析(Wireshark、pcapng/USB流量)及常见坑点(UPX脱壳、PIE地址偏移、JNI隐藏逻辑、Base64变种)。强调工具链闭环:静态定位线索→动态验证行为→流量补全盲区,覆盖从flag识别到算法还原的完整逆向流程。
黎声旭
223
开源p-net协议栈:快速搭建Profinet从站服务全指南
本文系统讲解基于开源p-net协议栈快速构建Profinet IO Device(从站)服务的完整流程,涵盖环境搭建、GSDML设备描述文件编写、pnet_cfg_t配置、应用回调注册、循环IO数据交换、告警诊断处理及TIA Portal联调方法,并强调Wireshark抓包排障技巧与高频避坑要点。内容聚焦协议栈集成实践,适用于嵌入式Linux、RTOS及MCU平台。
weixin_34234721
337
零基础自学工控协议:从Modbus到EtherCAT的12种协议啃透攻略
本文面向零基础个人开发者,系统梳理Modbus、CANopen、PROFINET、EtherCAT等12种主流工控协议的学习路径。提出“三张皮”方法论:数据模型与地址空间、传输机制与实时性、报文编码与字节序;强调抓包分析、最小可运行代码(Python/C#)、仿真环境(Wireshark/SocketCAN/CODESYS)和测试闭环构建;总结字节序陷阱、功能码映射、状态机设计、连接管理、协议解耦等8类高频工程问题,提供可复用的协议迁移与日志实践框架。
伍治坚
93
个人开发者如何高效搞定12种主流工控协议:归类、模拟器与实战策略
本文系统梳理12种主流工控协议的底层逻辑,将其归为四大范式:主从问答型(Modbus、S7、FINS等)、连接+过程数据型(EtherCAT、PROFINET等)、对象字典/服务调用型(CANopen、CIP、ADS)和信息模型平台型(OPC UA)。重点介绍个人开发者在无真实PLC条件下,依托抓包工具、协议模拟器和成熟开源库实现快速验证与联调的方法,并强调字节序、地址偏移、会话生命周期等高频技术坑的规避策略。
weixin_33862993
295
基于Go语言使用GoSIP构建SIP服务器与客户端的完整指南
本文详解如何使用Go语言库GoSIP快速搭建SIP服务器与客户端,涵盖REGISTER/INVITE/SUBSCRIBE等核心方法处理、事务状态机管理、鉴权(Digest/AKA)、NAT穿透、SDP解析与改写、心跳保活及并发安全实践。内容基于真实项目经验,提供可运行代码骨架、抓包调试技巧(Wireshark/sngrep)和典型问题排查方案,适用于VoIP网关、呼叫中心及SIP测试工具开发。
happy最紧要
210
Python网络编程入门:从Socket基础到第一个收发程序
网络编程常被初学者视为畏途,似乎必须精通TCP/IP协议栈才能动手。其实它的本质只是让不同电脑上的程序互相交换数据。理解IP地址、端口、Socket这些概念,就相当于掌握了网络通信的底层骨架。TCP提供可靠连接,UDP追求传输效率,而Socket则是操作系统提供的通信窗口。在工程实践中,用Python可以快速搭建最小闭环:一个服务端监听端口,一个客户端发起连接,完成一次收发。进阶时可引入多线程、消息边界设计、粘包处理与抓包验证,逐步深化对协议和异常排查的理解。无论是局域网聊天室还是文件传输,都由这套基础演化
工控软件全景盘点:从PLC编程到组态仿真的完整工具链与学习路线
本文系统梳理工控领域核心软件工具链,涵盖PLC编程(TIA Portal、Codesys、GX Works等)、组态与HMI(WinCC、EBPro、组态王)、电气设计(EPLAN)及仿真调试(PLCSIM、Factory IO)四大类。强调以Codesys建立通用IEC 61131-3编程思维为起点,再聚焦主流品牌深挖,并通过“逻辑—仿真—HMI”闭环实操夯实能力。同时指出安装环境、变量绑定、通讯排查、版本管理等关键实践要点,突出工具服务于项目落地的本质。
weixin_34224941
235
InterviewGuide 阿秀学习笔记:计算机自学资源全景与方法论——B 站课程、经典书籍与四大实操心法
本文基于 InterviewGuide 仓库中的《学习计算机这一路上的经验之谈》展开,系统梳理作者"从校园到职场"的计算机自学路径:包括 C/C++、Golang、JavaScript、操作系统、计算机网络、数据库、数据结构与算法等核心领域的免费视频资源清单、经典书籍书单,以及看视频、读书、时间管理、啃"大黑书"四套可落地的学习方法。读完后,你可以直接获得一份"照着做即可执行"的自学地图,并知道如
卫伊祺Ralph
197
Web安全面试42题全攻略:从原理到实战的深度解析与通关秘籍
本文系统梳理Web安全工程师面试的五大核心维度:基础漏洞原理(如SQL注入深层机制)、安全开发与左移实践(SDLC中嵌入SAST/DAST/SCA)、业务逻辑安全(电商优惠券竞态与IDOR防护)、渗透测试方法论(PTES流程与WAF绕过)及合规与前沿趋势(DevSecOps、等保2.0)。重点解析SQL注入根本防御(数据与代码分离)、动态SQL安全处理(白名单映射)、威胁建模与原子化库存控制等关键技术点,强调原理深度、工程落地与思维表达。
weixin_33912638
512
Linux运维故障排查实战:从磁盘满到网络异常的定位思路
Linux系统运维中,故障排查能力是衡量工程师水平的关键。面对生产环境层出不穷的磁盘空间耗尽、系统负载飙高、网络时通时不通等问题,掌握系统化定位方法论比死记硬背命令更有价值。排查的本质在于理解Linux分层架构,将故障现象映射到具体层级,并遵循确认现象、采集日志、验证修复、回归观察的闭环流程。常用工具如df、du、lsof、systemctl、ss、tcpdump等各有适用场景,而负载与I/O等待的区分、inode耗尽与块空间占满的辨别、DNS与systemd-resolved的冲突、云环境虚拟化网络等则是
weixin_34220179
305
树莓派结合p-net开源协议栈实现Profinet从站开发实战
本文详细介绍了基于树莓派与开源p-net协议栈开发Profinet从站的完整流程,涵盖环境搭建、设备模型定义、GSDML文件编写、PLC组态联调及常见问题排查。重点解析p-net事件驱动架构、GPIO映射逻辑、DCP动态IP分配机制及实时IO数据交换实现,验证了在Linux用户态下稳定运行8ms周期Profinet RT通信的可行性。
weixin_34184158
393
AnyTXT无遮挡版:本地文件全文搜索的极致实践
本文深入解析AnyTXT Searcher无遮挡版的核心能力,涵盖深度文本萃取引擎(支持PDF/Office/ZIP等格式的本地解析)、外科手术式UI精简(禁用网络请求、纯配置管理、DirectWrite渲染)、完全离线安全机制(零网络权限、SQLite加密索引、内存临时缓冲)。详述分阶段索引策略、高阶搜索语法(布尔/元数据/语义邻近)、典型问题排查及法务/教育/创作场景落地实践,强调其在隐私敏感、高频文档检索场景下的不可替代性。
weixin_34343308
263
Wireshark抓包全集(85种协议、类别的抓包文件)
**其他协议**:还包括DNS(域名系统)、ARP(地址解析协议)、ICMP(因特网控制消息协议)等,这些协议在网络通信中扮演着重要角色,如DNS负责将域名转换为IP地址,ARP处理硬件地址与IP地址的映射
3372
wireshark进行手机抓包,有详细步骤
我们可以根据需求选择要分析的协议和内容,例如:* 分析HTTP流量,了解手机上的Web应用程序如何与服务器交互。* 分析HTTPS流量,了解手机上的加密通信机理。
底层民工
4653
【小技巧】wireshark定位抓包与定位查看
Wireshark小技巧之抓包与定位查看Wireshark是一款功能强大的网络协议分析软件,它可以帮助我们捕获网络中的数据包,并对这些数据包进行深入分析,以判断网络故障环节的所在。
2615
wireshark抓包分析过程
### Wireshark抓包分析HTTP数据包解析账号密码流程#### Wireshark简介与功能Wireshark是一款开源的网络协议分析工具,它能够实时捕捉网络中的数据包,并以友好的界面展示出来
gudu_jimo_leng_e
4150
Wireshark抓包全集-85种协议
UDP(用户数据报协议):与TCP不同,UDP是无连接的,它不保证数据包的顺序和可靠性,但具有更低的延迟。在游戏、流媒体等实时性要求高的应用中常见。
2263
Wireshark抓包全集(85种协议、类别的抓包文件)
UDP(用户数据报协议):与TCP相比,UDP是无连接的、不可靠的,适用于实时性要求高的应用,如DNS查询、视频流等。
Nice_young
2097
Wireshark抓包实例分析
通过Wireshark抓包的过程,可以加深对这些协议和它们工作原理的理解。
天凉好个秋0213
2074
Wireshark抓包全集(85种协议、类别的抓包文件).zip
这些抓包文件提供了实际场景下的数据包实例,是学习和研究这些协议的宝贵资料。在网络安全方面,Wireshark可以帮助识别潜在的安全威胁,例如未加密的敏感信息传输、不正确的网络配置等。
3016
linux下使用wireshark抓包
使用 Wireshark 在 Linux 下抓包Wireshark 是一个功能强大且广泛使用的网络协议分析工具。它可以捕捉和显示网络中的数据包,帮助用户了解网络协议、诊断网络问题和安全漏洞。
1821