首页/网络/网络排障速查/输出详略与格式(-v / -e / -A / -X)

输出详略与格式(-v / -e / -A / -X)

同一份流量按需切换细节:-v 看 TTL/长度/选项,-e 显示链路层 MAC,-A 看 ASCII 正文,-X 同时看十六进制与 ASCII,层层递进定位。

网络排障速查网络更新于 2026-10-13

输出详略按需切换

tcpdump 默认只打印协议头的主干字段,遇到需要看时间、看链路层、看载荷的场景就要显式切换输出格式。详细级别选项逐级增加协议细节,链路层选项把媒体访问控制地址打出来,载荷选项则按字符或十六进制展示正文。同一份流量用不同格式看,得到的信息量与可读性完全不同,选错格式要么漏信息,要么满屏噪声看不出重点。

基本信息

适用平台Linux、macOS、BSD 的 tcpdump(libpcap)
详细级别-v、-vv、-vvv 逐级增加协议细节
链路层-e 打印链路层头,含地址信息
载荷显示-A 按字符打印,-X 十六进制加字符
精简输出-q 减少信息输出,适合大批量统计

典型使用场景

  • 确认生存时间与窗口是否被中间设备改写:加详细级别看字段
  • 核对链路层地址与虚拟局域网标签:用链路层选项抓现场证据
  • 查看明文协议内容:按字符打印请求行与响应头
  • 排查二进制协议:用十六进制方式确认字段取值
  • 统计大量包:用精简输出降低噪声,只关心计数

输出格式切换

输出格式切换
tcpdump -nn -i eth0 -c 5 -v tcp port 443      # 生存时间、窗口与选项
tcpdump -nn -e -i eth0 -c 5 arp                # 带链路层地址
tcpdump -nn -A -i eth0 -c 20 'tcp port 80'     # 按字符打印正文
tcpdump -nn -X -i eth0 -c 5 'udp port 53'      # 十六进制加字符
tcpdump -nn -q -i eth0 -c 1000 | tail -3       # 精简输出跑量
tcpdump -nn -i eth0 -c 5 -vv 'tcp[tcpflags] & (tcp-syn|tcp-ack) != 0'   # 握手细节

选项与增量信息

选项增加的信息适用场景
-v / -vv / -vvv逐级增加协议细节看选项字段与校验结果
-e链路层头,含地址核对地址与标签
-A载荷按字符打印明文协议内容
-X载荷十六进制加字符二进制协议字段
-q输出更少大批量统计
-c N限制包数先看样本再决定范围
用按字符方式看明文协议最直观;二进制协议要用十六进制方式才能确认关键字段,否则只能看到乱码。
输出格式与抓包长度是两件事:格式选项决定打印多少,快照长度决定实际抓了多少字节,载荷被截断时格式选项也救不回来。

易错点

  • 用按字符方式看二进制协议会满屏乱码,容易误判为数据损坏
  • 链路层选项与全接口抓包组合时显示的是通用链路层头,不能当真实地址证据
  • 忘记限制包数就用详细级别抓高流量接口:终端刷屏,关键包一闪而过
  • 只靠精简输出下结论:信息量不足,无法判断字段异常

数据来源与参考

  • man 8 tcpdump(输出选项)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌