您好, 访客   登录/注册

计算机循环冗余校验算法分析

来源:用户上传      作者:

  摘 要 在计算机网络通信中,为了将数据信息正确而迅速地在发送端及接收端间进行有效传输,必须采用差错控制技术来保障数据传输的正确性与可靠性。循环冗余校验码(Cyclic redundancy check:CRC)因其检验速度快、检错率高且成本较低被广泛应用于计算机网络通信领域,提升了计算机信息传输的质量。文章对CRC的概念及工作原理进行了简要分析,并结合CRC-8进行了算法设计与总结分析,并指出了CRC的优势所在。
  关键词 计算机网络通信;循环冗余校验码(CRC);算法;分析
  中图分类号 TP3 文献标识码 A 文章编号 1674-6708(2019)229-0131-02
  计算机网络通信是在公共的通信协议基础之上实现数据的发送与接受,而计算机是利用数据链路将应用程序、数据传输包等资源进行系统连接,从而在不同系统内进行信息的流通与共享。计算机网络通信数据信息在传输时并不一定不出出现错误代码,其传输的正确率往往受到外界条件的干扰,导致错误代码的产生[ 1 ],而数据通信系统传输的正确率与传输速度也存在一定的内在?关系。
  随着网络通信数据传输速度的提升,传输过程中错误码的比例也随之提高。因此,?通过合理的方法解决数据传输正确率与传输速度的矛盾关系是检验一个计算机通信系统是否有效的?关键。
  CRC算法就是对传输数据进行高效校验且误判率很低的控制方法。本文针对当前网络数据在传输过程中的一些校验算法,结合对计算机数据传输的理解,分析了循环冗余校验算法,为进一步深入学习计算机相关专业奠定基础。
  1 循环冗余校验算法原理
  1.1 CRC算法介绍
  CRC在计算機通信过程中能够完成对信息字段的随意选择,并能完成对选择信息字段的校验,校验后的信息字段通过多项式计算得到新的结果,将结果附在帧后,并在接受设备中进行同样的信息字段选择、校验与计算的过程,从而在一定程度上保证了数据由发送端至接收端传输过程的正确性与完整性[2]。因此,在数据通信领域,CRC成为了较为常用的查错校验?方法。
  CRC是在通信过程中常用的二元码,而二元码在信息传递过程中往往会发生0到1或从1到0的突变现象。在对CRC进行操作之前,应当测试位于存储位置的存储字节数,以保证存储位置能够具备存储庞大参数表数据的空间。计算机网络通信通过硬软件两部分实现算法,实现效果与数据传输的速度成正比,CRC通过发送相应数据包的方式来使得通信数据传输的功能得到?控制。
  由于不同的数据包具有不同的字节长度,因此在数据传输过程中需要使用专门用于测量字节长度的工具来对不同的数据包的字节长度进行测量,以保证在信息传递过程中的正确性[3]。数据包字节的尾部包含了数据与序列校验码等信息,在数据传输过程中发挥着纠正错误数据编码的?作用。
  虽然在数据传输过程中不可避免的出现差错,但通过CRC可以在一定程度上降低差错发生的概率。在实际应用的过程CRC值通常在发射端计算并发送,接收端会接收到涵盖CRC值信息包。接收端将接收到的信息包进行解码并计算出CRC值后与收到的CRC值进行比较以判断接受的信息是否正确?无误。
  1.2 CRC算法步骤
  循环冗余校验算法的实现需要按照特定的步骤进行,其中有两个步骤是关键。
  一是预先随机选择确定一个最高位和最低位为1,且符合国际标准的二进制多项式(如X3+X2+1,可以表示为1101),该多项式在发送端和接收端都作为除数使用;二是通过模2除法运算的方式将原始帧与随机选择并计算出来的二进制多项式数值相除,计算出CRC。具体步骤可以如下?描述。
  首先,选择一个合适的数作为除数。
  接着,通过计算的方式计算出这个合适除数的二进制位数,并以模2除法的方式将生成的数据帧除以选定的除数,CRC即为以该种方式相除得到的余数,CRC的位数因余数的位数比除数位数少一位,得到数值首位数字0需要保留在CRC中,不能?忽略。
  最后,在原数据帧后加上计算出的首位为0的CRC,形成新的数据帧并发送至接收端,接收端获取数据帧后以模2的方式除以的比除数位数少一位的余数,如果计算结果可以整除,则说明接收端接收到的数据帧没有错误,即在传输过程中没有出现差错[4]。若计算的有误,则需要重新检验,并通知重新发送数据帧。
  2 循环冗余校验算法设计
  2.1 校验算法设计背景
  在通过计算机实现网络实体通信时,首先要将要交换的信息分割成众多的数据段,并分别在每个数据前后加入首部和校验码后形成完整的数据包。因为各个数据包中包含了各类有用的信息,且可在数据传输过程中进行人为控制,因此通过CRC校验的方法提升数据通信过程中的准确率。
  当将数据包末端加上CRC并经计算机发送端发送时,计算机发送的数据就与CRC发生了联系,并建立了编码关系。随后计算机接收端接收到来自发送端的数据包并进行译码获得信息,再与经发送端发送的信息进行比较分析,若两种数据一致则说明数据包在传输过程中未受到其他干扰因素的影响,得到了正确的编码信息[5]。
  如果运算后得到的数据与发送端发送的数据不一致,则说明数据包在发送过程中出现了偏差,则需要以自动重发的方式将数据包重新发送,在通过同样的过程将数据包进行译码再进行比对,直到接收端译码得到的数据与发送端传输的数据一致,通过此种方法确保计算机信息传输过程中信息的准确无误,为计算机信息传输安全提供有力?保障。
  2.2 基于CRC-8的算法设计
  首先按照要求选择特定的二进制除数,如有:x8+x5+x4+1-0x31(0x131);x8+x2+x1+1-?0x07(0x107);? x8+x6+x4+x3+x2+x1-0x5E(0x15E)。在通过循环冗余校验码(CRC)-8校验算法把校验的数据通过循环异或与多项式比对时,由于通过循环异或的方式在实际中传输数据时,往往存在高位先传和低位先传两种不同的方式。   通常数据从高位先传的方式即循环异或从数据的高位开始称为顺序异或,对于数据从低位先传的方式即循环异或从数据的低位开始,成为反序异或。两种不同的异或方式,即使对应相同的多项式,计算出来的结果也是不一样的,因此设计时要首先确定好实际异或顺序。
  在实际通信过程中,往往使用按字节查表的方式来获得CRC-8。这种算法以计算本字节之后的CRC为基础,把与跟上一字节的校验码相减差8位的位置处的数值向左移动8位得到数字,再加上上一字节校验码向右移8位后得到的数字,新的校验码即为这两个数字之和的组成。将256个8位二进制序列数的CRC全部以表格的形式进行数据统计,编码时对应表格中相应的数值查阅即可,进而提高了工作效率[6]。
  2.3 CRC算法校验的优势分析
  在计算机网络通信中运用CRC校验时相对于其他校验方法就有一定的优势。CRC可以高比例的纠正信息传输过程中的错误,可以在极短的时间内完成数据校验码的计算,并迅速完成纠错过程,通过数据包自动重发的方式使得计算机的通信速度大幅提高,对通信效率和安全提供了?保障[7]。
  另外,由于CRC算法检验的检错能力极强,且检测成本较低,因此在对于编码器和电路的检测中使用较为广泛。从检错的正确率与速度、成本等方面,都比奇偶校验等校验方式具有優势。因而,CRC成为计算机信息通信领域最为普遍的校验?方式。
  3 结论
  综上所述,CRC算法作为一种纠错效率高、成本低廉的算法在计算机网络通信纠错算法中广泛应用,极大的提升了在在数据传输的过程中信息的可靠性和正确率。因此需要在计算的过程中,重点关注有关多项式和算法编译码的问题,并结合其他算法的综合运用,保障在信息传输过程中因各种原因导致的信息错误被及时的发现与纠正,以提高计算机网络整体通信效率与通信质量。
  参考文献
  [1]李长青.论CRC算法在计算机网络通信中的应用[J].数字技术与应用,2017(12):141-142.
  [2]高岳,马帅.CRC算法在计算机网络通信中的应用研究[J].信息记录材料,2017,18(10):8-10.
  [3]李欣.CRC算法在计算机网络通信中的应用分析[J].物流工程与管理,2017,39(4):166-167.
  [4]赵玉红.循环冗余校验的实现方法[J].雷达与对抗,2006(4):25-27.
  [5]杜杏菁,刘春梅.循环冗余校验算法分析和实现[J].华北科技学院学报,2005(3):105-107.
  [6]原明亭,蒋伟.基于字节查表的循环冗余校验码的软件生成算法[J].山东矿业学院学报(自然科学版),2009(2):73-75,78.
  [7]顾文达,孙亚民,杨建荣.快速循环冗余校验算法及其程序实现[J].南京理工大学学报,2015(2):113-116.
转载注明来源:https://www.xzbu.com/8/view-15169234.htm