zoukankan      html  css  js  c++  java
  • 网际校验和算法(Internet CheckSum)

    网际校验和算法

                                              佟强  2008.10.20

    反码算数运算:两个数进行二进制反码求和的运算很简单。它的规则是从低位到高位逐列进行计算。0和0相加是0,0和1相加是1,1和1相加是0但要产生一个进位1,加到下一列。如果最高位相加后产生进位,则最后得到的结果要加1

    网际校验和算法

    在发送方,先把被校验的数据划分为许多16位字的序列。如果数据的字节长度为奇数,则在数据尾部补一个字节的0以凑成偶数。用反码算数运算把所有16位字相加后,然后再对和取反码,便得到校验和。

    在接收方,将收到的数据报(包括校验和字段),将所有16位字再使用反码算数运算相加一次,将得到的和取反,即得出校验和的计算结果。如果数据报在传输过程中没有任何变化,则此结果必为0,于是就保留这个数据报。否则即认为出差错,并将此数据报丢弃。

    “A,B,C,...,Y,Z”分别表示一系列8位组,用[A,B]这样形式的字节组来表示A*256+B的整数,那么该字节序列的反码和就可以通过以下两种表达式之一给出:

    [A,B] +' [C,D] +' ... +' [Y,Z]

    [A,B] +' [C,D] +' ... +' [Z,0]

    其中,+' 表示反码算数运算相加,第一个公式适用于偶数个字节的校验和,第二个公式适用于计算奇数个字节的校验和。

  • 相关阅读:
    前端事件系统(四)
    前端事件系统(三)
    前端事件系统(二)
    前端事件系统(一)
    前端图片选择问题
    浅谈前端移动端页面开发(布局篇)
    诙谐论设计模式(一)——创建型设计模式
    总结三年未满的工作经历,写下自己对技术的坚持
    java内存优化牛刀小试
    将上下文融入知识图谱以进行常识推理
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6168136.html
Copyright © 2011-2022 走看看