PCAP 校验和错误并不总是坏数据包:了解卸载证据
为什么数据包捕获中的 TCP、UDP 和 IP 校验和错误可能是由校验和卸载引起的,以及如何避免重写良好的证据。
数据包捕获通常会显示 TCP、UDP 或 IP 校验和错误。有时这些错误意味着真正的腐败。有时,它们意味着捕获是在网络适配器填写校验和之前进行的。如果工程师将每个校验和警告视为坏数据包,他们就可以追查错误的问题或重写有效证据。
校验和卸载是 PCAP 解释误导的最常见来源之一。
为什么卸载会产生令人困惑的捕获
现代网络适配器可以在硬件中计算校验和。操作系统可以将带有占位符校验和字段的数据包传递给适配器。如果捕获发生在硬件完成之前,即使放置在线路上的数据包是正确的,PCAP 也会显示无效的校验和。
这在本地出站捕获中尤其常见。捕获文件记录主机准备的内容,不一定是卸载后准确的最终线路图像。
询问数据包在哪里捕获
校验和解释取决于捕获位置:
- 在 NIC 卸载之前在发送主机上捕获
- 传输后在镜像端口或分接头上捕获
- 在接收主机上捕获
- 在虚拟机或容器边界内捕获
- 在虚拟适配器上捕获
发送方的出站校验和警告与在独立分路器上观察到的校验和失败不同。捕获点是证据的一部分。
不要过早重写校验和
立即重新计算校验和可能很诱人。这可以使下游工具更安静,但也改变了证据。在编辑之前,确定捕获需要回答什么问题。
如果目标是应用程序层调试,则在明确记录的情况下重新计算校验和以提高可读性可能是可以接受的。如果目标是证明线路损坏,重写校验和可以消除正在调查的证据。
受控工作流程记录:
- 哪些校验和字段被标记
- 数据包方向
- 占领点
- 是否有可能卸载
- 输出文件是否重写校验和字节
- 哪些数据包发生了变化
编辑应该是经过深思熟虑的,而不是自动的。
区分卸载与真正的腐败
可能涉及校验和卸载的迹象:
- 主要是捕获主机上的出站数据包
- 许多校验和以一致的模式标记
- 尽管有警告,交通仍然正常
- 独立的捕获点不会显示相同的错误
- 虚拟化或卸载繁重的环境
有迹象表明可能涉及真正的腐败:
- 接收端滴
- 独立点击确认无效校验和
- 数据包丢失或重传与校验和失败一致
- 两个方向都会出现错误,且没有卸载解释
- 链路层或捕获硬件报告错误
重点是不要忽略校验和警告。关键是要根据上下文来解释它们。
PCAP 手术适合的场合
PCAP 手术专为证据主导的数据包捕获工作而设计。它应该帮助工程师检查数据包元数据,了解捕获看起来错误的原因,并仅在合理时应用受控重写操作。
对于校验和情况,产品边界很重要。它不应该默默地“修复”捕获并假装没有发生任何变化。一个有用的手术工具解释道:
- 校验和警告源
- 可能卸载上下文
- 受影响的数据包集
- 重写之前和之后的值
- 变化是常态化还是修复
这为协议工程师提供了他们可以防御的捕获,而不仅仅是安静打开的文件。