error-handling - UDP协议(protocol)是否有一些错误检测?

标签 error-handling udp crc

U 服务号 电话 图文电话 rotocol 提供了一些错误检测。

有人说它有校验和机制。
但是这个协议(protocol)没有握手过程。
所以这个协议(protocol)似乎并不担心数据错误。
它怎么会有校验和部分?

最佳答案

校验和与握手无关。它只是验证正在传输的数据包的完整性。如果数据包无效,它将被丢弃。在 TCP 的情况下,接收方(或者更确切地说是下一跳路由器)将通过要求发送方重新发送无效数据包来尝试恢复。但是在 UDP 的情况下,它只是在那里结束——数据包被简单地丢弃,仅此而已。请注意,UDP 校验和实际上是可选的。而且我相信甚至可以通过中间跳路由器删除。即使使用它也是一个非常弱的校验和。

一般来说,现代“常识”说,在现代设备上,数据包很少在传输过程中被损坏。如果你对这个假设没意见,那么我建议简单地假设数据包永远不会损坏,而不管校验和是否在转换中使用。但是,如果您对偶尔的数据损坏不满意,那么您应该将更好的校验和嵌入到您的数据中,例如 CRC 甚至加密哈希。这完全取决于数据完整性对您来说有多重要,以及您愿意为实现它走多远。这实际上适用于 TCP 以及 UDP。

RFC还有this answer .

关于error-handling - UDP协议(protocol)是否有一些错误检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51329428/

相关文章:

android - 使用 mupdf 时出现未知错误

c - 如何通过UDP发送结构并在另一端接收?

c - 获取消息目标地址 - 套接字 C

c# - 将 Delphi+Assembler CRC32 实现翻译成 C#

algorithm - 当我们在CRC32中使用CLMUL时,位反射(reflect)常数是如何计算的?

php - 我可以尝试/捕捉警告吗?

actionscript-3 - 我的内存游戏 AS3 出现错误 #2025

java - java中的异常冒泡模式

java - Java 中的非阻塞 UDP I/O 与阻塞 UDP I/O

algorithm - 零填充缓冲区/文件的 CRC32 计算