tcpdump:cksum 不正确

网络工程 tcpdump
2022-02-07 12:37:03

当我tcpdump在我的机器上运行时(这里我使用1.2.3.4

tcpdump -i eth0 -n dst host 1.2.3.4 -v

大约 90% 的传入数据包具有不正确的校验和:

cksum 0xc25b (correct), seq 101134607:101136035
cksum 0xc6b8 (incorrect -> 0x1785), seq 101136035:101156027
cksum 0xd1e0 (incorrect -> 0x00ce), seq 101156027:101178875
cksum 0xc6b8 (incorrect -> 0x7f3d), seq 101178875:101198867
cksum 0xa540 (incorrect -> 0xe396), seq 101198867:101210291
cksum 0xc4ec (incorrect -> 0xdd01), seq 101210291:101229823
cksum 0xc980 (correct), seq 101229823:101231251
cksum 0xc124 (incorrect -> 0x8c52), seq 101231251:101249815
cksum 0xaca0 (incorrect -> 0xf190), seq 101249815:101263127
cksum 0x0d39 (correct), seq 101263127:101264555

什么可能导致这种情况,我该如何进一步调查?还有什么是测试我的连接的最可靠方法?

我怀疑我连接的光缆可能有缺陷

例如,使用 UDP 进行测试会更好,因为我会看到哪些数据包实际通过了?

我让 ping 运行了几个小时,但没有发现任何问题(0% 丢失)

这样的问题会通过 ping 数据包丢失来证明吗?

1个回答

TCP 校验和是针对 TCP 标头、有效负载和 IP 伪标头计算的。

校验和错误通常表明在没有正确重新计算校验和的情况下对标头进行了操作。

使用自己的校验和(如以太网)在第 2 层协议上发生传输错误的可能性很小,因为以太网的 FCS 很少会错过这些错误。

另一种可能性是对第 3 层跃点内的有效负载的损坏,例如路由器中的内存故障。

诊断的第一步是找到失败的数据包/段的匹配属性——相同的网关、相同的源、相同的 NAT 策略、...