tcpdump -X 以十六进制加 ASCII 混合格式显示数据包,适合分析明文协议;-x 仅十六进制,-XX 包含链路层头部;配合 -nn、-s 0 和 -r 可提升分析准确性与灵活性。

用 tcpdump -X 就能以十六进制加 ASCII 的混合格式查看数据包内容,这是最常用、最直观的方式。
基础用法:-X 参数
-X 会同时显示每个数据包的十六进制编码和对应的可读 ASCII 字符(不可见字符用点号代替),适合分析 HTTP、DNS、自定义协议等明文或半明文载荷。
- 抓取并实时显示前 5 个包的十六进制内容:
sudo tcpdump -i eth0 -c 5 -X - 只看某台主机某端口的流量(比如访问 192.168.1.100 的 80 端口):
sudo tcpdump -i eth0 -nn -X 'host 192.168.1.100 and port 80'
更精细控制:-x 和 -XX 的区别
-x 只显示十六进制(不含 ASCII),输出更紧凑;-XX 比 -X 多显示链路层头部(如以太网帧头),适合需要分析 MAC 地址、VLAN 或底层封装的场景。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 仅十六进制(无 ASCII):
sudo tcpdump -i eth0 -c 3 -x icmp - 含以太网头的十六进制+ASCII:
sudo tcpdump -i eth0 -c 2 -XX 'tcp port 22'
配合保存与回放查看
抓包保存为 .pcap 文件后,仍可用 -X 查看——这对离线分析或避免终端刷屏很有用:
- 先保存:
sudo tcpdump -i eth0 -w capture.pcap -c 20 - 再以十六进制查看:
tcpdump -r capture.pcap -X | head -n 50(用 head 截取前几行便于阅读)
小提示
实际使用时建议搭配 -nn(不解析 IP 和端口名)、-s 0(捕获完整包,避免截断),否则可能看不到有效载荷:
- sudo tcpdump -i eth0 -nn -s 0 -X 'port 8080'

















