• CRC校验


    1 CRC校验的目的

    在信息的传输过程中,有时会发生误码。

    例如,传送1001,接收到1000,这就产生了误码,但接收方并不知道产生了误码。

    而当发送方与接收方使用同一标准的CRC校验,就能够判断在信息传输的过程中是否发生了误码。

    2 CRC基础知识

    2.1 除数与被除数

    除号前面的数为被除数;

    除号后面的数为除数。

    10 ÷ 2 = 5            10为被除数;2为除数。

    2 ÷ 10 = 0.2         2为被除数;10为除数。

    2.2 除与除以

    10 ÷ 2 = 5            10除以2

    2 ÷ 10 = 0.2         10除2

    2.3 异或

    异或主要用于二进制计算,相同为0,相异为1。

    0异或0 -> 0

    0异或1 -> 1

    1异或0 -> 1

    1异或1 -> 0

    3 CRC校验的三要素

    3.1 要传输的数据

    例如要传输的数据为:10101101(二进制)

    3.2 多项式

    各种标准下的多项式如下图所示。

    根据多项式可以得到除数,除数为完整多项式的系数,如下列出了两个例子:

    多项式 完整多项式 除数
    X^4 + X +1 1*X^4 + 0*X^3 + 0*X^2 + 1*X + 1*X^0 10011
    X^5 + X^3 + 1 1*X^5 + 0*X^4 + 1*X^3 + 0*X^2 + 0*X^1 + 1*X^0 101001

    3.3 校验和

    根据要传输的数据和除数,可以得到校验和。

    首先要在传输数据后补N个0(N = 多项式最高次次数);

    最后除数的位数 = N,除数位数小于N,要在前面补0。

    例1:

    传输的数据:10101101(二进制)

    除数:10011

    校验和的计算如下图所示:

     

    例2:

    传输的数据:11010010(二进制)

    除数:10011

    校验和的计算如下图所示

    接收方对接收数据使用相同CRC多项式进行异或运算,若余数为0,则表明传输没有出现错误。

    如下图所示,传输的数据为11010010,CRC校验和为1010,除数为10011,最终余数为0,表明传输正确。

     

    4 在线CRC计算器要注意的一些问题

    要注意的问题有如下三点:

     5 参考

    CRC(循环冗余校验)在线计算

    http://www.ip33.com/crc.html

    [CRC校验]手算与直观演示

    https://www.bilibili.com/video/BV1V4411Z7VA?from=search&seid=6029216890881933361

    【计算机网络期末复习】5分钟左右让你明白CRC循环冗余校验

    https://www.bilibili.com/video/BV1rJ411V7L5?from=search&seid=6029216890881933361

    循环冗余校验(CRC)算法入门

    https://blog.nanpuyue.com/2019/050.html

  • 相关阅读:
    这4点微不足道的改变,正在带我起飞
    “挑三拣四”地学一学Java I/O
    做到这3点,你也能成为一个高情商的人
    深入浅出一下Java的HashMap
    前端学习 -- Css -- 有序列表和无序列表
    Python 文件I/O
    python 模块
    python 函数
    Python 日期和时间
    python 字典
  • 原文地址:https://www.cnblogs.com/QQ2962269558/p/12868209.html
Copyright © 2020-2023  润新知