当前位置: 首页 > news >正文

CRC 循环冗余检验【计网必考】

CRC 循环冗余检验作为一个重点,也是数据链路层必考的一个考点,所以我把差错检测单独拿出来分析一起看一下。总结不易,一个简单的攒,Thanks♪(・ω・)ノ

目录

一、介绍及工作原理

二、校验计算过程


一、介绍及工作原理

循环冗余校验 CRC 是数据链路层的一种差错控制技术。在数据的传输过程中可能会产生比特错误(1 可能变成 0,0 可能变成 1),为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用相应的差错检测机制。

在数据链路层传送的帧中,广泛使用了 CRC 技术。

在发送端,先把数据划分为组,假定每组 k 个比特;假设待传送的一组数据 M = 101001(现在 k = 6),我们在 M 后面再添加 n 位供差错检验用的冗余码一起发送。

大致计算流程如下:

① 用 2 进制的模 2 运算进行 2 ^ n 乘 M 的运算,这相当于在 M 后面添加了 n 个 0,我们设它为 M2;

② 求冗余码,用得到的 M2 除以事先选定好的长度为(n + 1)位的 P,得出的余数为 R,R 取 n 位;

③ 最后用 R 替换 M2 中最后 n 个 0 的位置,即可得出最终应传送的数据。

二、校验计算过程

已知多项式为 x^6 + x^4 + x^2 + x +1,待传送的数据串为 M = 1101011011。在 M 后面添加供差错检测用的 n 位冗余码一起发送。

第一步,确定除数 P。关于多项式,只要是 CRC 算法就离不开多项式算术,使用多项式算术是为了在二进制计算时无需考虑进位问题,CRC 校验中,多项式可以表示为,ax^5 + bx^4 + cx^3 + dx^2 + ex + 1*x^0,而 CRC 用到的除数 P,正是由多项式的各项系数组成。

展开多项式,5 次方和 3 次方系数都为 0,则 CRC 除数为 1010111

所以为了得到除数,我们只需要观察简写式列出的项即可,为了避免出错,可以从右往左写,这个看个人习惯。

第二步,得到 M2。我们要在原数据串末端加 0,0 的数量由多项式决定,具体来说,多项式的阶数是多少就加几个 0。

例如多项式 x^6 + x^4 + x^2 + x +1,该多项式的最高次项为 6 次项,所以在已知的原数据串末端加 6 个 0,即被除数 1101011011000000

第三步,接下来就可以计算校验和了。

① 将数据串的第一个 1 与除数左对齐,按位进行异或操作

注:此过程中的计算,均不产生进位,采用相同得 0,相异的 1 的规则。

② 将未处理的数据搬下来作为新的数据串,重复操作

 

 注:切记将数据串的第一个 1 与除数左对齐,头部的 0 直接跳过。

一直重复以上操作,直到所有的数据都处理过为止。所得到的结果即是校验和,也就是冗余码,111011(长度为除数-1)

第四步,将校验和加在数据项之后,便是带有 CRC 校验的数据,即最终的结果,1101011011111011。

有一处需要注意的地方是,当最后结果的有效位数较少时,最后拼接校验和的时候,不要漏掉前面的 0 ,具体来讲,所拼接的校验和的长度应与之前加 0 的个数相等。 

相关文章:

  • 《Nuitka打包实战指南》实战打包Playwright
  • 搜题接口系统
  • 极客时间Kafka - 05 Kafka 生产者发送消息可靠性保障|幂等生产者和事务生产者
  • Springboot 使用 Mybatis 启动失败排查定位
  • java-net-php-python-springbot学生奖惩管理系统计算机毕业设计程序
  • 国美被曝出员工讨债,与管理层起风波 黄光裕“廉颇老矣”
  • 【数据库系统】视图
  • Java关于普通查找和二分查找
  • 自定义网页中被选中文本的样式 CSS selection
  • 第五章 使用管理门户监控 - 监控日志
  • DBCO-ICG-disulfo_二磺酸-吲哚菁绿-二苯并环辛炔_disulfo-ICG-DBCO
  • 数据分享|R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据...
  • 【Pytorch】第 2 章 :马尔可夫决策过程和动态规划
  • 数据库01_内存分页管理_分段管理_设备管理_IO处理_索引文件结构_文件目录_位示图---软考高级系统架构师008
  • 虹科分享|基于CAN/CAN FD技术的机器狗是什么样的?
  • [附源码]JAVA毕业设计时间管理系统(系统+LW)
  • 【LeetCode_字符串_逻辑分析】9. 回文数
  • 文华财经期货量化策略抄底准确率高的指标公式,逃顶抄底精准共振起涨信号幅图指标
  • 【JDBC】----封装工具类和ORM
  • java-net-php-python-springboot舞房管理系统演示录像0512计算机毕业设计程序
  • 电加热油锅炉工作原理_电加热导油
  • 大型电蒸汽锅炉_工业电阻炉
  • 燃气蒸汽锅炉的分类_大连生物质蒸汽锅炉
  • 天津市维修锅炉_锅炉汽化处理方法
  • 蒸汽汽锅炉厂家_延安锅炉厂家
  • 山西热水锅炉厂家_酒店热水 锅炉
  • 蒸汽锅炉生产厂家_燃油蒸汽发生器
  • 燃煤锅炉烧热水_张家口 淘汰取缔燃煤锅炉
  • 生物质锅炉_炉
  • 锅炉天然气_天燃气热风炉