文章目录

  • 一、为什么引入循环冗余校验CRC - 数据链路层的差错控制机制
  • 二、CRC的原理
  • 参考链接

一、为什么引入循环冗余校验CRC - 数据链路层的差错控制机制

我们都知道,物理层在链路上传输位流(0,1比特)。但是,现实的通信链路都不会是理想的。这就是说,比特在传输的过程中(由于有噪音等)可能会产生差错:1可能会变成0,0可能会变成1,这就叫做比特差错。

因此,为了保证数据传输的可靠性,数据链路层会对物理层(只负责传输,不做任何改动的传输机器)传输过来的数据进行差错检测(数据链路层的职责之一:差错控制)。增加数据可靠性,将物理层传输过来的数据无差错地传递给上层(网络层)。

目前在数据链路层广泛使用了 循环冗余检测CRC 的比特差错检测技术。


二、CRC的原理

CRC运算实际上就是在数据长为 k 的后面添加供差错检测用的 n 位冗余码,然后构成帧 k+n 位发送出去。

首先来介绍几个概念:

  1. 模2运算:实际上是按位异或运算,即相同为0,相异为1,也就是不考虑进位、借位的二进制加减运算。如:1111+1010 = 0101
  2. FCS:其实就是冗余码,帧检验序列(Frame Check Sequence)
  3. 生成多项式:其实就是除数,比如下面将要用到的除数 p = 1101

比如我们需要传的数据为101001,用 k 记录一共有多少位,即 k=6 。然后 CRC 运算需要把待传的数据的末尾加上用于检测的 n 位冗余码,可以简单的理解为在数据后面加上 n 个 0。假设 n=3 , 这样循环冗余检验的被除数101001000就得到了。除数是通信双方商定好的,现在一般使用的方式是用多项式来表示除数,比如P(x)=x3+x2+1,就得到除数 P=1101。现在就可以开始进行检验了,注意除数 P 的位数等于 n+1。运算的方法和除法类似,只是相减变成了异或而已。经过运算,得到了余数为 001,它被称为帧检验序列 FCS。截至现在做的一切的运算,都只是在发送端进行的。为了检验帧是否无比特差错接收了,是在接收端检验的。计算出的帧检验序列 FCS 会附加在帧的尾部一起发送。

接收端接收到后,会把 FCS 取出,添加到数据部分的末尾,得到除数 101001001,再次和除数 P=1101 相除,如果得到的余数等于 0,那么就证明此次传输是无比特错误传输的,就接受。如果余数不等于 0,那就证明这个帧有差错,就丢弃。无比特传输和可靠传输有很大的不同,比如发送端发送了 5 个帧,但是接收端只接收到了 3 个帧,此时进行循环冗余检验时,收到的 3 个帧检验合格了,这并不代表此次传输时无差错的,相反,是出了差错的,只是循环冗余检测不出来而已。

CRC是一种检错方法,而 FCS 是添加在数据后面的冗余码,两者的概念完全不同。


参考链接

  1. 循环冗余检验CRC原理
  2. 循环冗余检验

【计算机网络】数据链路层的差错控制 - 循环冗余校验(CRC)相关推荐

  1. 2.1.5-3 循环冗余校验(CRC)码

    想必是雪乞春华 (҂◔∀◐҂)☆万圣节快乐♬☆◥(ฅº₩ºฅ)◤ 不给糖就捣蛋 ☆(●⁰౪⁰●)没钱(*^3^)/-☆ 中午我们要学习最后一种校验码叫做循环冗余校验码英文缩写叫CrC码,这给出了他的英 ...

  2. [2021.07.25更新]循环冗余校验(CRC)的MATLAB实现

    欢迎同步关注公众号[逆向通信猿] CRC校验(循环冗余校验) 在计算CRC校验的时候,发现一个网站如下 http://www.ip33.com/crc.html 于是,想自己动手实现该网站计算CRC校 ...

  3. 循环冗余校验-CRC

    一.简介 CRC的全称为Cyclic Redundancy Check,中文名称为循环冗余校验.它是一类重要的线性分组码,编码和解码方法简单,检错和纠错能力强,在通信领域广泛地用于实现差错控制.实际上 ...

  4. 计算机网络—数据链路层的差错控制

    建议将思维导图保存下来观看,或者点击这里在线观看

  5. CRC循环冗余校验(计算机网络)

    CRC循环冗余校验 CRC差错检验的过程 提要 CRC的具体过程 例题详解 CRC差错检验的过程 提要  数据在链路层进行传输时,为了保证接收到的数据比特流是准确无误的,会采用CRC循环冗余校验的方式 ...

  6. crc循环冗余校验 php,crc 循环冗余校验

    --- title: crc 循环冗余校验 date: 2018-09-26 updated: 2018-10-06 --- # crc 循环冗余校验 CRC(Cyclic Redundancy Ch ...

  7. 计算机网络-数据链路层(超级无敌详细)

    目录 1.数据链路层概述 概述 数据链路层使用的信道 三个重要问题 2.封装成帧 前导码 透明传输 解决透明传输问题 3.差错检测 奇偶校验 循环冗余校验CRC 4.可靠传输 三种可靠协议 停止-等待 ...

  8. 计算机网络——数据链路层介质访问控制

    文章目录 前言 一.介质访问控制概述 二.信道划分介质访问控制 1.频分多路复用(FDM) 2.时分多路复用(TDM) 3.波分多路复用(WDM) 4.码分多路复用(CDM) 三.随机访问介质访问控制 ...

  9. 终于弄懂 CRC 循环冗余校验 辽

    概述 CRC 即 Cyclic Redundancy Check 的缩写 CRC 循环冗余校验属于检错码,只能检测出现了错误,但无法纠正错误. 与CRC循环冗余校验类似的,还有奇/偶校验,但是 CRC ...

最新文章

  1. JavaScript面向对象编程
  2. 高效使用Bitmaps(二) 后台加载Bitmap
  3. Leetcode--424. 替换后的最长重复字符
  4. Convolutional Networks(要点)
  5. matlab仿真电子秤,基于单片机的电子秤设计
  6. 新计算机 安装win2000,虚拟机安装Windows 2000超详细教程
  7. 使用ExtendSim进行水管理、可持续性和环境仿真建模
  8. ADB 常用技巧 汇总
  9. PART 1:基于大数据人才岗位招聘情况对数据进行清洗、初步分析
  10. 【蓝桥杯真题训练 day14】今日四道真题全解析
  11. Android热修复-Robust
  12. java批量pdf压缩代码_怎么批量压缩PDF文档?迅捷PDF转换器帮你解决难题!
  13. 多x多y的origin图_骏丰业主装修美图大赏!白+X的组合变形,能有多高级?
  14. 【表面缺陷检测】基于yolov5的布匹表面缺陷检测(附代码和数据集)
  15. 横跨十年CPU架构回顾
  16. JavaScript计时器制作进度条
  17. 汽车电子控制器的硬件测试
  18. 命令行操作MySQL - 《表索引》汇总
  19. 揭秘懒MM的瘦身食谱之真相
  20. 在 Umi 中打包与加载自定义字体

热门文章

  1. 敏捷观点和态度-《敏捷项目管理》读后感
  2. 都2023年了,你如果还不知道这18个C语言入门经典程序就亏了
  3. 数款二次元wordpress主题,你值得拥有!
  4. 【JAVA】 容纳对象 Set
  5. 转载:摄影相关照片(相纸)尺寸大…
  6. Linux内存手动清理释放方法
  7. 咸鱼成长故事简介yyds
  8. 主流图数据库对比,Neo4j、ArangoDB、OrientDB、JanusGraph、HugeGraph
  9. excel排序没有 扩展选定区域
  10. 双机热备、双机互备、双机双工之间的区别