CRC算法在计算机网络通信中的应用
作者:许伟 王晓燕
来源:《数字技术与应用》2014年第02期
摘要:差错检测控制广泛应用于计算机网络通信中,可以降低数据通信线路传输的误码率。CRC(循环冗余校验)是一种常见的检测码,在计算机网络通信中,选择合适的CRC,冗余位少、漏检率低、传输效率高。CRC算法采用软件校验的方法,极大地提高了计算机网络传输的准确性和可靠性。本文介绍了CRC算法的原理、分析、设计等,并详述了其在计算机网络中的应用,分析了其研究现状。
关键词:CRC算法 计算机网络 通信 差错检验控制
中图分类号:TP393.03 文献标识码:A 文章编号:1007-9416(2014)02-0119-02 计算机网络通信是通过传输线路将不同位置的服务器终端,遵照通信协议将其连接起来,从而将计算机中的资源互通,共享整个系统的资源。在实际应用时,通信线路容易受到各种干扰影响,导致接收端的信息出现误码。在数据通信中用误码率衡量数据通信线路传输数据的准确度,其中误码率是指接收错误码数与接收码数的比值。计算机网络数字通信系统中,经常出现传输速率越快,出现错误的几率越大,反之亦然,可靠性与通信速率不可兼得。改善数据通信线路传输质量、差错检测控制可以提高数据传输的可靠性与传输速率。引入新的交换设备、替换新数据通信线路等提高硬件设施的方法受到经济及技术上的限制,代价大且收效甚微。目前,计算机网络通信系统大部分采用差错检测控制方法,检测通信线路传输信息并进行纠正,提高通信线路传输质量。CRC(Cyclic Redundancy Check)算法就是一种差错检验控制方法,能够比较准确的校验数据通信线路传输的信息。 1 CRC算法简介
CRC校验(Cyclic Redundancy Check,循环冗余校验),是一种在计算机网络通信中广泛应用的错误检验编码方式。其可靠性高、冗余位少、检漏率低,可以有效地提高数字通信传输速率,广泛应用于通信网络中。发送端计算机运用CRC算法计算出待发送数据的CRC校验码,通过附加在待发送数据尾端,发送数据,实现编码过程。接收端计算机检测发送后数据和CRC码之间的数学关系,检测是否正确,实现译码过程。数据信息在传输过程中有误码时,校验结果错误,通过发送端重传校正错误,直至传送正确为止。
数据信息在计算机网络的实体间交换时,首先将较长的信息保温分割成较小的、等长的数据段,然后每个数据段前面加上头部,末尾加上校验码,构成数据包。发送端将数据包通过通信线路传输至接收端,计算机从数据包中获得所需控制信息和传输信息,从而实现传输中的差错检测控制,使其成为一项可管理的工作。接收端可以通过数据包提取有用信息,进行差错分析。因此,数据信息的差错分析,通过人为控制,可以实现差错管理控制。
龙源期刊网 http://www.qikan.com.cn
在CRC校验时,信息代码通过转换成二进制的计算机语言通过网络传输。被校验数据通过除以一个多项式,必须是整式。如果出现余数就出现传输错误,通过余数指出错误,若能整除则传输正确。当被校验数据出现错误时,通过减去余数,多项式就可以被整除了。该校验算法难以通过简单的拼装完成数据的校验,经常回出现错位操作。现在经常遇到的一种算法是模2运算法。该方法与以前的四则运算方法不同,将多项式的余数移到校验数据末端,形成一个校验数据,进而能够被多项式整除。生成多项式需要满足一定的要求,才会不影响纠错的可靠性。其原则是:数据包传输出现错误时,余数都不能是0;不同字节相除之后余数是不相同的;余数满足余数循环规律。通过CRC算法能够把所有奇数个错误纠错出来,将两个错误也能够纠错出来,能够纠正单个突发性错误。CRC检错纠错能力很强,在计算机网络通信中应用广泛。
2 CRC算法在计算机网络通信中的应用
今年来,数字信号处理器和大规模可编程逻辑器件发展迅速,在这些器件和相应的软件应用CRC算法,可以通过编码实现检错。这种应用检错能力极强、消耗小,出现错误的几率低,仅有0.0047%以下。性价比高,比奇偶校验好的多。在数据存储和数据通讯领域经常能看到它的影子,在通讯通讯协议X.25中,FCS帧通过CRC-CCITT实现编码,进行检错分析,磁盘驱动程序也采用了CRC算法,以CRC-16进行编码检错,一些压缩工具诸如ZIP、ARJ等也采用的是CRC-32,GIF、TIFF等图像储存使用的也是以CRV-32C为检错算法的编码技术。 在CRC标准的应用时,生成多项式较长,选择计算机芯片支持的数据宽度,16位或32位。对实时性处理要求较高的多采用短的生成多项式,例如,蓝牙技术就采用4位。此外,不同地域习惯,选择的数据宽度也有差异,CRC-CCITT常见于欧洲,CRC-16在北美洲比较盛行。长的多项式更加安全可靠,CRC-32或CRC-32C检错适用于数据压缩的CD-ROM扇区或ARJ工具软件。
金尚柱等用VC++6.0设计了一种新的CRC算法,并在局域网上实现了该算法。该CRC算法采用软件校验的方法,不需要设计另外的硬件电路,校验速度非常快,提高了计算机网络通信的速度和报文传输的准确性。其设计是针对目前很多无人值守站缺乏完整的远程监控系统,存在诸多问题。为此,他们设计了包括中心处理系统、数据通讯通道和小站环境监测前置端机三部分的光传输无人值守站远程监控系统。该数据通讯通道通过通讯网络链接,在监控中心实现与无人值守站前置端机的通讯与控制。中心处理系统通过指令控制前置端机,监控、采集、处理、分析基站的环境信息,通过警告、报警等声音提示,并建立可供用户查看的警告数据库。通过前置端机的看门狗电路收集数据,由微控制器传输至终端显示系统,进而完成信息的采集与上传。此外,为增强控制系统抗电磁干扰能力,增强其对环境的适应性,保证通讯安全,使用CRC循环冗余校验法增强以太网帧的稳定性。使用VC++6.0编写相应的软件,以CRC-CCITT编码,保证控件性能稳定、传输高效安全。该远程控制系统采用CRC差错校验技术,抗电磁干扰能力强、传输安全稳定,并且测试应用效果良好。
龙源期刊网 http://www.qikan.com.cn
石全峰等人将电路结构结合串行CRC,提出一种硬件电路的实现方法,给出了一种基于Verilog HDL的CRC8校验方法。串行算法在编码前初始化寄存器,输入信息序列后,在寄存器中得到CRC校验码。CRC初始化后,通过以太网帧计算FCS,先传输低比特的,进行倒序输入,再进行CRC计算。
王倩丽等设计了无线收发器的CRC数据校验模块,无线收发器采用C8051F330单片机通过SPI接口控制CYRF6936的工作模式。本无线收发器应用于门禁系统中能够实现一个接收端和多个发送端的通信。CYRF6936是一种第二代无线通信芯片,基于Wireless USB,采用直接序列扩展技术。无线发射器通过C8051F330单片机控制,采用CRC算法校验数据。本设计可应用与智能建筑安防报警系统,通过监控,防止设备丢失。硬件系统通过串行外设接口访问串行总线,通过SCK、NSS、MISO、MOSI四个端口与CYRF6936进行数据交互。软件部分是通过SPI控制CYRF6936,采用CRC校验数据结果,生成多项式,简化调试过程。CRC校验模块能够校验数据的正确性,无线接收器接收端接收的数据经CRC校验后,提高了数据的准确性。此外,该无线接收器能够和多个发送端相连,同一PN码才能进行通信。
廖海红等,在ZSP400的软件仿真环境中运行,从时钟周期数和执行指令数进行统计,得出结果。运行效率可以通过准余式表或反射余式表反映出CRC方法的效率。余式的产生实际就是对0到255计算CRC,通过左移、异或等操作,生成32位的多项式。文章中运用反射余表法先将多项式反射,再求余式,经过左移或右移将高比特变为低比特。右移求反射余式少了两次反射操作,比反射求反射余式快了10倍。因而,优化程序代码和程序结构可以提高运行速度。在时钟周期数与执行指令数统计时,通过余式比较CRC的效率。反射法在计算时使用发射生成多项式,应用时将余式表放入程序,执行指令。在ZP400运行CMC32时,采用不同算法得到的结果相同,反射法、标准法、查表法效果基本相同。但在运行速度上稍有差别,查表法最快,不需要反射时,反射法最慢。
综上所述,CRC(循环冗余校验)是一种常见的检测码,是一种在通信网络中广泛应用的编码错误校验法。在计算机网络通信中,选择合适的CRC,冗余位少、漏检率低、传输效率高、编码简单,易于在检测电路上实现。CRC算法实现简单,检错能力强,性价比高,比奇偶校验和算术校验效果好的多。CRC算法采用软件校验的方法,极大地提高了计算机网络传输的准确性和可靠性。CRC算法占用系统资源少,大幅度提高了运算速度,通过软硬件很容易实现,有效的解决了传输速率和校验时间的矛盾。 参考文献
[1]王倩丽.基于CYRF6936的无线收发器CRC算法实现[J].微处理机,2010.
[2]石全峰,徐东明,谢庆胜,张云军.CRC算法在以太网数据帧中的应用及其硬件实现[J].广东通信技术,2010.
[3]金尚柱,彭军,左毅.通信网络中快速CRC算法的设计与实现[J].2009.
龙源期刊网 http://www.qikan.com.cn
[4]陶传会.浅议CRC算法在计算机网络通信中应用[J].信息与电脑,2011. [5]杨梅娟,尹德春.CRC算法的研究[J].计算机与数字工程,2005.
[6]程立辉,黄贻彬,付金华,徐洁.CRC算法在计算机网络通信中的漏检分析[J].河南科学, 2007.
[7]谢小东,周正欧.GFP中一种快速CRC算法及其实现[J].电视技术,2005.
因篇幅问题不能全部显示,请点此查看更多更全内容