您当前的位置:首页 > 计算机论文>计算机网络论文

浅议CRC算法在计算机网络通信中应用

2015-09-29 08:48 来源:学术参考网 作者:未知

摘 要: 在计算机网络通信中, 为了把信息及时可靠地传送给对方, 通信系统都采用了差错控制。循环冗余校验(Cyclic Redundancy Check)就是一种被广泛采用的错误检验编码,本文介绍了循环冗余校验算法的原理、循环冗余校验算法分析、循环冗余校验算法设计,简称CRC。

关键词:计算机;网络通信;循环冗余校验算法
  计算机网络通信就是把布置在不同方位上的、自治的终端或者系统用数据传输线路互连,遵照不同的协议进行计算机之间的互相通信,一次完成整个计算机网络的资源互通与共享以实现整个系统的资源共享。在数字通信系统中可靠性与通信速率是不可兼得的。速率越快传输出现错误的可能性大,可靠性越低。可靠性越高,数据传输速率就会变的越慢。数据在计算机网络传输的过程中会受到外接各种干扰的影响,导致信号接收端和信号发送端数据信息的不一致,产生了数据传输错误。因此,可靠性和传输速率这对矛盾要通过正确的设计通信系统才可以合理的解决。
  1、循环冗余校验算法的原理(理论基础)
  循环冗余校验(Cyclic Redundancy Check)就是一种被广泛采用的错误检验编码,简称CRC,是计算机网络通信中运用最多的一种可靠性很高的检错编码方式。是由分组线性码的分支而来, 有较少的冗余位,漏检率很低,从而可以有效地提高传输速度, 其二元码组编码简单且误判概率很低,在通信系统中得到了广泛的应用。循环冗余校验的算法实现包括硬件实现和软件实现,硬件实现速度很慢,软实现方法就相对较快。以太网就采用32位的循环冗余校验循环冗余校验编码方式.
  在实现计算机网络实体之间的通信时,要首先把要交换的信息报文分割成一个一个的等长的数据段,并在每个小数据段之前加上首部(Head),并在该数据段的末尾加上一个校验码,这样就构成了一个完成的数据包。各种有用的数据信息都可以从这些小小的数据包中提取出来,这对于接收端的计算机来说,数据通信数据的差错传输检测是一项可以人工加以控制的管理工作。数据包的格式见下图。
  
           数据包的标准格式
  如上图所示,SOH是数据包的包头, SOH中含有各种控制信息,比如同步信息、源站地址和目的站地址等;序号表示报文被分成了几组数据包;数据包长度表示该数据包中的字节的多少;数据就是数据包中传输的各种信息;校验码就是本文要研究的重点,是通过循环冗余校验循环冗余校验算出来的该数据的检错控制码。
  循环冗余校验把单一的数据包当做一个位串来进行处理,数据包的第一位一直到最后一位都在校验范围之内。计算机通信使用循环冗余校验对要传输的数据进行差错控制,使得数据传输的可靠性大大提高,目前大部分通信软件都运用了该算法。
  2、循环冗余校验算法分析
  2.1循环冗余校验算法原理
  循环冗余校验算法的原理是:在计算机发送端发送数据包的时候在末端加上循环冗余校验码,使数据信息与循环冗余校验码两者之间建立编码关系;然后发送数据包到计算机接收端,计算机接收端对发送过来的数据包进行数据和编码的反运算,即译码,译码后把所得结果和发送端的校验结果比对,若正确则说明数据包在传输过程中没有发生错误,若是不正确,走通过自动重发来纠正传输错误,然后再对接收到的数据进行重复的译码,知道编码结果和译码结果一致。
  循环冗余校验算法的实现:被校验数据包往往是信息代码组,不管它表示的是什么样的数据信息,它在计算机通信网络中都是按照二进制的传输方式传输的。被校验的数据(M(x))要被某一生成多项式G(x)所整除,如果不能整除则说明出错,余数(R(x))将会指出错误之处,若果能够被整除,这说明数据传输没有出错。当出现不能出尽的情况是,被校验的数据减去产生的余数,这样就能被该生成多项式所能整除了,因为涉及到减法运算,借位操作不可避免,因此难以用简单的拼装方法完成校验的编码。现在多采用模2运算法,这是一种标准的算法,模2算法是按照位的加减法则来进行运算的,但是它和四则运算不通,它不考虑借位和进位。具体的运算过程是运用模2减法达到模2除法的目的,运用模2加法把生成多项式产生的余数拼接在校验数据的末端,这样就可以形成一个能被生成多项式除尽的被校验数据。该算法过程存在一个前提条件就是生成多项式的选取是要满足特定要求。
  2.2循环冗余校验算法的性能分析
  生成多项式的选取要满足一定的要求,不然会影响纠错的可靠性。生成多项式的选取原则如下:不论数据包的哪一位发生了传输错误,余数(R(x))都不应该为0;不同字节的不通的位,相除之后余数(R(x))应该是不相同的;余数(R(x))应该满足余数循环规律。其检错能力是和生成多项式的幂次正相关的。比如生成多项式G(X)为R次幂,那么循环冗余校验码的检错性能要满足:
  1)能够把所有的奇数个错误纠错出来。2)能够纠错单个突发性的错误。3)对两个错误也能够纠错出来。4)对于长度小于等于R个比特的突发性的错误也能够检测出来。循环冗余校验码的检错纠错能力很可靠,在计算机网络通信中得到了广泛的应用。具
  2.3循环冗余校验算法的优缺点
  在计算机网络数据通信中,一般来说,纠错码的编码效率总不及检错码的编码效率,因而在通信中用的较多的还是检错码和ARQ方式。其最大的优点就是快,校验速度得到很大提高,在计算机网络和数据通信中,用得最广泛的检错码是一种漏检率低也便于实现的循环冗余校验码循环冗余校验,其最主要优点是突出了一个“快”字,提高校验速度。循环冗余校验算法的缺点是由于要存储参数表,需要更多的存储空间,需要以空间换取时间。3 循环冗余校验算法程序设计用一个双重循环程序段,可计算出对应单字节的循环冗余校验码表。外循环从0~255,每次循环把要计算字节送入余数单元(4字节)最低位字节中,然后左移八位。内循环次数为8,每次循环先将余数单元中数据左移一位,最低位补0。两次循环结束之后就可以算出整个循环冗余校验码表。逻辑流循环冗余校验码表,其程序设计流程如下图2所示。
  
  
  图2 循环冗余校验码表生成程序流程图
  3、结束语
  本质上循环冗余校验计算的就是移位和异或,所以1次处理移动几位都没有关系,只要做相应的处理就好了。循环冗余校验校验实现简单,检错能力强, 提高了通信速度,占用系统资源少,用软硬件均能实现,一定程度上解决了传输速率和校验时间的矛盾,是计算机网络通信中对数据包进行检错的的一种很好的手段。  
  参考文献:
  [1]谭明新,李瑞,余英,刘海峰.循环冗余校验检错探究[J].科技创业月刊,2009(11).
  [2]刘星华.循环冗余校验校验在单片机系统中的软件快速实现[J].福建工程学院学报,2007(1).

相关文章
学术参考网 · 手机版
https://m.lw881.com/
首页