UDP数据传输是否会损坏?

时间:2020-03-05 18:48:49  来源:igfitidea点击:

UDP数据可能损坏了吗?我知道它有可能会丢失。

解决方案

回答

可能的?绝对地。未被发现?不太可能,因为UDP使用校验和,这将需要多位错误才能显示为有效。如果检测到错误,则系统可能会丢弃数据包,例如使用UDP的风险。

回答

UDP数据包使用16位校验和。 UDP数据包损坏并非不可能,但可能性很小。在任何情况下,它都不会比TCP更容易受到损坏。

回答

UDP数据包也可以乱序发送,因此,如果要在UDP之上设计协议,则也必须考虑到这一点。

回答

影响毫无戒心的程序员的"腐败"的一种常见形式是数据报截断。有关更多信息,请参见Stevens的" Unix网络编程"(第2版的第539页)。

我们可以检查MSG_TRUNC标志...

回答

首先,上面引用的" IP校验和"只是一个IP头校验和。它不保护有效负载。参见RFC 791

其次,UDP允许不带校验和的传输,这意味着16位校验和设置为0(即无)。请参阅RFC768. (全零传输的校验和值表示发送器未生成校验和)。

第三,就像其他人提到的那样,UDP具有16位的checkSUM,这不是检测多位错误的最佳方法,但也不错。确实有可能发生未检测到的错误,但是可能性很小。