如何计算互联网校验和?

sta*_*orn 18 checksum

关于如何计算互联网校验和,我有一些问题.我从书中找不到任何好的解释,所以我在这里问.我不确定这是否是正确的地方,所以如果我在错误的地方询问,我很抱歉.

如果你看下面的例子.发送以下两条消息:10101001和00111001.校验和以1的补码计算.到目前为止我明白了.但总和如何计算?起初我以为它可能是XOR,但似乎并非如此.

              10101001
              00111001
              --------
   Sum        11100010
   Checksum:  00011101
Run Code Online (Sandbox Code Playgroud)

然后当他们计算出msg是否到达OK时.又一次如何计算总和?

               10101001
               00111001
               00011101
               --------
   Sum         11111111
   Complement  00000000  means that the pattern is O.K.
Run Code Online (Sandbox Code Playgroud)

Woo*_*ble 9

它使用加法,因此命名为"sum".10101001 + 00111001 = 11100010.

例如:

+------------+-----+----+----+----+---+---+---+---+--------+
| 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 |
+------------+-----+----+----+----+---+---+---+---+--------+
Run Code Online (Sandbox Code Playgroud)


Pau*_*bel 8

如果通过因特网校验你的意思是TCP校验和有一个很好的explination 这里,甚至一些代码.

当您计算校验和时,请记住它不仅仅是数据的函数,还包括"伪标头",它将源IP,目标IP,协议和TCP数据包的长度放入要校验和的数据中.这将tcp元数据与IP头中的某些数据联系起来.

TCP/IP Illustrated Vol 1是一个很好的参考,并详细解释.