APP下载

计算机网络通信中CRC算法的应用研究

2022-03-24岳立文

电气传动自动化 2022年1期
关键词:校验码网络通信校验

岳立文

(白银矿冶职业技术学院,甘肃 白银 730900)

计算机网络通信是通过多种算法处理而实现的。用数据线路将不同位置的服务器终端进行连接,实现数据资源共享,构建信息资源丰富的网络社会。但随着计算机网络通信频率的加快,数据信息会受磁场等外在因素的干扰,从而影响信息传输质量,并造成信息失真、误码率高等问题[1]。采用CRC算法,其差错纠正控制可有效解决信息误差,降低误码率,提升计算机网络通信质量和通信水平。

1 CRC算法概述

1.1 CRC算法涵义及算法原理

CRC即循环冗余校验码(Cyclic Redundancy Check),是数通领域较为常用的具有纠错、检错能力的一种差错检验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检验是一种数据传统检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也运行类似的算法,以保证数据传输的正确性和完整性。其在通信过程中,时长会产生变化,可以由0变为1,也可以由1变为0,将待发送的位串看成系数为0或1的多项式。收发双方约定一个生成多项式G(x)(其最高阶和最低阶系数必须为1),发送方用位串及G(x)进行某种运算得到校验和,并在帧的末尾加上校验和,使带校验和的帧的多项式能被G(x)整除。接收方收到后,用 G(x)除多项式,如果有余数,则传输有错[2]。

1.2 CRC 算法分析

CRC循环冗余校验码的编码方式是用生成多项式G(x)去除待发送的数据串,最终得到的余数就是CRC校验码,其实现过程如下:

(1)首先给定一个生成多项式G(x),它的阶数是r阶,再给定数据串帧数是k位的多项式,设为M(x),那么就需要将原帧 M(x)左移 r位,也就是在M(x)的后面加上r个0,生成的新数据串变成了 k+r位,多项式也变成了 XM(x)。

(2)用新数据串XrM(x)去除以生成多项式G(x)对应的数据串,运用模二运算,得到余数为 R(x)。

(3)将得到的余数 R(x)加到数据串 M(x)的后面,生成新的数据串 T(x),新数据串 T(x)就是待发送的带有校验和的帧多项式,即:

CRC的本质就是将待发送的k位多项式转换成了可以被生成多项式G(x)除尽的k+r位多项式,解码时可以用接收到的数据去除以生成多项式G(x),如果得到的余数为0,那么则表示传输过程正确,如果得到的余数不为0,那么表示传输1过程出现错误。

1.3 CRC 算法的实现

在计算机网络通信中算法中,主要包括硬件和软件两种实现形式,都是通过发送数据包的方式实现数据共享和数据传输,通过两者比较,软件实现形式更具优势,信息传播速度更快、误码率较低,因此,目前在计算机网络通信过程中,多以软件形式呈现,其中,以太网是软件形式的代表。在计算机网络实体之间实现数据传输和数据共享时,为保证通信功能的有效实现,需通过发送数据包的方式进行数据传输控制,保证数据信息的功能价值。数据包由段开销、数据序号、序列的校验码等组成,其中,段开销作为数据传输的初始数据,承载着数据开始出传输到传输结束的全过程,这一过程的数据安全是整个算法的保护重点,段开销安全性保护到位就不容易初夏误码问题,若保护不到位,极易导致误码产生。数据序号作为数据的“名字”,主要承担编组数据任务,如将5个数据编到1组,那么25个数据应该编为5组,序号应编至25。在计算机网络通信数据共享与传输过程中,不同数据包都有不同的编码,也有不同的字节长度,数据编码位于整个数据包的尾部,承担数据纠错功能,通过对字节长度的测算,检验计算机网络通信数据的安全性和准确性。但在实际的数据传输过程中,数据错误在所难免,如何将错误率讲到最低是当前相关研究人员重点研究的关键。随着科学技术水平的提高,我国计算机网络通信误码率已经达到了较高水平,已经最大限度的控制了误码率的发生,PC表示误码率,计算公式为:PC=所接收的错误码/所接收的总码数[3],技术人员可以通过上述公式计算误码率,并结合实际情况不断完善计算机网络通信传输技术,全面降低网络通信过程中出现差错的几率。

2 CRC算法的校验规则

能否除尽作为CRC算法中数据信息的校验规则,对于可以被多项式除尽的数据,说明出错错误的概率就较低,对于无法被多项式除尽的数据,则应返回数据校验中,检查数据的的出错点,将多余的余数减去,再运用多项式进行除法运算,若可以被除尽说明误码问题已解决。但在减去余数的这一过程涉及新的算法,涵盖更为复杂的数学运算,无法采用拼接的方式将数据进行编码。因此,对于这一现象,可采用前文CRC算法分析中提及的模2运算方式,通过模2加、模2减、模2乘、模2除四种方式,计算最终结果。

在CRC算法错误检测机制中,采用奇偶校验法,通过奇数与偶数的不同,分别检测奇数和偶数中的错误数据。随着技术进步,当前所能检测的校验错误最大数值可达到16位,且检测效果较强。信息通讯过程中,信息接收部分接收到相关信息时,收到循环校验码指令后,用多项式数字代码做除法运算,如果可以除尽,说明数据传输中无误码现象,但如果有余数,说明存在误码现象,可启动模2运算程序,减去多余的余数,使得出的结果为整数,且余数为0。

3 计算机网络通信中CRC算法的应用

因CRC算法的检测成本低、检错能力强等优势,使之广泛应用于计算机网络通信过程,下面将从CRC算法的应用过程、校验码生成、优劣势等角度,重点阐述计算机网络通信中CRC算法的应用。

3.1 CRC算法的应用过程

为实现计算机网络通信,CRC算法通过在计算机网络各数据间建立编码关系,设置编码数据库(如图1所示),并将校验码加入数据包的末端部分,以此实现计算机网络信息的传输与共享。当校验码与计算机数据产生联系后,可以实现数据的流通与传输,数据可以从起始位置传输到数据终端接收部位,终端接收数据后通过一系列“译码”判断是否能够将收获的数据对外共享。如果在“译码”过程中,发现数据运算结果不正确,说明数据存在传输过程中出现误码问题,仍需进一步“译码”循环往复,直至最终的计算结果与源地址的结果相符,才能够说明数据在传输过程中未出现错误,终端接收的数据才能进入下一环节,实现数据共享[4]。

图1 编码数据库示意图

如前文所述,CRC算法是通过发送数据包形式实现数据传输和数据共享的,数据包中的段开销及数据均已代码组的形式呈现,通过二进制运算,完成数据传输目的。二进制计算过程中,通过多项式除法运算,依据计算结果判断数据传输过程中有无误码问题,如果不能被多项式除尽,有余数出现,说明数据传输过程中存在误码问题,影响计算机网络信息传输准确性和传输质量,需要再通过减法运算,再进行除法运算,直至算出的结果为整数时才能终止校验。如果可以被多项式除尽,说明数据传输过程较顺利,没有出现误码问题。上述计算中,模2是常用的运算方法,便于操作、计算准确,能够真实反映计算机网络通信情况。

3.2 校验码生成

计算机网络通信中CRC算法的应用以校验码的生成为主,其原理大体可以概括为:可以将被校验的n位数据块看做n阶二进制的多项式:

发送方和接收方约定以r阶生成多项式G(x),将G(x)作为除数,带入除法运算中,无法除尽生成余数多项式 y(x),y(x)即 m(x)的校验码,再将 m(x)附在n位数据块之后一并发送至接收方,以接收方最终收到的多项式为准,作为被除数,除以除数G(x),可以被整除即可说明校验成功。表1为16位CRC校验原理及算法,将相关数字带入式(2)即可得到如表1所示的相关数据。

表1 16位CRC校验原理及算法

CRC校验流程如下:

(1)将所有编码数据做初始化处理,使之回归初始阶段,并设置循环变量的初始值。

(2)实现数据信息传输,将数据信息按照设置的传输路径,将其输送至余数数据空间,原有的余数数据产生相应位移,向左移动8位或1位。

(3)将余数数据的最高位与“1”对比,判断余数数据的为高危是否为1,如果等于1,可以将其代入多项式进行除法计算,判断是否能够整除。

(4)这一阶段还需判断循环冗余算法是否经过8次循环,256次反复校验编码,最后将已经完成8次循环的余数数据进行存储。

(5)余数数据最高位经与“1”对比后,发现不等于1,且未经过8次循环,针对这种情况,需要重新启动CRC算法,重新整理并收集数据,传输至余数单元,重复计算[5]。

通过以上校验码的生成方法能够有效判断出数据传输中的错误,进而及时更正数据信息,在实际应用中,可有效提升计算机网络信息传输效率,保证数据信息传输质量。

3.3 CRC算法的优缺点

在计算机网络通信过程中,CRC算法具有明显优势,但从纠错差错这一项功能来看,就是其他算法无法比拟的。CRC算法可以在短时间,通过调动软件系统的各种程序,经过一系列运算,判断整个数据传输过程中有无出现误码,提高了网络信息传输的纠错率,保证了通信效率,与传统的纠错算法相比,具有成本低、纠错质量高等优势,具有较强的应用价值。

CRC算法在具有较强优势的同时,也存在一定缺陷,如数据存储量大,存储空间不足,一定程度影响算法的纠错效率,因此,在未来的发展中,研究人员还应在扩大数据存储空间上狠下功夫。

4 CRC算法纠错条件与注意事项

4.1 纠错条件

CRC算法需要满足的纠错条件主要包含以下三个方面:一是针对数据传输过程中存在的奇数个错误做纠错处理;二是对于单个突发性的错误做到有效纠正;三是对于两个或两个以上的偶数个错误进行有效的纠错处理。

对于满足以上三个条件的通信过程进行CRC算法校验,检测计算机网络通信过程中存在的无差问题,以充分满足计算机网络通信对数据准确性的要求,推动计算机网络整体通信水平的提升。

4.2 注意事项

4.2.1 多项式选择

在CRC算法的实际应用中,为有效判断计算机网络通信传输过程中存在的问题,需进行纠错校验,通过以二进制位代表的数据包与多项式相除形式,计算是否得到整数,通过对能都整除的判断,正确了解计算机网络通信过程中存在的问题。但这一过程对多项式的选取要求较高,多项式条件的优劣关系着最终计算结果正确与否,因此,在CRC算法应用过程中,更应重视多项式的选择。

一般情况,多项式大都由系统设定的程序自动生成,在整个CRC算法应用过程中,按照数据传输规律设计多项式生成公式,其中,差错及误码检测特点是影响多项式生成的主要原因,所以为充分保证多项式的准确可靠性,必须保证数据包能被整除,也就是没有余数,只有满足这些条件,才能确保多项式的生成效果。

4.2.2 算法编码方式

通过对CRC算法的分析,了解到该算法在应用过程中需要将数据包编码处理,用生成多项式G(x)去除待发送的数据串,最终得到的余数就是CRC校验码。算法编码的主要目的在于将第k位的有效信息实现移位,如向做移位r个单位,从而得到余数的过程[6]。采用模2的计算公式,对于所得余数代入多项式进行云端,最终得到准确的校验码的过程。

5 结论

综上所述,在计算机网络通信过程中,与传统算法相比,CRC算法有较大的应用价值,具有纠错率高、成本低、行速度快等特点,能够通过发送数据包的形式,将数据包与多项式进行除法运算,从而有效检测数据传输过程中的错误,并能及时纠正,提高网络通信质量和通信效率,对今后计算机网络通信整体效率的提高具有明显的推动作用。需要注意的是,在该算法的具体应用过程中,应注意多项式的选择和算法编码方式问题,以更好地提升该算法的应用效率。

猜你喜欢

校验码网络通信校验
基于网络通信的智能照明系统设计
网络通信中信息隐藏技术的应用
基于网络通信的校园智能音箱设计
炉温均匀性校验在铸锻企业的应用
谈计算机网络通信常见问题及技术发展
基于Excel实现书号校验码的验证
基于FPGA的循环冗余校验码设计
身份证号码中的数学
大型电动机高阻抗差动保护稳定校验研究
基于加窗插值FFT的PMU校验方法