tcpdump不执行网络层协议完整性校验,仅解析并显示字段;它不检测ttl=0、分片异常、校验和错误等rfc违规情形,相关验证需依赖wireshark或tshark等工具。

tcpdump 本身不执行网络层协议完整性校验,它只做解析与呈现
tcpdump 不校验 IP 头或 ICMP 结构是否合法
它会照常解析并显示 IP 版本、TTL、协议号、源/目的地址、分片标志(MF、DF)、片偏移等字段,但不会判断这些字段组合是否违反 RFC 规范。例如:
- TTL=0 的包仍会被显示,不标记为“非法”
- IP 总长度与实际捕获字节不符时,仅可能提示 truncated-ip(前提是 -s 设置过小)
- 分片重叠、片偏移非8字节对齐、首片 MF=0 但后续片存在等情况,tcpdump 不检测也不告警
校验和处理依赖内核与参数配置
- 默认情况下,Linux 内核在接收路径中可能已禁用校验和验证(尤其开启 GRO/LRO 时),tcpdump 捕获的是经内核初步处理后的包
- 若网卡支持硬件校验和卸载(Checksum Offload),tcpdump 可能显示 bad checksum —— 这其实是内核在交付给抓包接口前检测到的异常,不是 tcpdump 自己计算得出
- 要观察原始校验和字段值,需加 -xx 或 -X 查看十六进制载荷,并手动比对;tcpdump -v 不自动验证或修正
识别常见网络层异常需人工结合上下文
运行时留意以下输出线索:
- truncated-ip:表示捕获长度不足,IP 包被截断,可能掩盖真实结构错误
- frag, fragment:提示存在分片,需检查是否缺失中间片或偏移错乱
- length X > captured Y:声明长度远超实际捕获字节数,暗示截断或封装异常
- ip-proto-255 或未知协议号:可能指向私有协议或构造异常包
真正做完整性分析要靠后续工具
- 将 -w 保存的 pcap 文件导入 Wireshark 或 tshark,启用 “Validate the integrity of packet data” 选项,可触发 IP/TCP/UDP 校验和重算与标记
- 使用 tshark -V -r trace.pcap | grep -i "checksum|error|malformed" 快速筛查协议层问题
- 对分片重组、ICMP 类型/代码合法性、IPv4 选项字段格式等深度验证,tcpdump 无法替代专用解析器
不复杂但容易忽略










