抓包与协议分析:从 Wireshark 到 BPF
0. 元信息
- 主题路径:
docs/topics/network/subtopics/packet-analysis/ - 父主题:
network - 主分类:计算机基础
- 辅助分类:工程技术
- 适合对象:会看 IP、TCP、UDP 基本字段,想用包证据排查网络问题的开发者
- 建议周期:4~5 周(每周 6~8 小时,含采集、过滤、解码与报告)
- 前置知识:
physical-and-link-layer、tcp-ip-stack、tcp-and-udp - 最终目标:能安全采集 pcap/PCAPNG,写 tcpdump BPF,使用 Wireshark 与 tshark 分析 DNS、TCP、HTTP、TLS,并用 SSLKEYLOGFILE 完成 TLS 解密
1. 学习路线
抓包位置与权限
→ Ethernet、IP、TCP/UDP 字段
→ pcap 与 PCAPNG
→ tcpdump 采集
→ BPF capture filter
→ Wireshark display filter
→ Follow Stream 与重组
→ tshark 字段导出
→ DNS、HTTP、TLS 分析
→ SSLKEYLOGFILE 与 TLS 解密
→ 性能、丢包与自动化报告
我们先决定在哪抓,再决定抓什么。过滤语法和证据保存都要可复现。
2. 阶段周数分配
| 阶段 | 4 周方案 | 5 周方案 | 备注 |
|---|---|---|---|
| 1. 采集基础 | 0.5 周 | 0.75 周 | 接口、权限、snaplen、时间戳 |
| 2. pcap 与链路解码 | 0.5 周 | 0.5 周 | Ethernet、VLAN、Linux cooked capture |
| 3. BPF 过滤 | 0.75 周 | 1 周 | host、net、port、proto、字节偏移 |
| 4. Wireshark 分析 | 0.75 周 | 1 周 | display filter、stream、Expert Info |
| 5. tshark 自动化 | 0.5 周 | 0.75 周 | 字段、统计、JSON/CSV |
| 6. TLS 与应用协议 | 0.5 周 | 0.5 周 | DNS、HTTP、TLS 解密 |
| 7. 综合案例 | 0.5 周 | 0.5 周 | 采集、分析、报告、脱敏 |
3. 九阶段表
| 阶段 | 核心知识 | 实践产出 | 可观察学会标准 |
|---|---|---|---|
| 1. 抓包边界 | 观察点、镜像口、主机抓包、权限、隐私 | 一张采集拓扑图 | 能说明当前抓包能看到和看不到什么 |
| 2. 文件格式 | pcap、PCAPNG、接口块、时间戳、snaplen | 两种格式各一份样本 | 能解释多接口场景为何优先 PCAPNG |
| 3. tcpdump | -i、-nn、-s、-w、-r、轮转 | 可复现采集命令 | 能在不做名称解析时完整保存 payload |
| 4. BPF | primitive、方向、布尔组合、字节偏移 | 10 条过滤表达式 | 能在采集前缩小流量且不漏目标会话 |
| 5. Wireshark | dissector、display filter、Follow Stream、重组 | 标注过的分析截图 | 能从帧定位到字段和会话 |
| 6. TCP 排障 | 三次握手、重传、乱序、窗口、RST、RTT | 一份 TCP 故障时间线 | 能区分真正丢包与抓包点造成的假象 |
| 7. 应用协议 | DNS、HTTP、TLS、VoIP 基础 | 三种协议分析记录 | 能写显示过滤器并导出关键字段 |
| 8. TLS 解密 | SSLKEYLOGFILE、密钥日志、会话限制 | 一份已解密 HTTPS 样本 | 能解释私钥为何通常不能解密 TLS 1.3 |
| 9. 自动化报告 | tshark、capinfos、editcap、mergecap、统计 | 一键可重复的分析命令集 | 能从大文件切片、提取字段并保留来源 |
4. 第一周任务
| 日 | 任务 | 当天交付 |
|---|---|---|
| Day 1 | 安装 Wireshark、tcpdump、tshark;记录版本、接口和权限 | 工具版本与采集约定 |
| Day 2 | 用 ip link、tcpdump -D 找接口;抓 ARP、ICMP | 两份短 pcap |
| Day 3 | 识别 Ethernet、IPv4/IPv6、TCP/UDP 头字段 | 一张逐层字段表 |
| Day 4 | 练习 host、net、port、src、dst、and/or/not | 10 条 BPF 与命中数 |
| Day 5 | 在 Wireshark 中练习 ip.addr、tcp.stream、dns、http.request | 过滤器清单 |
| Day 6 | 用 tshark 导出 DNS 查询和 HTTP Host | 命令、输出与字段说明 |
| Day 7 | 项目:采集一次 Web 访问并还原时间线 | pcap、命令、截图、结论 |
Day 7 拆解
步骤 A —— 最小可用(60 分钟)
- 运行
tcpdump -i any -nn -s 0 -w /tmp/cap.pcap tcp port 443; - 在另一终端访问一个测试 HTTPS 站点;
- 停止采集,用
capinfos /tmp/cap.pcap记录包数、时长和大小; - 在 Wireshark 中定位 TCP 握手和 TLS ClientHello;
- 保存原始 pcap 和采集命令。
步骤 B —— 补齐四类边界(45 分钟)
- 抓错接口:比较具体网卡与
any的链路层差异; - snaplen 太短:用小
-s制造截断,再与-s 0比较; - 名称解析干扰:比较带和不带
-nn的输出; - 高流量文件:运行
editcap -c 1000 cap.pcap split.pcap,确认切片可逐个读取。
5. 阶段通用验收
- 不看资料写出 10 条常用 tcpdump BPF;
- 能解释 capture filter 与 display filter 的执行位置和语法差异;
- 从一个包逐层指出链路、网络、传输、应用字段;
- 测试空文件、截断包、多接口 PCAPNG、乱序与重传;
- 至少分析 DNS、TCP、HTTP/TLS 三类流量并保存实际输出;
- 能说明抓包点、offload、时钟和丢包如何影响判断;
- 能把图形界面分析改写成 tshark 命令。
6. 最终验收
- 独立完成一次采集,说明接口、过滤器、snaplen、时间范围和权限;
- 写出并验证至少 15 条 BPF 与 15 条 Wireshark display filter;
- 分析至少 8 个案例:DNS 延迟、SYN 重传、RST、窗口受限、HTTP 请求、TLS 握手、TLS 解密、VoIP/RTP 基础统计;
- 完成 1 个综合项目,交付 pcap/PCAPNG、命令、过滤器、时间线、结论与脱敏说明;
- 用 15 分钟讲清“从现象到包证据”的排查过程。
7. 综合项目
首选:Web 请求故障分析包。搭建一个可控客户端和服务端。制造 DNS 慢、连接拒绝、服务端延迟、TLS 配置错误中的至少三种故障。
备选:VoIP 通话质量检查 / API 延迟拆分 / 容器东西向流量分析。
项目必做要求:
- 场景说明:拓扑、IP、接口、抓包点、时间同步;
- 采集命令:完整 tcpdump 命令和 BPF;
- 原始证据:未编辑 pcap/PCAPNG 的哈希和保管位置;
- 分析步骤:Wireshark 过滤器、tshark 命令、关键帧号;
- 故障时间线:DNS、TCP、TLS、HTTP 分段耗时;
- 边界测试:截断、丢包、offload、多接口至少各一次;
- 安全处理:脱敏 Cookie、Authorization、查询参数、密钥日志;
- README:依赖、复现、结论、限制与清理步骤。
本主题贡献
本主题沉淀抓包证据链:tcpdump 采集 + BPF 过滤、Wireshark / tshark 解码、pcap / PCAPNG 文件管理与 SSLKEYLOGFILE TLS 解密,所有结论都必须可复现且带哈希。
职责(3 项)
- 写 tcpdump BPF 表达式(host/net/port/proto/字节偏移 + and/or/not),能在采集前缩窄流量且不漏目标会话,能区分 capture filter(采集前执行)与 display filter(解码后执行)的位置差异;
- 管理 pcap/PCAPNG 文件(capinfos 看元数据、editcap 切片、mergecap 合并、reordercap 排序),保留只读原始证据 + 哈希,分析副本脱敏后分享;
- 用 SSLKEYLOGFILE 在受控客户端导出 TLS 会话秘密,配 Wireshark 解密 TLS 1.3,能解释为什么 TLS 1.3 + ECDHE 通常不能用服务端私钥解密(没有前向保密破解路径)。
交付物(4 项)
- 10 条 tcpdump BPF + 命中数(
tcp[tcpflags] & tcp-syn != 0、udp port 53 and host 1.1.1.1、字节偏移过滤等),能写出tcpdump -dd编译后表达式; - Wireshark display filter 清单(
ip.addr、tcp.stream、dns、http.request、tls.handshake.extensions_server_name),能区分五元组过滤与会话过滤; - tshark 字段导出脚本(
tshark -r cap.pcap -Y 'http.request' -T fields -e http.host),可复用于 100+ pcap; - 一份已解密 HTTPS pcap(SSLKEYLOGFILE + Wireshark)+ 未解密 pcap 对照,证明解密边界。
指标(3 项)
- 高吞吐抓包丢包率 ≤ 0.1%(
-Bbuffer、-s 0snaplen、-W轮转 +dropped by kernel监控); - BPF 表达式误判率 = 0(先宽后窄,采样验证后再压紧);
- pcap 脱敏覆盖率 100%(Cookie/Authorization/查询参数/密钥日志零泄漏,保留原件访问控制)。
8. 推荐开源资料
| 角色 | 资料 | 链接 | 用法 |
|---|---|---|---|
| 工具手册 | Wireshark User’s Guide | https://www.wireshark.org/docs/wsug_html_chunked/ | display filter、统计、TLS 解密 |
| 过滤语法 | pcap-filter(7) | https://www.tcpdump.org/manpages/pcap-filter.7.html | BPF 主参考 |
| 采集工具 | tcpdump manual | https://www.tcpdump.org/manpages/tcpdump.1.html | 采集与轮转参数 |
| 命令分析 | tshark manual | https://www.wireshark.org/docs/man-pages/tshark.html | 字段导出和统计 |
| 文件处理 | editcap manual | https://www.wireshark.org/docs/man-pages/editcap.html | 切片、去重、时间修正 |
| 格式规范 | PCAP Next Generation | https://datatracker.ietf.org/doc/draft-gharris-opsawg-pcap/ | PCAPNG 块结构 |
| 实战样本 | Wireshark Sample Captures | https://wiki.wireshark.org/SampleCaptures | 已知协议练习 |
| BPF 实现 | libpcap | https://github.com/the-tcpdump-group/libpcap | 编译器与 API 源码 |
Wireshark 采用 GPL-2.0-or-later。tcpdump 与 libpcap 使用 BSD 风格许可证。引用代码或分发二进制前先看仓库 LICENSE。
9. 学习资料汇聚(v0.3 自包含)
本节由本计划生成。工具行为以官方手册、格式规范和实际样本为准。
9.1 背景与动机
网络故障常跨进程、内核、交换机和远端服务。日志只展示应用看到的结果。抓包保留线上实际传输的帧、时间戳和协议字段,能回答谁先发、对方是否回、延迟出在哪。
1987 年的 tcpdump 把命令行抓包带到 Unix。Van Jacobson、Craig Leres、Steven McCanne 等人的 BPF 设计让过滤在内核侧执行。Gerald Combs 在 1998 年创建 Ethereal,后来更名 Wireshark。今天 libpcap、tcpdump、Wireshark、tshark 仍是协议开发和网络排障常用工具。
抓包也会收集账号、Cookie、业务数据和密钥。我们只抓必要范围。共享前要脱敏,密钥日志按敏感凭据保管。
9.2 概念地图
flowchart LR
Wire[链路流量] --> Point[抓包点 / 接口]
Point --> Capture[libpcap / Npcap]
BPF[BPF capture filter] --> Capture
Capture --> File[pcap / PCAPNG]
File --> WS[Wireshark]
File --> TS[tshark]
WS --> Dissector[Protocol dissector]
TS --> Dissector
Dissector --> DF[display filter]
Dissector --> Stream[TCP reassembly / Follow Stream]
Dissector --> Stats[RTT / IO Graph / Expert Info]
Keys[SSLKEYLOGFILE] --> TLS[TLS 解密]
TLS --> Dissector
File --> Tools[capinfos / editcap / mergecap]
BPF 在采集前决定哪些包进入文件。display filter 在解码后筛选视图。pcap 保存包和基础元数据。PCAPNG 还能记录多接口、名称解析和注释。dissector 把字节解释成字段。TCP 重组再把分段还原为应用数据。
9.3 基础知识讲解
经典论文
| 资料 | 角色 | 评分 | 链接 |
|---|---|---|---|
| The BSD Packet Filter: A New Architecture for User-level Packet Capture | BPF 原始架构 | 5 | https://www.tcpdump.org/papers/bpf-usenix93.pdf |
| tcpdump: A Packet Analyzer | tcpdump 设计与实践 | 4 | https://www.tcpdump.org/papers/tcpdump.pdf |
| End-to-End Arguments in System Design | 判断观测层边界 | 4 | https://web.mit.edu/Saltzer/www/publications/endtoend/endtoend.pdf |
| Improving Round-Trip Time Estimates in Reliable Transport Protocols | RTT 与重传计时背景 | 4 | https://dl.acm.org/doi/10.1145/52325.52356 |
经典书籍
| 资料 | 角色 | 评分 | 链接 |
|---|---|---|---|
| 《TCP/IP Illustrated, Volume 1》W. Richard Stevens | 用包理解 TCP/IP | 5 | https://www.informit.com/store/tcp-ip-illustrated-volume-1-the-protocols-9780321336316 |
| 《Practical Packet Analysis》Chris Sanders | Wireshark 实战入门 | 5 | https://nostarch.com/packetanalysis3 |
| 《Wireshark Network Analysis》Laura Chappell | 系统化分析方法 | 4 | https://www.chappell-university.com/books |
| 《Network Analysis Using Wireshark Cookbook》Yoram Orzach | 常见分析配方 | 4 | https://www.packtpub.com/product/network-analysis-using-wireshark-cookbook/9781849517645 |
优秀博客
| 资料 | 角色 | 评分 | 链接 |
|---|---|---|---|
| Wireshark Wiki — CaptureSetup | 抓包位置与平台配置 | 5 | https://wiki.wireshark.org/CaptureSetup |
| Wireshark Wiki — TLS | SSLKEYLOGFILE 与 TLS 解密 | 5 | https://wiki.wireshark.org/TLS |
| SharkFest Retrospective | 官方社区演讲资料 | 4 | https://sharkfest.wireshark.org/retrospective/ |
| Packet-Foo | Wireshark 与网络取证案例 | 4 | https://blog.packet-foo.com/ |
| Cloudflare — BPF, eBPF, XDP and Bpfilter | BPF 家族关系 | 4 | https://blog.cloudflare.com/bpf-the-forgotten-bytecode/ |
核心人物
| 人物 | 贡献 | 关键出处 |
|---|---|---|
| Van Jacobson | tcpdump、libpcap 与 BPF 共同作者 | tcpdump 与 BPF 论文 |
| Steven McCanne | BPF 共同设计者 | 1993 USENIX BPF 论文 |
| Craig Leres | tcpdump 早期作者 | tcpdump 项目历史 |
| Gerald Combs | Ethereal/Wireshark 创建者 | Wireshark 项目历史 |
| Guy Harris | libpcap、Wireshark 与 PCAPNG 长期维护 | Wireshark 与 pcapng 规范工作 |
开发方法
| 方法 | 适用 | 关键点 |
|---|---|---|
| 先写观测假设 | 所有抓包任务 | 写清预期包、抓包点和能推翻假设的字段 |
| 先宽后窄 | 不确定流量特征 | 短时宽抓,确认五元组后收紧 BPF |
| 保留原始证据 | 线上与安全分析 | 原文件只读保存;分析副本可切片、脱敏 |
| 时间线驱动 | 延迟和超时 | 按 frame time、stream、方向排列事件,不只看 Expert Info |
| 双端抓包 | 丢包与中间链路问题 | 对比相同序列号在两端是否出现,校正时钟误差 |
| 命令化复现 | 重复分析和交接 | 把 GUI 过滤器转成 tshark,记录工具版本和字段 |
9.4 经典问题与经典案例
| # | 问题 | 为什么重要 | 最简答案 |
|---|---|---|---|
| 1 | capture filter 和 display filter 有何区别 | 写错会漏包或过滤无效 | BPF 在采集前执行;display filter 在解码后执行 |
| 2 | 为什么建议 -nn | 名称解析会制造额外流量和等待 | 禁用主机名与端口名解析,保留原始数值 |
| 3 | snaplen 太小会怎样 | payload 和后续头部可能被截断 | 用 -s 0 捕获完整包,空间受限时再明确设值 |
| 4 | -i any 为什么没有普通 Ethernet 头 | Linux 聚合多接口需要统一链路类型 | 常见为 Linux cooked capture,逐接口抓可保留原链路头 |
| 5 | TCP Retransmission 是否一定代表网络丢包 | 抓包点也可能漏包 | 查 capture drop、双端包和序列号时间线 |
| 6 | checksum bad 是否真坏包 | 网卡 offload 可能在抓包后才填校验和 | 在接收端复核,或临时关闭 offload 对照 |
| 7 | 如何定位一次 HTTP 请求 | 同一连接有多个请求 | 用 tcp.stream、请求字段、时间和响应关联 |
| 8 | TLS 1.3 如何解密 | 服务器私钥通常不够 | 在受控客户端导出 SSLKEYLOGFILE,再配置 Wireshark |
| 9 | 大 pcap 怎么处理 | GUI 容易慢或耗尽内存 | 用 BPF 重抓,或用 editcap 切片、tshark 流式筛选 |
| 10 | VoIP 声音卡顿怎么看 | 包到达不等于播放平滑 | 看 RTP sequence、jitter、loss,并结合端点缓冲 |
9.5 学习难点
概念难点
| 难点 | 为什么会卡 | 突破路径 |
|---|---|---|
| 帧、包、段、流混用 | 不同协议层名称相近 | 每次写结论都标 Ethernet frame、IP packet、TCP segment 或 stream |
| BPF 与 display filter 混淆 | 两套语法表达相似 | 配对练习:tcp port 443 对 tcp.port == 443 |
| 抓包视角 | 同一会话在不同位置长得不同 | 画 NAT、隧道、容器和 offload 的观察点 |
| pcap 与 PCAPNG | 扩展名不总能说明内部格式 | 用 capinfos 检查文件类型、接口和精度 |
思维难点
| 难点 | 为什么会卡 | 突破路径 |
|---|---|---|
| 从症状到可证伪假设 | 容易先认定“网络慢” | 写出 DNS、建连、TLS、服务处理四段预期时间 |
| 区分线上异常与采集异常 | 抓包也会丢包、乱序和截断 | 同时检查 drop counter、snaplen、时钟与双端证据 |
| 相关不等于因果 | Expert Info 标签很醒目 | 回到序列号、ACK、时间和端点行为 |
| 加密流量边界 | 能看到握手却看不到业务字段 | 列出元数据可见范围,再决定是否能安全取得密钥日志 |
工程难点
| 难点 | 为什么会卡 | 突破路径 |
|---|---|---|
| 权限配置 | root 抓包权限过大 | Linux 用 dumpcap capabilities 或受控抓包组,避免长期 root GUI |
| 高吞吐丢包 | 磁盘、缓冲区和解码跟不上 | 用 BPF、增大缓冲、只写文件、轮转并检查 dropped packets |
| 字段名变化 | tshark 版本间 dissector 字段会变 | 用 tshark -G fields 查询当前版本,报告中记版本 |
| 脱敏 | payload 常含凭据和个人数据 | 在副本上处理,删除敏感包或字段,保留原件访问控制 |
| TLS 密钥管理 | SSLKEYLOGFILE 可解密会话 | 限定测试环境、最小授权、完成后删除并记录处置 |
9.6 技术标准与接口
9.6.1 Entity
| 名称 | 版本 | 发布组织 | 状态 | 许可证 / 可访问性 |
|---|---|---|---|---|
| libpcap file format | pcap savefile | tcpdump/libpcap project | 广泛使用 | 规范公开;libpcap BSD 风格许可证 |
| PCAP Next Generation | draft-gharris-opsawg-pcap-06 | IETF OPSAWG Internet-Draft | 草案,生态广泛支持 | 免费公开 |
| Classic BPF | 1993 BPF / libpcap filter language | BSD/tcpdump project | 稳定、广泛使用 | 论文与手册公开 |
| Wireshark display filter | Wireshark 4.x | Wireshark Foundation | 活跃实现接口 | 文档公开;GPL-2.0-or-later |
| tcpdump | 4.x | tcpdump group | 活跃 | BSD 3-Clause |
| TShark | Wireshark 4.x | Wireshark Foundation | 活跃 | GPL-2.0-or-later |
9.6.2 Scope
- pcap/PCAPNG:保存捕获包和元数据。它们不保证文件中的每个包都曾在线上出现,也不证明未记录的包不存在。
- Classic BPF:在采集路径筛选包。它适合固定头部字段和有限字节检查,不负责应用层重组。
- Wireshark display filter:对 dissector 生成的字段筛选和比较。它不减少已经采集的文件大小。
- tshark:复用 Wireshark dissector 做命令行解码、过滤和统计。它不是 tcpdump BPF 的替代品,采集与读取选项要分清。
- SSLKEYLOGFILE:常见客户端导出 TLS 会话秘密的事实接口。它不属于 TLS RFC,也不应在非授权环境使用。
9.6.3 Structure
pcap 由全局头和一串 packet record 组成。每条记录含时间戳、捕获长度、线上长度和包字节。PCAPNG 使用块结构,常见块包括 Section Header Block、Interface Description Block、Enhanced Packet Block、Name Resolution Block。
必须掌握的接口与字段:
- libpcap:
pcap_open_live、pcap_compile、pcap_setfilter、pcap_next_ex、pcap_dump、pcap_close; - BPF:
host、net、port、portrange、src、dst、ether、ip、ip6、tcp、udp、icmp、and、or、not; - tcpdump:
-i、-nn、-s、-B、-c、-w、-r、-C、-G、-W; - Wireshark:frame、
tcp.stream、udp.stream、tcp.analysis.*、Follow Stream、Expert Information; - tshark:
-r、-Y、-T fields、-e、-z、-G fields; - 文件工具:
capinfos、editcap、mergecap。
真实命令:
tcpdump -i any -nn -s 0 -w /tmp/cap.pcap tcp port 443
tshark -r cap.pcap -Y 'http.request' -T fields -e http.host
editcap -c 1000 cap.pcap split.pcap
9.6.4 Ecosystem
- 采集实现:libpcap、Npcap、dumpcap、tcpdump、AF_PACKET;
- 分析器:Wireshark、tshark、Zeek、Suricata、Arkime;
- 文件工具:capinfos、editcap、mergecap、reordercap;
- 云与虚拟网络:AWS VPC Traffic Mirroring、Azure vTAP、交换机 SPAN/TAP、容器节点抓包;
- 扩展点:Wireshark dissector 可用 C 或 Lua;libpcap API 可嵌入程序;
- 事实标准与正式规范:pcap 是长期事实格式;PCAPNG 有公开草案;display filter 和 SSLKEYLOGFILE 由实现生态定义。
9.6.5 Depth Tiers
| 层级 | 名称 | 必须看到什么 |
|---|---|---|
| L0 | 知道存在 | 知道 tcpdump 负责采集,Wireshark/tshark 负责解码,文件常见 pcap/PCAPNG |
| L1 | 看得懂示例 | 能读五元组、时间戳、长度和基本协议树,能使用简单 BPF 与 display filter |
| L2 | 能正确调用 | 能选接口、完整采集、组合 BPF、Follow Stream、用 tshark 导出字段 |
| L3 | 能解释与排错 | 能处理重传、乱序、offload、截断、抓包丢失,并用 SSLKEYLOGFILE 分析授权 HTTPS |
| L4 | 能设计与扩展 | 能设计高吞吐采集方案、写 dissector 或 libpcap 程序、管理证据链与数据保留策略 |
本计划要求达到:L3。做协议工具、网络取证平台或高吞吐探针时进入 L4。
9.6.6 Source
- BPF 论文:https://www.tcpdump.org/papers/bpf-usenix93.pdf
- pcap-filter(7):https://www.tcpdump.org/manpages/pcap-filter.7.html
- tcpdump(1):https://www.tcpdump.org/manpages/tcpdump.1.html
- Wireshark User’s Guide:https://www.wireshark.org/docs/wsug_html_chunked/
- TShark manual:https://www.wireshark.org/docs/man-pages/tshark.html
- PCAPNG draft:https://datatracker.ietf.org/doc/draft-gharris-opsawg-pcap/
- 引用版本快照日期:2026-07-30。
10. 常见误区
- 在错误接口抓包,再用空文件证明“网络没发包”;
- 不写抓包点和拓扑,让别人无法解释 NAT、隧道或镜像流量;
- 混用 BPF 与 display filter 语法;
- 为了省空间盲目缩小 snaplen,截断关键 payload;
- 开着名称解析分析故障,引入额外 DNS 流量;
- 把
tcp.analysis.retransmission标签直接当成链路丢包结论; - 忽略 checksum offload,把本机发送包误判为校验和损坏;
- 用
-i any后还按普通 Ethernet 头偏移写过滤器; - 只看一个端点,无法区分包在中间丢失还是采集器漏记;
- 忽略抓包 drop counter、时间精度和系统时钟;
- 认为服务器私钥可以解密所有 HTTPS。TLS 1.3 和 ECDHE 通常需要会话秘密;
- 把 SSLKEYLOGFILE 放进工单或公开仓库;
- 在生产环境长时间无过滤抓全量,耗尽磁盘并收集过量敏感数据;
- 直接编辑唯一原始 pcap,不留哈希和只读副本;
- tshark 脚本不固定版本,也不检查字段名是否存在。
11. 所有知识点分类(统一规则)
- 编程语言
- 数据结构与算法
- 计算机基础:链路层、IP、TCP/UDP、协议字段、抓包格式
- 工程技术:tcpdump、Wireshark、tshark、自动化分析
- Web 与后端:DNS、HTTP、TLS、API 故障排查
- 前端与客户端
- 数据与人工智能
- 项目与职业能力:证据记录、故障报告、协作交接
- 安全与可靠性:流量脱敏、TLS 密钥、网络取证
本计划归属:计算机基础 主 + 工程技术 辅。