【发布时间】:2018-07-13 16:31:03
【问题描述】:
User Datagram Protocol 提供了一些错误检测功能。
有人说它有校验和机制。
但是这个协议没有握手过程。
所以这个协议似乎不用担心数据错误。
怎么会有校验和部分?
【问题讨论】:
-
@EJP 我没有看到这是自我回答的地方。
标签: error-handling udp crc
User Datagram Protocol 提供了一些错误检测功能。
有人说它有校验和机制。
但是这个协议没有握手过程。
所以这个协议似乎不用担心数据错误。
怎么会有校验和部分?
【问题讨论】:
标签: error-handling udp crc
校验和与握手无关。它只是验证正在传输的数据包的完整性。如果数据包无效,它将被丢弃。在 TCP 的情况下,接收方(或者更确切地说是下一跳路由器)将通过要求发送方重新发送无效数据包来尝试恢复。但在 UDP 的情况下,它只是在那里结束——数据包被简单地丢弃,仅此而已。请注意,UDP 校验和实际上是可选的。而且我相信甚至可以通过中间跳路由器删除。即使使用它也是一个相当弱的校验和。
一般而言,现代“常识”表示,在现代设备上,数据包在传输过程中很少被损坏。如果你对这个假设没意见,那么我建议简单地假设数据包永远不会损坏,而不管校验和是否在转换中使用。但是,如果您对偶尔的数据损坏不满意,那么您应该将更好的校验和嵌入到您的数据中,例如 CRC 甚至加密哈希。这完全取决于数据完整性对您来说有多重要,以及您愿意为实现它走多远。这实际上适用于 TCP 以及 UDP。
见RFC 和this answer。
【讨论】: