UDP数据可能会损坏吗?我知道它有可能丢失.
UDP数据包使用16位校验和.UDP数据包不是不可能有腐败,但它不太可能.无论如何,它不像TCP那样容易受到腐败的影响.
首先,上面引用的"IP校验和"仅是IP头校验和.它不保护有效载荷.请参阅RFC 791
其次,UDP允许使用NO校验和进行传输,这意味着16位校验和设置为0(即,无).请参阅RFC 768.(全零传输校验和值表示发送器未生成校验和)
第三,正如其他人所提到的,UDP有一个16位的checkSUM,这不是检测多位错误的最佳方法,但也不错.一个未检测到的错误肯定可以潜入,但不太可能.
可能?绝对.未被发现?不太可能,因为UDP采用校验和,需要多位错误才能显示有效.如果检测到错误,系统可能会丢弃数据包 - 这就是使用UDP的风险.
UDP数据包也可以不按顺序传送,因此如果您要在UDP之上设计协议,您也必须考虑到这一点.