计算机网络检错码与纠错码
在通信系统中广泛应用的差错控制技术是差错控制编码技术。
而差错控制编码包括检错码和纠错码两种,其中检错码是为传输的数据信号增加冗余码,以便发现数据信号中的错码,但不能纠正错码;纠错码是为传输的数据信号增加冗余码,以便发现数据信号中的错码,并自动纠正这些错码。
下面介绍几种检错码和纠错码的校验方法。
1.奇偶校验码
奇偶校验码是一种最简单的无纠错能力的检错码,其编码规则是先将数据代码分组,例如,将ASCⅡ码中的一个字符或若干个字符分为一组。
在各组数据后面附加一位校验位,使该数据连校验位在内的码元中1的个数恒为偶数则为偶校验,恒为奇数则为奇校验。
奇偶校验无纠错能力,它只能检测出码元中的任意奇数个错误,若有偶数个错误必定漏检。
由于奇偶校验码容易实现,所以当信道干扰较弱,并且数据码长较短时,使用奇偶校验码效果很好,在计算机网络的数据传输中经常使用该检错码。
根据数据代码的分组方法,奇偶校验码可以分为水平奇偶校验、垂直奇偶校验和垂直水平奇偶校验。
●水平奇偶校验
如表3-1所示,在水平奇偶校验中,把数据先以适当的长度划分成小组,并把码元按表中所示的顺序一列一列地排列起来,然后对水平方向的码元进行奇偶校验,得到一列校验位,附加在其他各列之后,最后按行的顺序进行传输。
水平奇偶校验能查出水平方向上奇数个错误和不大于数据代码长度的突发错误,无纠错能力,但产生校验码及校验逻辑相对复杂。
表3-1 水平奇偶校验
●垂直奇偶校验
如表3-2所示,在垂直奇偶校验中,把数据先以适当的长度划分成小组,并把码元按表中所示的顺序一列一列地排列起来,然后对垂直方向的码元进行奇偶校验,得到一行校验位,附加在其他各行之后,然后按列的顺序进行传输。
垂直奇偶校验能够查出列上的奇数个错误,只能查处50%的突发错误,无纠错能力,但产生校验码及校验逻辑相对简单。
表3-2 垂直奇偶校验
●垂直水平奇偶校验
垂直水平奇偶校验是在水平奇偶校验和垂直奇偶校验的基础上,把两者结合起来对码元进行校验,如表3-3所示。
传送时先传第1列,接着传送第2列,依次类推,最后传送第11列,因此在信道中传送的二进制信号序列为101011011…111001。
这种方法按列传输时能够发现所有长度小于或等于n+1(n为列的码元数)个突发性错误和其他错误。
这种方法也可以按行传输,它能够发现所有长度小于或等于每一行码元数m+1(m为数据信号码元数)个突发性或其他错误。
并且能够根据某行某列校验关系出现错误的情况,判断该行该列上交叉点的码元出错,从而可以纠正这一位上的错误。
2.循环冗余码
循环冗余校验码(Cyclic Redundancy Code,CRC)借助于循环码来实现其校验功能。
循环码不同于奇偶校验码,它具有两个显著特点:循环码适合于用代数方法分析码的结构,并可以用代数方法设计各种实用的、有较强纠错能力的校验码,不需要较长的码长;由于循环码的循环特性,所需要的编、译码设备比较简单,易于实现。
因此循环码在通信系统中得到广泛应用。
循环码又被称为(n-k)循环码,这是因为此码共n位,其中前k位为数据位,后(n-k)位为冗余位。
其组成如表3-4所示,其中r代表冗余位,m代表原始数据。
表3-4 CRC编码组成
循环冗余编码的校验功能:
●全部奇数个错误
●全部双字位错误
●全部小于、等于冗余位数n-k的突发性错误
-
●对于n-k-1位的突发性错误,查出概率为1~)1r(
2-
●对于多余n-k-1位的突发性错误,查出概率为1~r
2-
循
环冗余编
码法在数据传输过程中得到最广泛的应用。
使用这种冗余编码的实质在于,传输信息信号时,不使用全部M 个编码组合,而只使用其中的一部分。
这部分编码具有事先确定的性质,在接收端出现不使用的编码组合时,说明在某一位或若干位发生了错误。
CRC 还具有纠错功能,但网络中很少使用其纠错功能,仅使用其强大的检错功能,检出错误后要求重发。
随着集成电路工艺的发展,循环冗余码的产生和校验均有集成电路产品,发送端能够自动产生CRC 码,接收端自动校验,速度大大提高。
目前,局域网中采用的CRC 校验,就由专用的局域网设备来完成。
除了以上常用的两种检错码以外,还有恒比码、群计数、海明码等通信系统中常用的纠错编码。
提 示
在循环冗余编码中,只要选择足够的冗余位,能够使漏检率减到任意小的程度。