要查看抓包的详细报文内容,需用-vv显示完整协议字段、-s 0捕获全包载荷、-nn禁用解析提速;结合-A或-X查看ASCII/十六进制载荷,或保存为pcap用Wireshark深度解析。

Linux 中查看抓包的详细报文内容,核心在于用对工具参数和输出格式。默认的 tcpdump 输出只显示简略摘要,要看到完整协议字段(如 TCP 标志位、IP 头部、应用层载荷等),需主动启用详细模式或调整截取长度。
用 -vv 显示最完整的协议解析信息
tcpdump 的 -v 是基础详细模式,-vv 才真正展开所有字段:
- -vv:显示 IP 头的 tos、ttl、id、flags、proto、length;TCP/UDP 头的源/目的端口、seq/ack、win、cksum、options;甚至 DNS 查询类型、HTTP 方法等上层特征
- 搭配 -nn 避免 DNS 反查耗时,直接显示 IP 和端口号
- 示例:sudo tcpdump -i eth0 -vv -nn port 80
用 -s 0 捕获完整报文载荷
tcpdump 默认只截取前 96 字节(或 262144 字节,取决于版本),可能丢掉 HTTP body、TLS 握手数据等关键内容:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- -s 0 表示捕获每个包的全部原始字节(无截断)
- 这对分析 POST 数据、JSON 响应、加密协商字段至关重要
- 注意:-s 0 会显著增大内存和磁盘占用,生产环境慎用
- 示例:sudo tcpdump -i eth0 -s 0 -vv -nn host 192.168.1.100
用 -A 或 -X 查看可读的载荷内容
当需要确认 HTTP 请求头、SQL 查询、日志文本等明文内容时:
- -A:以 ASCII 文本形式打印载荷(适合 HTTP、SMTP、FTP 等)
- -X:同时显示十六进制 + ASCII(类似 Wireshark 的“Packet Bytes”窗格)
- 两者都依赖 -s 0 才能看清完整内容,否则可能只显示开头几行
- 示例:sudo tcpdump -i eth0 -A -s 0 port 53(查看 DNS 查询的域名字符串)
保存为 pcap 后用 Wireshark 深度解析
命令行始终有局限,复杂协议(如 TLS、gRPC、自定义二进制协议)建议导出后图形化分析:
- 先用 sudo tcpdump -i eth0 -w capture.pcap -s 0 port 443 保存原始数据
- 用 scp 或 sftp 将 .pcap 文件传到本地 Windows/macOS
- 用 Wireshark 打开 → 右键报文 → “Follow → TCP Stream” 或 “Decode As…” 强制指定协议
- Wireshark 能自动识别 HTTP/2、QUIC、SIP 等,并高亮状态码、错误字段、重传标记

















