从 dmesg 中我们看到以下内容:
UDP: bad checksum. From 34.21.56.68:4343 to 32.3.42.22:4343 ulen 20
UDP: bad checksum. From 34.21.90.186:4343 to 32.3.42.22:4343 ulen 20
UDP: bad checksum. From 34.21.54.181:4343 to 32.3.42.22:4343 ulen 20
UDP: bad checksum. From 34.21.90.186:4343 to 32.3.42.22:4343 ulen 20
UDP: bad checksum. From 34.21.90.186:4343 to 32.3.42.22:4343 ulen 20
UDP: bad checksum. From 34.21.90.186:4343 to 32.3.42.22:4343 ulen 20
UDP: bad checksum. From 34.21.90.186:4343 to 32.3.42.22:4343 ulen 20
net_ratelimit: 16 callbacks suppressed
UDP: bad checksum. From 34.21.50.188:137 to 34.21.251.239:137 ulen 32
UDP: bad checksum. From 34.21.50.188:137 to 34.21.251.239:137 ulen 32
UDP: bad checksum. From 34.21.245.107:137 to 34.21.251.239:137 ulen 32
UDP: bad checksum. From 34.21.245.107:137 to 34.21.251.239:137 ulen 32
这个信息表示什么?
然后当我们将一些 pkg 传输到这台机器时,我们注意到 pkg 已损坏
这是怎么回事?
答案1
传入数据包中有位错误。这些错误由循环冗余校验 (CRC)。每个数据包的末尾都有一个错误检测代码。此代码也可以称为“校验和”。此校验和必须与数据包的其余部分匹配,否则您将得到“错误校验和”。
如果您收到很多这样的警告(每秒超过 10 条),您可以尝试更换或绕过计算机所连接的以太网电缆和网络交换机。否则我不会太担心一些位错误。
答案2
这是由校验和卸载引起的。您可以在 tcpdump 或 wireshark 中检查校验和是否为零。这是因为校验和处理发生在硬件层。
Unix & Linux Stack Exchange 上回答了类似的问题:https://unix.stackexchange.com/questions/584204/dmesg-udp-bad-checksum-rhel-7-x