数据校检

Posted wx62c62b36cedf9

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据校检相关的知识,希望对你有一定的参考价值。


数据校验的基本原理

<1> 数据校验的必要性

  • 受元器件的质量、电路故障或噪音干扰等因素的影响,数据在被处理、传输、存储的过程中可能出现错误
  • 若能设计硬件层面的错误检测机制,可以减少基于软件检错的代价(系统观)

<2> 校验的基本原理

  • 增加冗余码(校验位)
  • 有效信息(k位) 校验信息(r位)

<3> 码距的概念

  • 同一编码中,任意两个合法编码之间不同二进制位数的最小值
  • 0011 与 0001 的码距为1,一位错误时无法识别
  • 0000、0011、0101、0110、1001、1010、1100、1111等编码码距为2。 任何一位发生变化,如0000变成1000就从有效编码变成了无效编码,容易检测到这种错误
  • 校验码中增加冗余项的目的就是为了增大码距

<4> 码距与检错或纠错能力的关系

数据校检_奇偶校验

  • 码距数据校检_奇偶校验_02
  • 码距数据校检_奇偶校验_02
  • 码距数据校检_奇偶校验_02e+t+1 : 可纠正t个错误,同时检测e个错误(e数据校检_奇偶校验_02

<5> 选择码距要考虑的因素

  • 码距越大,抗干扰能力越强,纠错能力越强,数据冗余越大,编码效率低,编码电路也相对负复杂
  • 选择码距必须考虑信息发生差错的概率和系统能容许的最小差错率

奇偶校验

  • 增加冗余码(检验位)
  • 有效信息(k位) 校验信息(r=1位)
  • 编码
  • 根据有效信息计算校验信息位,使校验码(数据+1位校验信息)中1的个数满足奇/偶检验的要求
  • 0001 -> 00011 (偶校验) P1 = D1数据校检_海明校验_06D2数据校检_海明校验_06D3数据校检_海明校验_06D4数据校检_海明校验_06D5数据校检_海明校验_06D6数据校检_海明校验_06D数据校检_海明校验_06Dn
  • 0001 -> 00010 (奇校验) P2 =数据校检_CRC校验_13
  • 特点
  • 编码与检错简单
  • 编码效率高
  • 不能检测偶数位错误,无错结论不可靠,是一种错误检测码
  • 不能定位错误,因此不具备纠错能力
  • 奇偶校验的码距
  • 码距为 2
  • 改进的奇/偶校验
  • 双向奇偶校验
  • 可纠正1位错误
  • 数据校检_海明校验_14

  • 可检测出某行/列上的奇数位
  • 数据校检_CRC校验_15

  • 可检测出一部分偶数位错误
  • 数据校检_奇偶校验_16

  • 不能检测出错码分布在矩形4个顶点上的错误
  • 数据校检_数据校验详解_17

  • 方块校验
  • 垂直水平校验
  • 奇/偶校验应用
  • 应用场景
  • 内存条
  • 工程上的应用
  • 路由器配置
  • 一般在同步传输中常用奇校验
  • 异步传输中常采用偶校验

CRC校验及其实现

  • 原理
  • 增加冗余码
    有效信息(k位)检验信息(r位)
    N = k + r <= 2r- 1
  • 生成多项式G(x)
    收发双方约定的一个(r + 1)位二进制数,发送方利用G(X)对信息多项式做模2除运算,生成校验码。接收方利用G(X)对收到的编码多项式做模2除运算检测差错及错误定位
  • G(x)应满足的条件
  • 最高位和最低位必须为1
  • 当被传送信息(CRC码)任何一位发生错误时,被生成多项式做除后应该使余数不为0
  • 不同位发生错误时,模2除运算后余数不同
  • 对不为0余数继续进行模2除运算应使余数循环
  • 常见生成多项式G(x)

数据校检_数据校验_18

  • 模2除运算
  • 模2运算规则
  • 加/减运算(异或运算,加不进位,减不借位)
  • 0±0=0,0±1=1,1±0=1,1±1=0
  • 模2除法
  • 按模2减,求部分余数,不借位
  • 上商原则
  • 部分余数首位为1时,商为1,减除数
  • 部分余数首位为0时,商为0,减0
  • 当部分余数的位数小于除数的位数时,该余数即为最后余数
  • CRC编码方法
  • 根据待校验信息的长度k,按照 k+r ≤ 2r-1 确定校验位r的位数
    如对4位信息 1100 进行CRC编码,根据 4+r ≤ 2r-1
    得 rmin= 3
  • 根据r 和生成多项式的选择原则,选择位数为r +1的生成多项式G(X)= 1011
  • 进行下列变化
    有效信息(k位) 检验信息(r位)
    1100 000
    即:将待校验的二进制信息Q(X)逻辑左移 r 位,得到Q(X)’
  • 对Q(X)’按模2运算法则除G(x),求CRC编码中的r位校验信息
  • 用得到的余数替换Q(X)’的最后r位即可得到对应的CRC编码
    1100 010
  • CRC的检错与纠错
  • 接收方利用G(X)对收到的编码多项式做模2除运算

关于循环冗余码问题

CRC32的计算方法

关于提交表单前的数字以及邮箱校检

协议分析:IP校检和算法

SQL Server ->> 校检函数CHECKSUMCHECKSUM_AGGBINARY_CHECKSUM和HASHBYTES

计算机网络-数据链路层差错控制(检错编码纠错编码)