UDP校验和算法的可靠性如何?

时间:2011-12-01 23:00:28

标签: udp checksum

似乎UDP使用了一种相当简单的校验和算法,而且大多数情况下会产生所需的结果并检测错误。

但是,据我所知,使用Jumbo帧时UDP的标题是相同的,并且校验和是相同的。它只有16位。

这是否会增加错误发生的可能性以及使用UDP的协议(特别是那些使用大数据包的协议)根本不应该依赖UDP校验和?

2 个答案:

答案 0 :(得分:3)

正如您所指出的,无论数据包有多大,UDP都使用16位校验和。如果更改未改变所有16位字的总和,则UDP校验和无法检测到错误。随着数据包大小的增加,这种情况更有可能发生。

但是,UDP通常运行在以太网之上,以太网提供32位CRC,这比UDP校验和更强大。因此,大多数人依靠以太帧来保证数据的完整性。

大型UDP数据包将被分段为多个IP数据包,每个数据包都在自己的以太网数据包中,并带有32位CRC。因此,从数据完整性的角度来看,发送大型UDP数据包并不是一个问题,尽管IP碎片会增加数据包丢失和重新排序。

答案 1 :(得分:0)

需要对大帧进行分段,每个片段都有一个与之关联的校验和。您是正确的,标头的大小不会改变,但发送的数据包数量将发生变化,从而增加了发送的校验和位数。我希望这会有所帮助。