【问题标题】:Checksum Explanation?校验和解释?
【发布时间】:2011-04-28 09:54:54
【问题描述】:

我目前正在查看校验和,但无法完全理解它们的工作原理。

仅供参考,我一直在研究 UDP 校验和和 Internet 校验和。我了解到发送方的 UDP 执行 1s 补码,但我不清楚 1s 补码是什么。

我有一个粗略的想法,即 1 的补码与“反转”所有 1 和 0 的值有关,因此 1 变为 0,0 变为 1,但我不知道为什么这样做首先。

有人可以提供一些关于校验和的一般信息吗?

谢谢。

【问题讨论】:

  • 这可能是维基百科可以回答的问题,因为它非常笼统:en.wikipedia.org/wiki/Checksum
  • 有很多方法可以计算人们称之为“校验和”的东西 - 不幸的是,您需要为特定的应用程序找到准确的算法。我不会太担心它是如何用文字描述的(这些词通常是含糊的/模棱两可的/令人困惑的),但要寻找一个清晰的分步过程,最重要的是,您可以检查您的实现的示例数据包!

标签: checksum


【解决方案1】:

校验和主要是某个值的散列(一种单向加密函数),以确保数据到达另一端时是一致的。数据发送前取校验和,对方收到数据时,再次取相同值的校验和,与发送方的校验和匹配,如果相同,则数据在状态良好,否则我们就知道有问题了。

相当简单的解释。

【讨论】:

    【解决方案2】:

    校验和只是一个按以下规则计算的整数: 对数据包中的所有内容求和,除了校验和(我称之为总和)。保存在校验和中:-sum。

    当数据包到达时,将数据包中的所有内容相加。如果总和为0,则数据包有效。

    【讨论】:

    • 这不仅仅是一个总和,它实际上是一个哈希
    • 它可能是也可能不是一个和,如果它是一个和,它可能使用也可能不使用普通的 2 的补码算术。 'checksum' 非常通用地用于涵盖各种聚合算法。
    猜你喜欢
    • 2018-02-06
    • 1970-01-01
    • 2014-04-17
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 2017-07-17
    相关资源
    最近更新 更多