代码之家  ›  专栏  ›  技术社区  ›  Manjitha Teshara

udp协议是否有错误检测?

  •  2
  • Manjitha Teshara  · 技术社区  · 6 年前

    这个 U型 SER公司 共济失调 第页 rotocol提供了一些错误检测。

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

    1 回复  |  直到 6 年前
        1
  •  2
  •   Seva    6 年前

    校验和握手无关。它只是验证正在传输的数据包的完整性。如果数据包无效,它将被丢弃。在TCP的情况下,接收者(或者更确切地说是下一跳路由器)将尝试通过请求发送者重新发送无效数据包来恢复。但在udp的情况下,它只是在那里结束-数据包只是被丢弃,就这样。尽管udp校验和实际上是可选的,但要小心。我相信甚至可以通过中间跳路由器移除。它也是一个非常弱的校验和,即使使用。

    一般来说,现代的“常识”说,在现代设备上,数据包很少在传输过程中损坏。如果您同意这个假设,那么我建议您简单地假设包永远不会损坏,而忽略是否在转换中使用了校验和。但是,如果您对偶尔出现的数据损坏不满意,那么您应该在数据中嵌入一个更好的校验和,例如crc,甚至是加密散列。这完全取决于数据完整性对您有多重要,以及您愿意在多大程度上实现它。这实际上适用于tcp和udp。

    RFC 还有 this answer 是的。