【软考中级·网络工程师】校验码差错控制

news2024/11/24 5:05:37

差错控制🍉

        无论通信系统如何可靠,都不能做到完美无缺。因此,必须考虑怎样发现和纠正信号传输重的差错。通信过程中出现的差错大致可以分为两类:

  • 一类是由热噪声引起的随机错误;热噪声:一种由电子的热运动产生的,热噪声时刻存在,具有很宽的频谱,且幅度较小。通信线路的信噪比越高,热噪声引起的差错就越少。这种差错具有随机性,影响个别位,称其为随机性差错
  • 另一类是由冲击噪声引起的突发错误。冲击噪声:是一种外界的电磁干扰,例如打雷闪电时产生的电磁干扰电焊机引起的电压波动等。冲击噪声持续的时间短而幅度大,往往引起一个位串出错。根据它的特点,称其为突发性差错

突发性差错影响局部,而随机性差错总是断续存在,影响全局。所以要尽量提高通信设备的信噪比,以满足要求的差错率。此外,要进一步提高传输质量,就需要采用有效的差错控制办法,常见的有:奇偶校验方法海明码检验方法循环冗余校验方法(CRC),在介绍他们之前必要的前缀知识点:

  • 检错:接收方知道有差错发生,但不知道是怎样的差错,向发送方请求重传。
  • 纠错:接收方知道有差错发生,而且知道是怎样差错。
  • 差错控制原理:传输k位,加入r位冗余(如何加入取决于使用什么校验算法),接收方收到进行计算比较。

检错码(奇偶校验法)👑

        奇偶校验是最常用的、简单的数据验证方法,它通过加入一个“校验位”来检查数据传输中是否出现了错误。在奇偶校验中,将要传输的数据被分成固定长度的几个组(比如每8位分为一组),在每组的末尾增加一个“奇偶校验位”,使得每组中的1位数的个数为奇数或偶数。在接收端,根据接收到的数据,在每组的数据中计算校验位的奇偶性,如果发现出现了不一致的情况,则说明数据传输出现了错误。例如:在7位ASCll码后增加一位,使码字中1的个数变成奇数(奇校验:1011 010 + [1])或偶数(偶校验:1011 010 + [0])。

        缺点:只能对付少量的随机性错误。🎈

为了能检验突发性的位串出错,可以使用校验和的办法。这种方法把数据块中的每个字节当作一个二进制整数。在发送端发送过程中按模256相加。数据块发送完成后,把得到的和作为校验字节再发送出去。接收端在接受过程中对接受的数据块进行同样的加法运算,发送端数据块加完后用自己得到的校验和接收端校验和对比,从而发现是否出错。

        有一种简单的实现方法:

在校验字节发送前,对累加器中的数取2的补码。这样,如果不出错,接收端在加完整个数据块以及校验和后累加器中是0。这种方法的好处是由于进位的关系,一个错误可以影响到更高位,从而使出错位对校验字节的影响扩大了。可以粗略的认为,随机的突发性错误校验和的影响也是随机的。出现突发错误而得到正确的校验字节概率是1/256,于是就有255:1的机会能检查出任何错误。


海明码👑

        海明码不仅可以检错还可以纠错,想要理解海明码,必备的知识点:

海明距离🎈:一个码字要变成另一个码字时必须改变的最小位数,另一种解释:两个码字之间不用的比特数。把1011 01 00 变成 1011 01 11,故需要把最后两位的00变成11,海明距离则为2。

海明码原理🎈:在数据中间加入几个校验码,码距均匀拉大,当某一位出错,会引起几个校验位的值发生变化。

海明不等式🍉:校验码个数为k,可以表示2**k个信息,1个信息用来表示“没有错误”,其余2**k-1个表示数据中存在错误,如果满足:gif.latex?%5B1_%7B%281%29%7D%2C%5B%5D_%7B%282%29%7D%2C%201_%7B%283%29%7D%2C%20%5B%5D_%7B%284%29%7D%2C%200_%7B%285%29%7D%2C%201_%7B%286%29%7D%2C%201_%7B%287%29%7D%2C%20%5B%5D_%7B%288%29%29%7D%2C%200_%7B%289%29%7D%2C%201_%7B%2810%29%29%7D%2C%201_%7B%2811%29%29%7D%5D

gif.latex?2%5E%7Bk%7D-1%20%5Cgeq%20m%20+%20k

 (m为信息位,m+k为编码后的数总长度)

则在理论上k个校验码就可以判断是哪一位出现了问题。

海明码编码🍉

2**i(i=0,1,2,3...)位是校验位,其余位为数据位,用于存放数据。

比如一个数据:

gif.latex?%5B%5B%5D_%7B%281%29%7D%2C%5B%5D_%7B%282%29%7D%2C%201_%7B%283%29%7D%2C%20%5B%5D_%7B%284%29%7D%2C%200_%7B%285%29%7D%2C%200_%7B%286%29%7D%2C%201_%7B%287%29%7D%2C%20%5B%5D_%7B%288%29%29%7D%2C%200_%7B%289%29%7D%2C%201_%7B%2810%29%29%7D%2C%201_%7B%2811%29%29%7D%5D

([]:校验位,下标:校验位/数据位所处数据的第几位)

数据位是由校验位生成的,原理如下:

        从下标为3位数据位开始,(3)=[2]+[1],(5)=[4]+[1],(6)=[4]+[2],(7)=[4]+[2]+[1],(9)=[8]+[1],(10)=[8]+[2],(11)=[8]+[2]+[1]

可以看出:下标为(6)数据位是由下标为[4]和[2]校验位+1组成的,同样的下标为(7)数据位是由下标为[4][2]校验位组成的,以此类推...

  • ACK1 = (3,5,7,9,11),即(3),(5),(7),(9),(11)号数据位参与[1]位校验位的校验;
  • ACK2 = (3,6,7,10,11),即(3),(6),(7),(10),(11)号数据位参与[2]位校验位的校验;
  • ACK4 = (5, 6, 7),即(5),(6),(7)号数据位参加[4]位检验位的校验;
  • ACK8 = (9, 10, 11),即(9),(10),(11)数据位参与[8]位校验位的校验。

如此,将他们全部按照偶校验计算,最终可以得到: 

gif.latex?%5B1_%7B%281%29%7D%2C%5B0%5D_%7B%282%29%7D%2C%201_%7B%283%29%7D%2C%20%5B1%5D_%7B%284%29%7D%2C%200_%7B%285%29%7D%2C%200_%7B%286%29%7D%2C%201_%7B%287%29%7D%2C%20%5B0%5D_%7B%288%29%29%7D%2C%200_%7B%289%29%7D%2C%201_%7B%2810%29%29%7D%2C%201_%7B%2811%29%29%7D%5D

1[0]1[1]001[0]011
  • [2]号校验位,填充的数字是0:因为(3),(6),(7),(10),(11)号数据位中一共有4个1,为偶数。
  • [4]号校验位,填充的数字是1:因为(5),(6),(7)号数据位只有(7)号数据位有一个1,所以需要添加一个1使得1的数量为偶数。
  • 以此类推...

那么我们如何通过校验位和数据位的关系,进行数据校验呢?假设这个码字传输的过程中(6)号数据位出错,即接收端接受数据变成:

 gif.latex?%5Cbg_red%20%5B1_%7B%281%29%7D%2C%5B0%5D_%7B%282%29%7D%2C%201_%7B%283%29%7D%2C%20%5B1%5D_%7B%284%29%7D%2C%200_%7B%285%29%7D%2C%201_%7B%286%29%7D%2C%201_%7B%287%29%7D%2C%20%5B0%5D_%7B%288%29%29%7D%2C%200_%7B%289%29%7D%2C%201_%7B%2810%29%29%7D%2C%201_%7B%2811%29%29%7D%5D

1[0]1[1]011[0]011

接收端按照同样的规则计算出奇偶位时,发现[2]和[8]号校验位奇偶性正确。

[2]和[4]号校验位奇偶性不对,于是2+4=6即可定位错误发生在(6)号数据位


CRC循环冗余校验码👑

       数据末尾加入CRC循环冗余校验码只可以检错不可以纠错,发生错误只可以自动请求重发海明码可以自动纠错。广泛用于网络通信和磁盘存储。这个知识点我们使用例题讲解的方法帮助理解:

901d5b915e4b49a193602ffebe7035ad.png

 解题思路:

  1. 判断校验数位:生成多项式的最高次方是几,校验位就是几位。(答案:4位校验位
  2. 补齐数据位后面的0。(答案:10111 0000
  3. 提取生成多项式的系数:2de295468da845d99384036b32bf4752.png
  4. 采用第二步得到的结果,除以第三步得到的结果(异或运算):(10111 0000)异或运算(10011)余数就是CRC校验码,余数不够位,前面补0。

参考资料🍉

2023年录制软考网络工程师 - 基础知识精讲视频 (2-10,2-11)

雷震甲.(2018.01) 《网络工程师教程(第五版)》,50-55.

 

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

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

相关文章

基于ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升

专题一 空间数据获取与制图 1.1 软件安装与应用讲解 1.2 空间数据介绍 1.3海量空间数据下载 1.4 ArcGIS软件快速入门 1.5 Geodatabase地理数据库 ​ 专题二 ArcGIS专题地图制作 2.1专题地图制作规范 2.2 空间数据的准备与处理 2.3 空间数据可视化:地图符号…

无头盔PICO-unity开发日记3(UI按钮点击)

目录 1.UI界面加入组件 2.加入xr输入模块 3.设置光线投射遮罩 结果: 前提:做好一个ui界面 1.UI界面加入组件 画布加跟踪设备图形光线投射仪(tracked device graphic raycaster) 允许画布被追踪设备操纵 2.加入xr输入模块 sys…

C++ --模拟实现搜索二叉树

文章目录#搜索二叉树1. 搜索二叉树特点2. 操作分析2.0 结点结构2.1 插入2.2 升序查看2.3 查找2.4 删除2.5 前序拷贝构造3. 完整代码4. 时间复杂度分析5. 简单应用5.1 字典搜索5.2 统计次数#搜索二叉树 1. 搜索二叉树特点 若它的左子树不为空,则左子树上所有节点的…

Dockerfile及新型容器镜像构建技术

文章目录一、容器镜像分类1、操作系统类2、应用类二、容器镜像获取方法1、在dockerhub直接下载2、把操作系统中文件系统打包为容器镜像3、把正在运行的容器打包为容器镜像,即docker commit4、通过dockerfile实现容器镜像的自定义以及生成三、dockerfile1、dockerfil…

数据库管理系统PostgreSQL部署安装完整教程

PostgreSQL是一个开源的关系型数据库管理系统,它支持大量的数据类型和复杂的查询语言,可以用于各种应用程序。它是一个高性能的数据库,可以处理大量的数据,并且具有良好的可扩展性和可靠性。 目录 一.Linux系统安装PostgresSQL&a…

机器学习——线性模型之Softmax回归

问:Softmax回归模型是一种典型处理多分类任务的非线性分类模型 答:错误。Softmax回归是线性分类模型。实际上是逻辑回归的拓展,它将逻辑回归的二分类推广到了多分类,用逻辑回归的方法解决多分类问题。 线性模型——Softmax回归 …

Linux之基础IO

文章目录一.关于文件的共识二.复习C语言的文件操作1.打开文件2.向文件中写入数据3.向文件中追加数据三.有关文件的系统调用1.open(文件打开)2.write(向文件写入)3.read(读文件)四.文件描述符1.进程如何找到自己的文件2.为什么文件…

leetcode刷题(3)

各位朋友们大家好,今天是我leedcode刷题系列的第三篇,废话不多说,直接进入主题。 文章目录分割链表题目要求用例输入提示做题思路c语言代码实现Java代码实现相交链表题目要求用例输入提示做题思路c语言实现代码Java代码实现分割链表 leetcod…

KDSL-82轻型升流器

一、产品概述 KDSL-82 1000A大电流发生器是一种作为检验用的电流源,大电流试验器采用ARM芯片控制输出工艺和大容量的环形变压器,并且配有液晶屏显示的表计,同时显示一、二次电流、变比和秒表接点(或电位)的动作时间。外配铝合金机箱&#xff…

OceanMind海睿思受邀参加中小企业数字化转型发展论坛

近日,由江苏省企业信息化协会主办的中小企业数字化转型发展论坛于南京圆满结束。论坛重点邀请了南京市中小企业制造标杆、专精特新“小巨人”企业等相关信息化负责人和IT工作者共同探讨中小企业数字化转型的发展路径。 OceanMind海睿思作为南京地区大数据领域优秀代…

自然语言大模型介绍

1 简介 最近一直被大语言模型刷屏。本文是周末技术分享会的提纲,总结了一些自然语言模型相关的重要技术,以及各个主流公司的研究方向和进展,和大家共同学习。 2 Transformer 目前的大模型基本都是Transformer及其变种。本部分将介绍Transf…

FPGA基于XDMA实现PCIE X4的HDMI视频采集 提供工程源码和QT上位机程序和技术支持

目录1、前言2、我已有的PCIE方案3、PCIE理论4、总体设计思路和方案5、vivado工程详解6、驱动安装7、QT上位机软件8、上板调试验证9、福利:工程代码的获取1、前言 PCIE(PCI Express)采用了目前业内流行的点对点串行连接,比起 PCI …

自动化测试用什么框架?Pytest框架 vs Unittest框架,企业使用分析......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 安装方式不同 unit…

JavaWeb开发 —— 分层解耦

目录 一、三层架构 二、分层解耦 三、IOC & DI 入门 四、IOC控制反转详解 五、DI依赖注入详解 一、三层架构 在 JavaWeb开发 —— 请求响应 最后案例中我们编写的程序代码都是写在 Controller 当中。 而在我们实际软件设计和开发中,会尽量让每一个接口、类…

c++学习之类与对象2

目录 1.explicit关键字 类的对象数组 动态对象的创建与初始化 1.动态创建的概述 2.c语言方式创建动态对象 c对象的动态申请 1.new创建动态对象 2.delete释放动态对象 动态对象数组 静态成员 静态成员变量 静态成员函数 1.explicit关键字 explicit关键字 修饰构造函数…

查询淘宝商品详情页面数据(商品详情数据,商品销量数据,商品sku数据,商品视频数据,商品优惠券数据)接口代码封装教程

业务场景:作为全球最大的 B2C 电子商务平台之一,淘宝天猫平台提供了丰富的商品资源,吸引了大量的全球买家和卖家。为了方便开发者接入淘宝天猫平台,淘宝天猫平台提供了丰富的 API 接口,其中历史价格接口是非常重要的一…

策略设计模式(Strategy Pattern)[论点:概念、组成角色、相关图示、示例代码、适用场景]

文章目录概念组成角色相关图示示例代码适用场景概念 策略模式(Strategy Pattern)是一种行为设计模式,它定义了一系列的算法,并将每一个算法封装起来,使它们可以相互替换。策略模式使得算法可以独立于使用它的客户端变化…

4.12~4.13学习总结

File 相对路径和绝对路径的区别: 相对路径不带盘符,绝对路径带盘符 小知识点:1KB1024字节,1MB1024KB,1GB1024MB; File对象就表示一个路径,可也是文件的路径,也可以是文件夹的路径 这个路径可以是存在的也可…

API-MS-WIN-CRT-RUNTIME-L1-1-0.DLL丢失怎么解决?

API-MS-WIN-CRT-RUNTIME-L1-1-0.DLL是Windows系统中的一个非常重要的动态链接库文件,该文件的全称为“Application Programming Interface Microsoft Windows C Runtime Link Library”。这个DLL文件中包含多个函数库,可将这些函数库链接到应用程序中。在…

AC7811-FOC无感控制代码详解

目录 矢量控制原理 矢量控制框图 电流采样方式 电流在整个控制过程中的传递 采样关键点 三电阻 双电阻 单电阻 三者对比 坐标变换 dq轴电流的PI控制 启动方式 启动波形 脉冲注入 高频注入 Startup 预定位到指定角度 PulseInject_api hfi_api Speed loop s…