计网笔记:CRC循环冗余码

CRC循环冗余码

CRC循环冗余码是在通信领域经常用来用作检错编码的方式。

计算冗余码

我们可以通过以下步骤计算出冗余码:
(1)加0:在要发送的数据后加r个0,其中r为生成多项式G(x)的阶为(一般来说,多项式为N位,则阶为N-1);
(2)模2除法:加0后的数据除以生成多项式G(x),则余数就是所求的冗余码/FCS/CRC检验码的比特序列(模2除法的本质就是异或运算)。

最终我们要发送的数据就是:(0扩展)原数据(左移r位)+FCS。
简单来说就是我们将计算出的余数补在原数据的后面,即可得到要发送的数据。

  • 例题
    要发送的数据是1101 0110 11,采用CRC校验,生成多项式是10011,那么最终发送的数据是多少?

解:
(1)加0:
生成多项式为5位,则阶为4位。
(加0后的数据位1101 0110 11 0000)
(2)模2除法:
计网笔记:CRC循环冗余码_第1张图片
所以最终的要发送的数据为:
1101 0110 11 1110

出错判断

在接收端将收到的每一个帧都除以在发送时使用的生成多项式,然后检查得到的余数R,若:
(1)R=0,发送数据没有出错;
(2)R≠0,判定接收到的数据是错误的(只是有检错功能,却没有纠错功能,无法确定到出错的位数),直接丢弃。

  • 注意:
    在数据链路层使用CRC循环冗余码的差错检验技术,只能做到对发送帧的无比特差错接收,还不能做到可靠传输(数据链路层发送端发送什么,接收端就收到什么)。

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