回环演练是干什么的
回环接口(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 规则,否则端口被占或延迟规则残留会影响后续在本机做的其他测试。