本文主要探讨一下数据链路层的两种检错编码:奇偶校验码、循环冗余码
首先谈谈差错检测的基本概念:
下面两种局域网内的帧格式中都是带有校验位的,目的就是用于差错检测。
一、奇偶校验
注:奇、偶数要算上奇偶标记位
奇偶校验存在较大缺陷,检错率只能达到50%
二、CRC冗余校验
推荐一个b站的视频:差错检测
我们直接看题:
注意,被除数是数据部分添加生成多项式最高次数个0得到的
G(x)这个生成多项式是约定好的。
待发送的数据为被除数
根据生成多项式构造出来的是除数
两者做二进制除法,要配合异或运算
最后余数要补齐最高位,不足则补0
将得到的余数补在待发送信息后面,就可以发送了。
检错过程:
将接收到的数据与G(x)做二进制除法,看所得余数是不是为0.如果为0,我们可以断定,没有差错。
总结:
在计算机网络中经常会用到差错检测的CRC方法。这是因为校验位位数不多而且CRC比较利于用硬件实现。但纠错就不是很容易了,带来的开销就很大。
因此,一般我们会把发生错误的数据帧直接丢弃,然后选择是否重传。如果检错重传那么就是提供的可靠服务,如果是检错不重传就是不可靠的服务。