CRC循环冗余校验
CRC差错检验的过程
提要
数据在链路层进行传输时,为了保证接收到的数据比特流是准确无误的,会采用CRC循环冗余校验的方式进行校验,CRC能够保证接收到的数据比特流是正确的,但CRC也并非可靠传输,这是因为CRC不能保证丢失、重复或失序等数据的传输。下面,让我们来了解一下CRC校验的具体过程吧!
本篇章,只讲对CRC校验的运算过程,不涉及原理,通俗易懂,请放心大胆食用~
CRC的具体过程
通过CRC进行差错检验,最重要的两个步骤,一是求循环冗余码,二是进行检验,这两个步骤的大致内容是相同的,所以在这里我们只拿求循环冗余校验码的过程做例子进行相关分析。
- 大概流程如下,详细的过程结合后面的例题进行讨论。
- 通过生成多项式得到除数P,P的位数为n+1(n为生成多项式的最高次幂)
- 对待传送数据M进行模2运算,即在M后添加n个0,待传数据现在为M’
- 求冗余码:用M’除以P,得出余数R,R取n位
- 将得出的R添加在M’中最后n个0的位置
- 即可得出最终应传送的数据
注:此过程中的计算,均不产生进位,采用相同得0,相异得1的规则
例题详解
问题:要发送的数据序列为101011,设约定的生成多项式P(x)=x^4+x+1,求最终要发送的数据比特流是什么?
1.根据生成多项式求除数,先把多项式展开,然后依次找对应的x的系数,依次排列下来就所求的除数,除数位数为n+1位
2.对待传数据进行模2运算,即在原数据后添加n个0
3.用上一步得到的M’除以除数P,得到余数R,此过程书写上有些许复杂,详细如图
图片可能较为杂乱,请耐心观看哦,这一步很重要!
4.将求得的余数R添加到被除数M’后,即可得到待发送的数据比特率啦
关于CRC差错检验的过程到这里就介绍完了,如果有什么疑问不明白的地方,欢迎在评论区留言讨论。
制作不易,如果觉得对你有帮助的话,请留下宝贵的点赞或收藏吧~你们的支持就是我最大的动力!