差错处理


差错处理

任何信道,即使是光纤,也会出错

错误类型:

  • 单个错误:分散在各块中(平均每一大箱水果都有1个是坏的)
  • 突发错误:集中在某个块中(可能因为某些原因,某一箱苹果基本全是坏的)这个非常难处理

差错的处理:

  • 纠错码:发现错误,从错误中恢复出正确的来,因其需要太多的冗余位纠错开销太大,在有线网络中极少使用,主要用于无线网络中
  • 检错码:只能发现错误,不能从错误中恢复,但可采用重传,计算机网络中主要采用循环冗余码(CRC)


码字与海明距离

码字(codeword):包含数据位和校验位的n位单元

海明距离:两个码字的海明距离为两个码字之间不同位的数目,也就是它们异或(xor)结果中1的个数

  • 例如:10001001和10110001的海明距离为3

全部码字的海明距离:全部码字中任意两个码字之间海明距离的最小值(设其为d,以下通用


海明距离与检错的关系

结论:海明距离为d+1的编码能检测出d位差错

一个很著名的检错码:奇偶校验码,方式为追加1个位在数据后面,如果码字中有偶数个1则追加0,否则追加1(这是偶校验, 奇校验相反)

例子:一个系统要传输的原始码字:"01","10","11","00"

编码后的偶校验码字是:"011","101","110","000",(当然只有这4种是正确的)

可以计算出全部码字的海明距离为2,也就是说奇偶校验码能检测出1位差错

证明:如果得到了一个"001",很明显这是个非法码字,如果得到了"000",很明显合法,但是你却不能确定它是不是由"110"跳变2后的错误码字


海明距离与纠错的关系

结论:海明距离为2d+1的编码,能纠正d位差错(关于这个结论可以仔细思考一下为什么)

举个例子:一个系统有4个合法码字:"0000000000","0000011111","1111100000","1111111111

海明距离是 5=2*2+1,所以可纠正2位错误

假设我们发送的码字是"0000011111",收到的码字为"0000000111"

它离"0000011111"最近,所以它会被纠正为"0000011111"

假设我们发送的码字是"0000000000",收到的码字为"0000000111"

这样很显然是无法被纠正的,因为它一定还是会被纠正为"0000000111"



你可能感兴趣的:(#,计算机网络)