计算机网络:数据链路层之差错控制、奇偶校验码、CRC循环冗余码、海明码

news2024/11/26 18:48:04

带你度过期末难关

文章目录
  • 一、差错控制
    • 1、冗余编码
    • 2、编码VS编码
  • 二、检错编码
    • 1、奇偶校验码
    • 2、CRC循环冗余码
  • 三、纠错编码————海明码
    • 海明距离
    • 1、确定校验码位数r
    • 2、确定校验码和数据的位置
    • 3、求出校验码的值
    • 4、检错并纠错
      • 纠错的方法一:
      • 纠错方法二:
  • 总结


一、差错控制

概括来说,传输中的差错都是由于噪声引起的。

全局性
1.由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在的。
解决办法:提高信噪比来减少或避免干扰。(对传感器下手)

局部性
⒉.外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因。
解决办法:通常利用编码技术来解决。

差错

  • 位错:【比特位出错,1变成0,0变成1。】
  • 帧错:
    • 丢失:收到[#1]-[#3]
    • 重复:收到[#1]-[#2]-[#2]-[#3]
    • 失序:收到[#1]-[#3]-[#2]

链路层为网络层提供服务:

  • 无确认无连接服务:通信质量好,有线传输链路
  • 有确认无连接服务:通信质量差的无线传输链路
  • 有确认面向连接服务:通信质量差的无线传输链路

1、冗余编码

在数据发送之前,先按某种关系附加上一定的冗余位,构成一个符合某一规则的码字后再发送。当要发送的有效数据变化时,相应的冗余位也随之变化,使码字遵从不变的规则。接收端根据收到码字是否仍符合原规则,从而判断是否出错。

2、编码VS编码


数据链路层编码和物理层的数据编码与调制不同。物理层编码针对的是单个比特,解决传输过程中比特的同步等问题,如曼彻斯特编码。而数据链路层的编码针对的是一组比特,它通过冗余码的技术实现一组二进制比特串在传输过程是否出现了差错。

二、检错编码

1、奇偶校验码

奇校验:原始码流+校验位 总共有奇数个1

偶校验:原始码流+校验位 总共有偶数个1

校验位只有1个


奇偶校验码特点:
只能检查出奇数个比特错误,检错能力为50%。

2、CRC循环冗余码


例题:
要发送的数据是1101011011,采用CRC校验,生成多项式是10011,那么最终发送的数据应该是?

最终发送的数据:要发送的数据+帧检验序列FCS

计算冗余码:
(1)加0:假设生成多项式G(x)的阶为r,则加r个0。
(2)模2除法:数据加O后除以多项式,余数为冗余码/FCS/CRC检验码的比特序列。


其中生成多项式是10011,而10011可以看成1×X^4 +0×X^3 +0×X^2 +1×X^1 +1×X^0。
可以看出最高阶是4阶,所以就需要在发送的数据(1101011011)后补4个0
计算过程如下图所示:
计算得出余数/FCS/冗余码:1110
那么最终发送的数据就是发送的数据+余数:11010110111110

注意:
冗余码的位数是生成多项式的最高阶数,如果你算的冗余码位数不够,需要在前面补0。(如果最高阶是4阶,冗余码计算出来的结果是11,那么冗余码应该是0011)

接收端检错过程

把收到的每一个帧都除以同样的除数,然后检查得到的余数R。

1.余数为0,判定这个帧没有差错,接受。
⒉余数为不为0,判定这个帧有差错(无法确定到位),丢弃。

FCS的生成以及接收端CRC检验都是由硬件实现,处理很迅速,因此不会延误数据的传输。

三、纠错编码————海明码

海明码:发现双比特错,纠正单比特错。
工作原理:动一发而牵全身

工作流程:

海明距离

两个合法编码(码字)的对应比特取值不同的比特数称为这两个码字的海明距离(码距),一个有效编码集中,任意两个合法编码(码字)的海明距离的最小值称为该编码集的海明距离(码距)

说白了就是两个编码之间的不同位有几个就是他们之间的海明距离。

下面不需要自己推导:

  • 如果想通过海明码去检验d位错的话,那么需要的码距是d+1位
  • 如果想通过海明码去纠正d位错的话,那么需要的码距是2d+1位

1、确定校验码位数r

数据/信息有m位,冗余码/校验码有r位

校验码一共有2^r种取值

海明不等式:2^r >=m+r+1

例题1:
要发送的数据: D=1100,求出校验码位数
解答:
可以得出数据位数m=4,满足不等式的最小r为3,即2^3>=4+3+1
也就是D=1100的海明码应该有4+3=7位,其中原数据4位,校验码3位。

例题2:
要发送的数据: D=101101,求出校验码位数
解答:
数据的位数m=6,满足不等式的最小r为4,即2^4>=6+4+1
也就是D=101101的海明码应该有6+4=10位,其中原数据6位,校验码4位。

2、确定校验码和数据的位置

例题1:
假设D=1100,校验码3位
校验码放在序号为2^n的位置,数据按序填上


然后再将1100依次填入空白处


例题2:
假设D=101101,校验码4位

3、求出校验码的值

例题1:
假设D=1100


然后用通配符管制


4号校验码负责4,5,6,7的校验
2号校验码负责2,3,6,7的校验
1号校验码负责1,3,5,7的校验

然后采用偶校验(具体采用偶校验还是奇校验题目中会给你说明)得出结果:


偶校验讲解:

  • 4号校验4567,其中567对应的值为011,进行偶校验时,必须有偶数个1,所以4为0。
  • 2号校验2367,其中367对应的值为011,进行偶校验时,必须有偶数个1,所以2为0。
  • 1号校验1357,其中357对应的值为001,进行偶校验时,必须有偶数个1,所以1为1。

故1100的海明码为:1000011

例题2:
假设D=101101
故101101的海明码为0010011101

4、检错并纠错

假设D=1100
若接收方收到的数据为1110001,(7到1位)检错类似奇偶校验

纠错的方法一:


1,3,5,7出错了,4,5,6,7出错了,得出5和7可能是错的,再由2,3,6,7是正确的排除7,所以错误的是5.

文字描述:找到不满足奇/偶校验的分组取交集,并与符合校验的分组取差集。

纠错方法二:


首先列出X1、X2、X4的校验结果,然后通过自身偶校验得出X1、X2、X4的结果为101,得出十进制是5,所以第五位错了。


总结

以上就是数据链路层之差错控制、奇偶校验码、CRC循环冗余码、海明码的相关知识点,希望对你有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1300987.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

正则表达式(9):扩展正则表达式

正则表达式(9):扩展正则表达式 小结 本博文转载自 前文中一直在说,在Linux中,正则表达式可以分为”基本正则表达式”和”扩展正则表达式”。 我们已经认识了”基本正则表达式”,现在,我们来认…

想学编程,但不知道从哪里学起,应该怎么办?

怎样学习任何一种编程语言 我将教你怎样学习任何一种你将来可能要学习的编程语言。本书的章节是基于我和很多程序员学习编程的经历组织的,下面是我通常遵循的流程。 1.找到关于这种编程语言的书或介绍性读物。 2.通读这本书,把…

基于深度学习的超分辨率图像技术一览

超分辨率(Super-Resolution)即通过硬件或软件的方法提高原有图像的分辨率,图像超分辨率是计算机视觉和图像处理领域一个非常重要的研究问题,在医疗图像分析、生物特征识别、视频监控与安全等实际场景中有着广泛的应用。 SR取得了显著进步。一般可以将现有…

30 张图解 HTTP 常见的面试题

前言 在面试过程中,HTTP 被提问的概率还是比较高的 我搜集了 5 大类 HTTP 面试常问的题目,同时这 5 大类题跟 HTTP 的发展和演变关联性是比较大的,通过问答 图解的形式由浅入深的方式帮助大家进一步的学习和理解 HTTP 协议。 HTTP 基本概…

持续集成交付CICD:使用Maven命令上传Nexus制品

目录 一、实验 1.使用Maven命令上传Nexus制品(第一种方式) 2.使用Maven命令上传Nexus制品(第二种方式) 一、实验 1.使用Maven命令上传Nexus制品(第一种方式) (1)指定一个 hoste…

Blender学习--制作带骨骼动画的机器人

1. 首先创建一个机器人模型 时间关系,这部分步骤有时间补充 2. 然后为机器人创建一副骨架 时间关系,这部分步骤有时间补充 3.骨骼绑定 切换到物体模式,选中机器人头部,Shift选中骨骼,切换到姿态模式,&am…

zcms企业官网建站系统源码搭建-支持页面自定义

1.支持mysql,sqlite,access三种数据库。 2.模板和标签与asp版的zzzcms通用。 3.asp版的zzzcms的access数据库可直接使用。 4.支持手机站。 (增删改查不做描述): 网站信息 名称,logo,微信&…

记录一次云原生线上服务数据迁移全过程

文章目录 背景迁移方案调研迁移过程服务监控脚本定时任务暂停本地副本服务启动,在线服务下线MySQL 数据迁移Mongo 数据迁移切换新数据库 ip 本地服务启动数据库连接验证服务打包部署服务重启前端恢复正常监控脚本定时任务启动旧服务器器容器关闭 迁移总结 背景 校园…

pytorch一致数据增强

分割任务对 image 做(某些)transform 时,要对 label(segmentation mask)也做对应的 transform,如 Resize、RandomRotation 等。如果对 image、label 分别用 transform 处理一遍,则涉及随机操作的…

基于深度学习的yolov7植物病虫害识别及防治系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介简介YOLOv7 系统特性工作流程 二、功能三、系统四. 总结 一项目简介 # YOLOv7植物病虫害识别及防治系统介绍 简介 该系统基于深度学习技术,采…

【KCC@南京】KCC南京“数字经济-开源行”活动回顾录

11月26日,由KCC南京、中科南京软件研究所、傲空间、PowerData联合主办的 KCC南京“数字经济-开源行” 的活动已圆满结束。此次活动,3 场主题研讨,11 场分享,现场参会人数 60,线上直播观看 3000,各地小伙伴从…

抓取真实浏览器设备指纹fingerprint写入cookie方案

一个关于抓取真实浏览器设备指纹写入cookie方案,用户访问页面获取到用户设备生成指纹id,通过js把指纹存入cookie,然后用php进行获取cookie存的指纹值到后台。 用途:追踪用户设备,防恶意注册,防恶意采集 浏…

1827_ChibiOS中OSLIB的邮箱机制

全部学习汇总: GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com) 1. 邮箱其实是一个环形队列; 2. 使用场景上,邮箱主要是用来实现异步单向的一些消息或者数据处理的。在处理机制上&#xff…

C语言 预处理 + 条件编译宏 + 井号运算符

预处理阶段任务 预处理指令 条件编译宏 条件编译宏的作用在于根据编译时的条件进行代码的选择性编译,从而实现不同环境、不同配置或不同功能的编译版本。 这可以用于实现调试模式和发布模式的切换,平台适配,以及选择性地编译不同的功能模块等…

【Spring 基础】00 入门指南

【Spring 基础】00 入门指南 文章目录 【Spring 基础】00 入门指南1.简介2.概念1)控制反转(IoC)2)依赖注入(DI) 3.核心模块1)Spring Core2)Spring AOP3)Spring MVC4&…

组件之间传值

目录 1:组件中的关系 2:父向子传值 3:子组件向父组件共享数据 4:兄弟组件数据共享 1:组件中的关系 在项目中使用到的组件关系最常用两种是,父子关系,兄弟关系 例如A组件使用B组件或者C组件…

大师学SwiftUI第18章Part2 - 存储图片和自定义相机

存储图片 在前面的示例中,我们在屏幕上展示了图片,但也可以将其存储到文件或数据库中。另外有时使用相机将照片存储到设备的相册薄里会很有用,这样可供其它应用访问。UIKit框架提供了如下两个保存图片和视频的函数。 UIImageWriteToSavedPh…

CCF刷题记录 -- 202305-2:矩阵运算 --python解法

2023.12.7 主要算法 矩阵置换矩阵相乘 满分注意点 运算顺序,利用了矩阵运算法则中的(A*B)*c A*(B*C) # 矩阵置换 def zhihuan(a):b[]for i in range(d):c []for j in range(n):c.append(a[j][i])b.append(c)return b# 矩阵相乘 def ju_zh…

C# WPF上位机开发(通讯协议的编写)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 作为上位机,它很重要的一个部分就是需要和外面的设备进行数据沟通的。很多时候,也就是在这个沟通的过程当中,上…

SuperMap iObject.NET三维场景拖拽框选实现详解及完整源代码(一)——环境准备及项目配置

作者:超图研究院技术支持中心-于丁1 SuperMap iObject.NET三维场景拖拽框选实现详解及完整源代码(一)——环境准备及项目配置   三维场景框选是一种在三维空间中进行选择和操作的功能,它可以让使用者通过鼠标拖动来创建一个矩形…