首页/网络/抓包与流量分析速查/回环抓包自测练习
抓包工具链61 条

回环抓包自测练习

用 lo 接口与本地 HTTP 服务练手:抓、过滤、统计、导出全流程熟悉后,再把相同动作搬到生产现场。

回环演练是干什么的

回环接口(Linux 的 lo、macOS 的 lo0)上的流量不出网卡,本机自己发自己收。用它配合一个本地 HTTP 服务做完整流程练习:起服务、抓包、写过滤、看统计、导出对象,每个动作都能立刻看到结果,而且不影响任何人。全流程练熟之后,到生产现场只需替换接口与过滤条件,动作本身不变。

基本信息

适用平台Linux(lo 接口)、macOS(lo0)
权限要求dumpcap/tcpdump 需 root 或具备抓包能力
练习服务python3 -m http.server 8080 起一个静态文件服务
抓包命令dumpcap -i lo -f 过滤 -w 文件 -a duration:秒数
分析命令tshark -r 文件 做统计与导出
局限性回环没有真实丢包与物理延迟,不能当作网络分析模板

适合练的动作

  • 抓包与权限:确认抓包工具需要的权限,练习用普通用户触发提权采集
  • 过滤器:从写端口过滤开始,逐步加上主机、协议、方向条件
  • 统计:用会话与端点统计看清一次 HTTP 请求产生了几条连接
  • 导出:把 HTTP 应答体导出成文件并核对哈希,熟悉还原流程
  • 时间线:手工构造慢响应与并发请求,观察往返时间与队列行为
  • 裁剪与合并:用 editcap 切段时间、用 mergecap 合并多份文件

一次完整演练

一次完整演练
python3 -m http.server 8080 &                          # 起本地服务
mkdir -p /var/tmp/drill && cd /var/tmp/drill
dumpcap -i lo -f 'tcp port 8080' -w drill.pcapng -a duration:30   # 抓 30 秒
curl -s http://127.0.0.1:8080/ > /dev/null               # 制造一次请求
curl -s -o /dev/null -w '%{time_total}\n' http://127.0.0.1:8080/ # 记录耗时
tshark -r drill.pcapng -q -z conv,tcp                    # 看会话统计
tshark -r drill.pcapng --export-objects http,./out       # 导出传输内容
# 有 root 的实验机上可用 tc netem 给 lo 注入延迟, 观察耗时变化
tc qdisc add dev lo root netem delay 50ms                # 用完执行 tc qdisc del dev lo root

练习项目与观察点

练习操作该看什么
抓包权限用普通用户执行 dumpcap能否提权成功, 失败时的报错
过滤生效只写端口过滤再逐项加条件包数变化是否符合预期
连接复用连续发多个请求是复用一条连接还是每次新建
导出核对导出对象与原文件比哈希内容是否完全一致
裁剪合并editcap 切片后 mergecap 合并时间顺序与包数是否保留
延迟注入netem 加 50 毫秒抓包中的往返时间是否同步变大
回环接口上的抓包不经过网卡与交换机,看不到丢包、乱序这类链路特征;把它当模板去解释生产问题会得到错误直觉,练熟动作即可。
练习结束后关掉本地服务并删掉 netem 规则,否则端口被占或延迟规则残留会影响后续在本机做的其他测试。

易错点

  • 把回环演练中得到的时序结论直接搬到生产环境,忽略了回环没有物理延迟与丢包,得出过于乐观的基线
  • 练习用的服务忘记关闭,端口被占用导致后续演示或测试失败,且监听的服务暴露本机文件目录
  • 用 netem 给 lo 注入延迟后忘记删除规则,之后所有本地测试都带上延迟,排查方向被带偏
  • 在共用的测试机上直接用 root 抓全量回环流量,文件落在默认目录且权限过宽,产生无谓的敏感数据残留

数据来源与参考

  • Wireshark User's Guide
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌