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

【计算机网络篇】数据链路层(3)差错检测

文章目录

  • 🥚误码
  • 🍔两种常见的检错技术
    • ⭐奇偶校验
    • ⭐循环冗余校验
      • 🎈例子

在这里插入图片描述

🥚误码

误码首先介绍误码的相关概念
在这里插入图片描述

🍔两种常见的检错技术

⭐奇偶校验

奇校验是在待发送的数据后面添加1个校验位,使得添加该校验位后的整个数据中比特1的个数奇数
偶校验是在待发送的数据后面添加1个校验位,使得添加该校验位后的整个数据中比特1的个数偶数


我们来看下面的例子

奇校验
在这里插入图片描述
偶校验
在这里插入图片描述

于是我们得到了下面的结论

在所传输的数据中,如果有奇数个位发生误码,则所包含比特1的数量的奇偶性会发生改变,可以检测出误码。
在所传输的数据中,如果有偶数个位发生误码,则所包含比特1的数量的奇偶性不会发生改变,无法检测出误码(漏检)

⭐循环冗余校验

数据链路层广泛使用漏检率极低的循环冗余校验(Cyclic Redundancy Check,CRC)检错技术。
循环冗余校验CRC的基本思想:

收发双方约定好一个生成多项式G(X)
发送方基于待发送的数据和生成多项式G(X),计算出差错检测码(冗余码),将冗余码添加到待发送数据的后面一起传输。
接收方收到数据和冗余码后,通过生成多项式G(X)来计算收到的数据和冗余码是否产生了误码。

发送方CRC操作
如下图所示
在这里插入图片描述进行除法,将待发送的数据作为被除数的一部分,后面添加生成多项式最高次个0以构成被除数。
生成多项式各项系数构成的比特串作为除数,进行除法,得到商和余数
在这里插入图片描述

将余数添加到发送数据的后面,一起发送。

注意:
商仅作为标记,防止计算过程对错位
余数的长度应与生成多项式最高次数相同,作为冗余码
这里的除法是指:二进制模2除法,二进制模2除法既不向上进位,也不比较除数和被除数的对应位数值的大小,只要以相同位数进行相除即可,相当于对应位进行逻辑异或运算

接收方CRC操作
如下图所示
与发送方类似,也要进行除法。
收到的数据和冗余码作为被除数,生成多项式各项系数构成的比特串作为除数,进行除法,得到商和余数。
如果余数为0,就可判定数据和冗余码中没有出现误码,否则出现了误码在这里插入图片描述生成多项式举例
在这里插入图片描述

🎈例子

发送方
在这里插入图片描述

将冗余码添加到待发送数据的后面进行发送
在这里插入图片描述
接收方
在这里插入图片描述

注意:在这里插入图片描述

数据链路层的差错检测通常通过循环冗余检验(CRC)来实现。CRC是一种基于多项式除法的技术,用于对数据帧进行检验,以确定数据在传输过程中是否发生了错误。

在数据链路层,发送方在发送数据帧之前会计算出一个CRC码,并将其附加到数据帧的尾部。接收方在接收数据帧后,也会计算接收到的数据帧中的CRC码,然后与接收到的CRC码进行比较。如果两者不一致,则表明数据帧在传输过程中发生了错误。

通过CRC的差错检测,数据链路层能够及时发现数据帧中的比特错误,从而提高数据传输的可靠性。

http://www.lryc.cn/news/324278.html

相关文章:

  • 软件配置管理计划
  • 嵌入式备考错题汇总
  • 38 mars3d 对接地图图层 绘制点线面员
  • 什么是Webhook 和 HTTP Endpoint?
  • 小程序跨端组件库 Mpx-cube-ui 开源:助力高效业务开发与主题定制
  • GDC期间LayaAir启动全球化战略
  • 人工智能之Tensorflow批标准化
  • 自动化的免下车服务——银行、餐厅、快餐店、杂货店
  • Git常用指令总结
  • 水果软件FL Studio 21 for mac 21.2.3.3586破解版的最新版本2024介绍安装
  • 【保姆级】前端使用node.js基础教程
  • xilinx的高速接口构成原理和连接结构
  • git 上传文件夹至远端仓库的方法
  • 【鸿蒙系统】 ---OpenHarmony加快本地编译(二)
  • centos配置natapp 自动配置
  • sell脚本多行合成一行
  • 部署prometheus 监控k8s集群
  • 两个基本功不足导致的bug
  • 【算法每日一练]-图论(保姆级教程篇16 树的重心 树的直径)#树的直径 #会议 #医院设置
  • Qt播放音乐代码示例
  • 多线程应用中的性能优化:创建合适的线程数
  • 本地运行环境工具UPUPWANK(win)和Navicat数据库管理工具
  • LeetCode 每日一题 2024/3/18-2024/3/24
  • Unity 鼠标拖拽3D物体跟随移动的方法
  • 数据分析-Pandas分类数据的类别排序和顺序
  • 利用 Claude 3 on Amazon Bedrock 和 Streamlit 的“终极组合”,开发智能对话体验
  • Golang基础 Label标签与goto跳转
  • 二进制王国(蓝桥杯备赛)【sort/cmp的灵活应用】
  • 活用C语言之宏定义应用大全
  • 【源码】I.MX6ULL移植OpenCV