UDP 似乎使用了一种相当简单的校验和算法,并且大多数情况下它会产生所需的结果并检测错误。
但是,据我所知,UDP 的标头在使用巨型帧时是相同的,并且校验和是相同的。它只有 16 位。
这是否会增加错误渗入的可能性,并且使用 UDP 的协议(尤其是使用大数据包的协议)根本不应该依赖 UDP 校验和?
正如您所指出的,无论数据包有多大,UDP 都使用 16 位校验和。如果更改没有改变所有 16 位字的总和,则 UDP 校验和无法检测错误。随着数据包大小的增加,这种情况更有可能发生。
但是,UDP 通常运行在以太网之上,它提供 32 位 CRC,这比 UDP 校验和强得多。因此,大多数人依靠以太帧来保证数据完整性。
大的 UDP 数据包将被分成多个 IP 数据包,每个数据包都在自己的具有 32 位 CRC 的以太网数据包中。因此,从数据完整性的角度来看,发送大型 UDP 数据包不是问题,尽管 IP 分段会增加数据包丢失和重新排序。