计算机网络-数据链路层-差错检测
错误检测
实际的通信链路并不理想。位在传输过程中可能会产生错误。 1可能变成0,0也可能变成1。这称为位错误。
利用错误检测方法来检测数据传输过程中是否出现误码是数据链路层需要解决的重要问题之一。
在通用帧的末尾,包含FCS序列,它允许接收器的数据链路层检查帧在传输过程中是否出现误码。
奇偶校验
奇偶校验只能在发生一位错误时应用。如果发生多个比特错误,则这种情况不适用。
循环冗余校验CRC
一般计算的链路层采用循环冗余校验CRC
公式有点复杂
检错码只能检测第一帧传输过程中的错误,但无法定位错误,因此无法纠正错误。
为了纠正传输中的错误,可以使用冗余信息较多的纠错码进行前向纠错。但其开销较大,在计算机网络中很少使用。
通常,使用错误检测和重传来纠正传输过程中的错误,或者仅丢弃检测到错误的帧。
循环冗余检测代码(参见示例问题)
其实很简单
除数通常是这样导出的
使用 CRC 的生成多项式为 P(X)=X^4+X+1。如果这么说的话,除数就是10011
n=3,被除数加3个0。
然后除以除数,然后进行异或运算。如果第一位数字相同,则商为1,如果为0,则商为0。
最后,用完位数后,得到余数。
然后在数据后面添加冗余码FCS。
CRC是一种常用的错误检测方法。
然后得到余数FCS 001后,将001与原除数相加,即与 相加,得到。
那么接收方收到的就是这个,然后把这个除以1101,如果结果是0,就没有错误。如果结果不为 0,则出现错误。
所以商并不重要,重要的是余数。