计算机网络中CRC是什么,CRC(程序设计术语)_百度百科

CRC(Cyclic Redundancy Check),即循环冗余校核,是一种根据网络数据包或电脑文件等数据产生简短固定位数校核码的快速算法,主要用来检测或校核数据传输或者保存后可能出现的错误。CRC利用除法及余数的原理,实现错误侦测的功能,具有原理清晰、实现简单等优点。

中文名

循环冗余校核

外文名

Cyclic Redundancy Check

别    称

循环冗余校验本    质

校验算法

用    途

校验信息传输中的错误

所属范围

信息科学

CRC介绍

编辑

语音

CRC概述

CRC也就是循环冗余校验码,是计算机网络通信领域常用的校验码。循环冗余校验码包括一系列移位、相除等数据编码规则,其算法原理、算法程序的设计与分析,都可以通过相应的软件编码进行解决。循环冗余校验码是利用软件进行校验的算法,因此其检验速度很快,校验的误码率也较低,整个计算机网络通信的信息传输速度很高。CRC差错纠正控制法能够有效减少通信线路的误码率,得到的通信数据传输信息更准确。

在数据的传输过程中由于空间电磁环境复杂等原因,可能会产生误码,即某几位数据0变为1,或1变为0,导致接收端得到错误的数据。为了降低误码率,通常对数据进行特定编码,在收发端进行额外的验证,使接收端能发现某些错误,进而实现纠错功能,常用的编码方法有CRC-32校验码、CRC-16校验码、汉明码、奇偶校验法等。其中32位循环冗余校验简称CRC-32校验在性能和资源消耗两方面都有较大的优势,因而,在无线电通信、SATA硬盘数据传输等系统中,CRC-32校验是最常用的检错手段之一。

CRCCRC的原理

CRC属于差错纠正控制法的一种,循环冗余校验算法存在较低的漏检比率和漏检概率。循环冗余校验算法中的二元码,是通信中常用的通信编码。但在通信过程中,时长会发生码元由0变为1、或者由1变为0的现象。循环冗余校验算法中最重要的组成部分为参数表,参数表包含已定义的数据类型和一个变量标识符,其总共有512个字节。在循环冗余校验算法施行之前,应该对储存位置的存储字节数进行测算,以确保能够容纳庞大的参数表数据。

计算机网络通信中的算法实现,包括硬件、软件实现两部分内容,其中软件为互联网通信网络技术,其数据信息传输的速度更快,实现的效果也更好。循环冗余校验算法以发送相应的数据包,来控制通信数据的功能性传输。循环冗余校验算法的数据包包括:段开销、数据序号、序列的校验码等多方面内容。其中段开销为同步数字体系的下属结构,段开销又包含再生段开销(RSOH)、复用段开销(MSOH)两部分内容,共同构成了数据传输的初始数据。段开销将数据从起始地传输至目的地,并且有着极高的数据传输安全性,传输的误码率则较低。

数据序号主要承担编组数据的任务,例如:将10个数据编为一组,则50个数据应该有三组,数据序号显示为50。在计算机网络通信数据传输过程中,每个数据包都有着不同的字节长度,因此会有专业的长度测算仪器对其进行计算。数据与序列校验码排在数据包字节的末尾,主要承担数据编码差错纠正的任务。数据传输过程中,出现差错在所难免,如何降低差错出现的几率,是有关人员研究的重点。通信模块会不定时的发送数据包校验码,来检查数据传输中中的编码或信息差错,最大限度控制误码率的发生。其中计算机网络通信的误码率,可以用PC来表示,表达形式如下:PC=接收到的错误码数/接收的总码数。

CRCCRC算法校验规则

循环冗余校验算法将是否除尽,作为数据信息的校验规则。对于能被多项式除尽的数据而言,其数据代码的误码率就较低;对于那些不能被多项式除尽的数据,需要对数据出错的地方进行分析,并将产生的余数进行减去。,如果让被校验数据减去余数,势必能为生成多项式所除尽,但网络通信中减法操作存在复杂的数学计算,无法使用拼装的方式进行数据编码。基于此种情况,网络通信中引入模2运算的计算方式,模2运算包括:模2加、模2减、模2乘、模2除等四种二进制运算。模2运算不考虑进位和借位,即模2加法是不带进位的二进制加法运算,模2减法是不带借位的二进制减法运算。两个序列模二相加,即两个序列中对应位,相加不进位,相同为0不同为1。在两个二进制位相运算时,这两个位的值能确定最终的运算结果,而不受前一次运算的影响,因此模2运算的加减乘除属于异或运算。

通信网络中的校验数据常常以代码的形式出现,常见的代码形式有字符编码、数字代码等。校验数据传输的内容大多为二进制(0,1)代码,模2运算中的代码形式为数字代码,通常以多项式进行数据信息的表述。多项式数字代码为循环冗余校验的除数,而校验数据为循环冗余校验的被除数。其中循环冗余校验的多项式,在发声误码率等错误时,其余数应该不为0。而在循环冗余校验的多项式中的余数,应该呈现规律性的循环特征,也就是余数为循环小数。由于位数不同的数据,所产生的余数误码率也不同,所以对于双字节16位循环冗余校验代码而言,其多项式的表达方式为:G(x)=X16+X12+X5+1(X=20)。

奇偶校验是循环冗余校验的错误检测机制,能够根据所用奇校验与偶校验的不同,检查奇数或者偶数的错误。其最大能检测所有低于16位的校验错误,且突发性错误检测的精度高。信息通讯的接收端在收到循环校验码之后,将会使用多项式数字代码除以校验数据,若得出的余数为0,则数据传输的误码率也为0,否则存在误码的现象。位数不同的数据,所产生的余数代码、出错位序列也不同,其存在一一对应的关系。

CRCCRC算法校验步骤

CRC校验算法即循环冗余校验算法,是由线性分组码的分支而来。首先它根据模2除法的原理计算出校验码,再把得到的校验码附在要发送的数据后面组成一帧新的数据,发送给接收端后,接收端根据生成的校验码的规则重新计算校验码,若相同则说明正确的数据被接收,若不同则说明接收到的数据有错误。

48569fea0f68ce5e2881790d6f93ded3.png

CRC算法流程

其步骤如下:

步骤一:CRC校验采用多项式的编码方法,设要发送的数据码有k位,则该数据码对应的多项式F(x)有k项,k的取值只能为0或1;

步骤二:G(x)为发送端和接收端预先约好的生成多项式。G(x)的选取对校验效果起着关键的作用,使用较多的生成多项式G(x)有CRC-16、CRC-CCITT、CRC-32等;

步骤三:R(x)为生成的r阶冗余码多项式,R(x)的项数比G(x)要少一项。R(x)的计算方法为:以F(x)作为被除数,先将F(x)乘x′即左移r位,再以G(x)作为除数作模2运算。

步骤四:CRC校验算法中,一帧数据有n=k+r位,前k位为数据码,后r位为冗余码。由步骤三计算出R(x)后,把R(x)附在F(x)后面形成要传送的CRC数据,其格式为[F(x),R(x)]。

步骤五:接收端接收到的数据F′(x)根据模2除法对G(x)进行检验。

步骤六:若F′(x)modG(x)结果为0,表明数据在传送过程中无差错,接收端就接收该数据;若F′(x)modG(x)结果不为0,则表明数据传送有错误,接收端丢弃该数据。

注意,CRC校验只能对数据进行检错,而不能对其纠错。因此,在CAN总线上的每个节点一旦发现数据有错,CAN控制器会根据总线仲裁原则和受损报文优先发送原则对已损坏的报文进行自动重传。

CRCCRC与网络通信

编辑

语音

CRC数据传输与校验

循环冗余校验算法通过相应的数据传输渠道,实现通信网络中计算机设备间的信息沟通。其中校验算法的校验码,通常被安排在数据包字节的末尾,来完成数据的差错检测工作。循环冗余校验算法、传输数据在计算机设备中的传输过程,是将数据从起始位置传送到目的位置的过程。通信网络目的位置再接收到传输的数据代码后,会将文字译成一组组数码,或者将一系列信号译成文字。这种“译码”是编码的逆过程,是对校验数据的解码过程。

若解码的结果等同于起始位置传送结果,则表明数据传输的误码率为0,数据传输的过程中没有出现差错。若解码的结果与起始位置传送结果不同,则说明数据传输存在差错。在数据传输出现差错的情况下,目的位置会对变异的数据进行反复解码,直到得到结果与起始位置的传送结果相同为止。计算机网络通信中循环冗余算法的应用,其中段开销数据包括多个数据编码组,并以二进制字符作为主要的传输模式。

对于计算机网络通信校验码检验环节,则仍旧以二进制字符数据包作为主要的数据形式。校验数据与多项式相除后,若结果不含余数或者余数为0,则可得出计算机网络通信的误码率为0,反之则要检验传输过程中的错误原因。而模2运算法在校验码检验中的精确度高,能够较为真实反映计算机网络的通信状况。

CRC校验码的生成

计算机网络通信中循环冗余算法的主要流程之一,为数据校验码的生成过程。校验码的生成过程包括以下几个步骤:首先要对所有的编码数据进行初始化,并对循环体内与循环次数同步变化的变量进行设置;然后将数据信息传送到存在余数的数据空间内,而原有的余数单元则要发生相应移动。之后将余数单元的最高位数据与1进行对比,只存在0或1两种数据形式。若余数单元的最高位数据为1,则需验证多项式数字代码、校验数据相处的结果是否为0,同时还需查看校验码的数据是否循环8次,最后在进行256次反复的编码校验后,将得出的余数存储在计算机中。若校验码的数据并没有循环8次,则需要重新搜集数据信息,并再次将其传送到存在余数的数据空间内,这样反复的进行运算,直到完成最终的数据纠正任务。校验码生成法能够有效纠正网络通信中的错误信息,最大程度提升网络通信质量,降低通信误码率。

CRCCRC算法分析

循环冗余算法的数据参数表中,包含已定义的数据类型和一个变量标识符,任何字节的参数值都可以从512个字节中查到。在计算机网络通信循环冗余算法的设计过程中,要将512个字节变量分别存放循环冗余算法校验码,以及循环冗余算法的中间结果。然后将数据包中数据字节,以0或1的参数值进行数据分类。

若本字节、上一字节的异或数值不相同,则异或结果为1,反之则为0。按照这一规律对所有的字节进行分析,将异或结果为0的校验码低8位,将异或结果为1的校验码高8位。将校验过的本字节数据,再于下一字节进行异或,得出的高8位值为结果2,再将结果为2的校验码低8位。再将上一字节校验过的低八位数据,与参数表中的参数值进行对应。最后将结果1、结果2、对应过的参数值再进行异或,将最后的结果作为这一数据组的校验码。按照这样的方式继续校验下一组数据,直到所有的数据都被校验完毕,最终得到所有数据的循环冗余校验码。

循环冗余算法以for循环作为编程的循环语句,只从所有数据包中抽取具有代表的单一字节,并对其进行数据分析计算,这大大节约了计算时间,提升校验速度。虽然循环冗余算法的空间占用较大,但大内存能够存贮更多的字节,产生的效率也较高。

CRCCRC的纠错条件

编辑

语音

计算机网络通信中的循环冗余校验,可通过以下几点判定其通信的安全性:奇数错误纠正、偶数错误纠正、单个错误纠正。三种错误都按照循环冗余校验算法进行纠错,纠错的结果能够较为准确的显示通信的安全性与快速性。循环冗余校验算法引入计算机网络通信纠错,能够有效减少误码率的产生,提高计算机网络通信的准确度。

CRCCRC的注意事项

编辑

语音

循环冗余校验算法中最重要的部分为多项式选择,文字、数字等其它对象的编码。在文字、数字等其它对象编码的过程中,数据包传送主要为二进制的表现形式,运用多项式数字代码除以校验数据。若两者的结果余数为0,则计算机网络通信的误码率为0,否则要对传输过程中的错误进行检验,这是计算机网络通信错误判断的常用方式。在通信纠错的处理过程中,多项式数字代码的选择影响着计算结果,也会对网络通信错误的纠错造成影响。由于循环冗余校验算法中的多项式数字代码可以自动生成,而且生成多样式存在一定的规律特征,因此要慎重处理多项式的选择问题。在计算机网络通信的误码率检测以及纠错的过程中,能够对多项式数字代码最终结果造成一定影响,主要会对多项式的安全性产生影响。因此在误码率检测过程中,应保证数字代码中各个位数的错误较小,且错误的余数不为0。除此以外,对于处于不同位置的错误,应该根据所有的错误位置,对其余数进行一一确定与对应,且错误的位置要与余数循环的规律相符合。只有符合上述多个条件的基本要求,才能使计算机网络通信多项式的准确率更高。

CRCCRC的实际应用

编辑

语音

CRC智能变电站

智能变电站配置文件在存储和数据传输过程中,由于各类噪声影响,容易出现配置文件的比特差错问题。为了保障配置文件数据的正确率,配置文件对数据进行差错检测,当且仅当检测的结果为正确时,说明该智能变电站配置文件没有数据差错的问题,配置文件才可以做进一步的应用。信息领域中差错检测的方式有多种,而CRC是应用最广泛的一种差错检测方法。

CRC校核同其他差错检测方式一样,需要完成形成校核位和检验校核位的过程。首先将待检验的数据采用CRC算法,生成比特冗余位(又称帧检验序列,Frame CheckS equence,FCS),并将FCS添加到原数据后面,实现校核码的生成过程。校核是采用相同的CRC算法,计算原数据的FCS,并与附加在原数据后面的FCS作一致性比较。两者完全相同时,可以确认原数据的完好性。

CRC辅助译码

在中短码长下,不带循环冗余校验(CRC)辅助的极化码已经不具有竞争力,为了增强极化码译码性能,一般采用CRC辅助译码。针对传统的集中式CRC辅助方案只能在译码结束后选择路径而无法在译码中做剪枝操作,一种通过交织器在极化码信息比特间离散分配CRC比特的辅助译码方案,此方案允许CRC比特能够辅助串行抵消列表(SCL)译码期间幸存路径的选择以改善差错性能。仿真结果表明,与集中式CRC辅助译码方案相比,该算法在码率为0.125、误块率在以10-1下、CRC长度为8时提供0.5dB增益;CRC长度为16时提供1.3dB增益。

CRCFPGA

在数字通信中,往往会因噪声或者瞬时终端干扰,使接收的信息出现概率性的错码。为了减少通信信道的传输错误和提高信息传输的质量,人们在设计差错控制时提出了两种策略:一种是让传输的报文分组带上足够的冗余信息,以便在接收端能够发现并且自动纠正传输错误,这种方案叫做纠错码方案;另一种是让报文分组仅带上足以使接收端发现差错的冗余信息,这种方案叫做检错码方案。纠错码方法虽有优越之处,但是由于实现比较复杂,成本较高,实现周期长,一般的通信场合很少采用,而检错码方案因为原理简单,实现容易,并且编码与解码速度快,在实际通信中广泛应用。常用的检错码分为两类:奇偶校验码和循环冗余编码(CRC)。由于循环冗余编码检错能力强,抗干扰性能优越,且信息字段和校验字段可以任意选定,所以在数据通信领域中比较常用。在信息传输中,CRC校验大部分使用软件实现,而在一些场合需要使用硬件实现。经典的硬件实现采用线性反馈移位寄存器来设计。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值