「全站讲的最清晰」海明码原理
王道计网书P84来的uu们握个爪!!
3.3 差错控制
本节只讨论传输差错中的一种——比特差错
通常采用编码技术进行差错控制,主要有两类:自动重传请求ARQ和前向纠错FEC
一.ARQ:接收端检测到差错,通知发送端重发
二.FEC:接收端不仅能发现差错,而且能确定比特串的错误位置,从而加以纠正差错
这里结合了这个视频:https://www.bilibili.com/video/BV1tV4y1H7kY/?spm_id_from=333.788&vd_source=8def8a093b2dd47d3a94e5f5d5069361
1.检错编码:

(1)奇偶校验码

(2)循环冗余码(CRC)


CRC计算方法?推荐下面这个视频:
https://www.bilibili.com/video/BV1D44y1D7R1/?spm_id_from=333.337.search-card.all.click&vd_source=8def8a093b2dd47d3a94e5f5d5069361

注意:
CRC在数据链路层无法实现纠错,只能检错,检测到帧出错则直接丢弃,是为了方便协议的实现;
但是CRC本身是具有纠错功能的。
2.纠错编码(最常见的是海明码)
本视频前56分钟讲解海明码部分




从上图可以看出海明码的优势:二维奇偶校验用了22个校验位才只能从矩阵中查找98个数据位中的一个错误;
而海明码128个数据位,仅需要8个校验位。




思考:
海明码中的数据位的序号由至少2个校验位相加得到。如果数据位错了一位,那么至少会错3位(1个数据位加上2个校验位)。
最多检错2位,最多纠错1位。
对于海明码的纠一检二,大家可以参考
https://blog.csdn.net/qq_44675969/article/details/108554556
海明码解释以及海明码的纠一检二_阿波罗尼斯圆不是圆的博客-CSDN博客_海明码能纠正几位错



咱们的电脑内存出错,蓝屏了重启可以;但要是企业的服务器出问题,就很麻烦,所以在那里我们使用海明码就很好。


对于这个4-16译码器,如果输入0011,那么输出端Y3就会输出0(取反得到1),其他输出端输出1(取反得到0);接着与数据位进行异或运算,其他异或后直接输出数据位,Y3这里异或后就会变成相反的数。那么我们就实现了纠错。



