首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算互联网校验和?

如何计算互联网校验和?
EN

Stack Overflow用户
提问于 2010-10-21 20:48:10
回答 4查看 99.5K关注 0票数 19

我有一个关于如何计算互联网校验和的问题。我在书中找不到任何好的解释,所以我在这里问。

看一下下面的例子。

将发送以下两条消息: 10101001和00111001。校验和是用1的补码计算的。到目前为止,我明白了。但是总和是如何计算的呢?一开始我以为可能是XOR,但事实似乎并非如此。

代码语言:javascript
复制
              10101001
              00111001
              --------
   Sum        11100010
   Checksum:  00011101

然后当他们计算消息是否正常到达时。再说一次,总和是如何计算的?

代码语言:javascript
复制
               10101001
               00111001
               00011101
               --------
   Sum         11111111
   Complement  00000000  means that the pattern is O.K.
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-10-21 20:57:49

它使用加法,因此得名"sum“。10101001 + 00111001 = 11100010。

例如:

代码语言:javascript
复制
+------------+-----+----+----+----+---+---+---+---+--------+
| bin value  | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | result |
+------------+-----+----+----+----+---+---+---+---+--------+
| value 1    |   1 |  0 |  1 |  0 | 1 | 0 | 0 | 1 |    169 |
| value 2    |   0 |  0 |  1 |  1 | 1 | 0 | 0 | 1 |     57 |
| sum/result |   1 |  1 |  1 |  0 | 0 | 0 | 1 | 0 |    226 |
+------------+-----+----+----+----+---+---+---+---+--------+
票数 12
EN

Stack Overflow用户

发布于 2010-10-21 21:16:57

如果你所说的互联网校验和指的是TCP校验和,那么有一个很好的解释here,甚至还有一些code

当您计算校验和时,请记住,它不仅是数据的函数,也是“伪头”的函数,“伪头”将源IP、目标IP、协议和TCP数据包的长度放入要进行校验和的数据中。这将TCP元数据绑定到IP报头中的某些数据。

对于这一点,TCP/IP Illustrated Vol 1是一个很好的参考资料,并详细解释了所有这些内容。

票数 8
EN

Stack Overflow用户

发布于 2014-03-12 23:28:19

互联网校验和的计算使用补码算法。考虑正被校验和的数据是一个8位整数序列。首先,你需要使用1补码算法将它们相加,然后取结果的1补码。

注意:当将数加1补码运算时,需要将MSB的进位添加到结果中。例如,考虑3(0011)和5(0101)的相加。

3'->1100 5‘->10100 0110进位为1,因此我们有0111(1的补码表示为-8)。

校验和是在上一步中获得的结果的1的补码。因此,我们有1000个。如果不存在进位,我们只需补充在求和阶段获得的结果。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3987603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档