-q 是干什么的
精简模式会缩短每行的协议信息、省略部分细节,让输出更短、滚动更快。它适合大流量下粗略观察,也便于把输出交给 awk 之类工具做快速统计;代价是丢掉 seq、ack、窗口与长度等字段,判断重传、时序与窗口问题不能用精简输出。
基本信息
| 适用平台 | Linux / macOS / BSD 上的 tcpdump |
|---|---|
| 语法 | tcpdump -q [选项] [过滤表达式] |
| 输出差异 | 省略 seq/ack/窗口等细节,仅保留协议与长度信息 |
| 适用场合 | 大流量粗看、文本聚合统计 |
| 不适用 | 重传、窗口、时序类判读 |
典型使用场景
- 高速链路上先看有哪些协议在跑,确定过滤方向
- 把输出按列切分做来源与端口的快速统计
- 输出量大到终端难以滚动时减少行长度
- 给日志系统采集时降低单行体积
- 先粗看量级,再改用不带 -q 的命令做细节分析
常用示例
常用示例
tcpdump -i eth0 -nn -q -c 50 'tcp port 80' # 精简看 50 个包
tcpdump -nn -q -r big.pcap | awk '{print $5}' | sort | uniq -c | sort -rn | head # 粗略统计端口
# 输出对比(示意)
# 默认:IP 10.0.0.1.443 > 10.0.0.2.55000: Flags [P.], seq 1:513, ack 1, length 512
# -q :IP 10.0.0.1.443 > 10.0.0.2.55000: tcp 512输出对比
| 对比项 | 默认输出 | -q 输出 |
|---|---|---|
| 协议细节 | 含 Flags、seq、ack、win | 大幅简化 |
| 行长度 | 较长 | 较短,便于滚动 |
| 统计便利性 | 需处理多个字段 | 按列切分更省事 |
| 分析能力 | 可判重传与窗口 | 仅能看协议与长度 |
-q 与 -v 的作用方向相反,同时给出时结果往往两头都不达预期,按分析目标二选一。
大流量下搭配 -c 限量再统计,能避免输出把终端与日志系统刷爆。
补充要点
- 先用精简输出看协议分布,再逐步加条件缩小范围
- 统计脚本依赖列位置,换成其他选项后要重新核对字段号
- 同样条件各抓一份精简与默认输出做对照,能验证过滤是否有效
- 向他人解释问题时仍应给出默认输出,精简输出的信息量不足以支撑结论
- 长时间运行时配合限量与落盘,避免终端与日志被刷爆
精简模式丢掉的不只是显示内容:序列号与窗口等字段缺失后,基于它们的任何推断都不成立。