数据链路层CRC(循环冗余码)差错校验码详解

数据链路层CRC(循环冗余码)差错校验码详解

CRC差错校验码是数据链路层用来进行差错校验的一个码。

CRC编码过程

假设要编码的数据D,有d个比特,发送节点要将它发送给接收节点。发送方和接收方要先协商一个r + 1比特模式,成为生成多项式。我们将其表示为G。我们将要求G的最高有效位(最左边)的比特是1。

我们要有一个数据D,比如 1001
这个数据有d个比特,也就是4个比特
需要附加 r 个比特作为校验码 R
编码过后会变成数据会变成D + R
数据有d + r个比特
使得得到的数据D+R进行模2运算恰好能被G整除

在这里插入图片描述

CRC差错检测过程

接收方用G去除接收到的D+R数据,如果余数为非0,则有差错,如果余数为0,则无差错

CRC计算

所有CRC计算采用模2算术来做,在加法中不进位,在减法中不借位。这意味着加法和减法是相同的,而且这两种操作等价于异或(XOR)操作。

1011 XOR 0101 = 1110

异或操作:不同的为1,相同为0。也就是0 XOR 0 = 0,1 XOR 1 = 0,0 XOR 1 = 1。

乘法和除法是相同的。

给定D 和 R, D * 2r XOR R就等于 D + R数据。

如何计算R

我们要求出R使得对于n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值