2011-12-01 24 views
2

看来UDP使用相当简单的校验和算法,并且大多数情况下它会产生所需的结果并检测错误。UDP校验和算法的可靠性如何?

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

这会增加错误发生的可能性,并且使用UDP的协议(特别是使用大数据包的协议)不应该依赖UDP校验和?

回答

3

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

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

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

0

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

+1

两点。巨型帧!=大型分段帧,并且如果UDP有效负载被分段,则只有一个UDP校验和。尽管每个片段都有一个IP校验和。 – jman

+0

@skjaidev谢谢你指出jumbo!=大。我没有意识到巨无霸是一个技术术语。我很高兴我学到了一些东西。我对这个不好的答案表示歉意。 – Boundless