物理过程所引起的差错,在某些介质中通常是突发的而不是单个的。网络设计者已经研究出两种基本的策略来处理差错。
1. 纠错码
了解纠错码之前,先了解一个基本概念:海明距离。
通常一帧包括
m
个数据(报文)位和
r
个冗余位或者校验位。设整个长度为
n
(即
n = m + r
),则此长度为
n
的单元通常被称作
n
位码字(codeword)。给出任意两个码字,如
10001001
和
10110001
,可以确定它们有多少个对应位不同。在此例中有
3
位不同。
为了确定有多少位不同,只须对两个码字做异或运算,然后计算结果中
1
的个数。两个码字中不同位的个数,称为海明距离(Hamming Distance)。其重要性在于,假如两个码字具有海明距离
d
,则需要
d
个位差错才能将其中一个码字转换成另一个。
一种编码的校验和纠错能力取决于它的海明距离。为检测出
d
比特错,需要使用
d + 1
的编码;因为
d
个单比特错决不可能将一个有效的码字转变成另一个有效的码字。当接收方看到无效的码字,它纠能明白发生传输错误。同样,为了纠正
d
比特错,必须使用距离为
2d + 1
的编码,这是因为有效码字的距离远到即使发生
d
个变化,这个发生了变化的码字仍然比其它码字都接近原始码字。
这种方法能够检测到单个程度为
n
的突发错误,因为每一列只有一位改变了。然而如果第一位变反,最后一位变反,且所有其它位都正确,则长度为
n + 1
的突发差错将不会被检测到。假如一个块被一个长的突发差错或者短的突发差错所破坏,
n
列中的每一列的奇偶值碰巧正确的概率为 0.5,那么这个出错块被接受的概率不应该是 2-
n
。
虽然上述方法有时已经足够了,但是在实践中,另一种方法正在被广泛使用,即多项式编码(也叫循环冗余码,或 CRC 码)。多项式编码是基于将位串看成是系数为 0 或 1 的多项式,一个
k
位帧可以看成是从
X
k-1
到
X
0
的
k-1
次多项式的系数序列。
本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!
添加新评论