【计算机网络-数据链路层】差错控制(检错编码、纠错编码)

news2024/9/27 17:18:34

文章目录

    • 1 检错编码——奇偶校验码
      • 1.1 奇偶校验码
      • 1.2 相关例题
    • 2 检错编码——循环冗余码(CRC)
      • 2.1 发送端——生成冗余码
      • 2.2 接收端——检错
      • 2.3 相关例题
    • 3 纠错编码——海明码
      • 3.1 确定海明码的位数
      • 3.2 确定校验位的分布
      • 3.3 对校验码进行分组
      • 3.4 求出校验码的值(偶校验)
      • 3.5 检错和纠错
        • 3.5.1 纠错方法一
        • 3.5.2 纠错方法二

1 检错编码——奇偶校验码

1.1 奇偶校验码

奇偶校验码是一种最为简单的校验码,它用来检测数据传输过程中是否发生错误。奇偶校验码的组成:

n-1 位信息位 + 1 位校验位

有两种校验方法:奇校验和偶校验。

  • 奇校验码:添上校验位后,使得 n-1 位信息位和 1 位校验位总共有奇数个“1”
    • 若 n-1 位信息位一共有偶数个“1”,则校验位为 1
    • 若 n-1 位信息位一共有奇数个“1”,则校验位为 0
  • 偶校验码:添上校验位后,使得 n-1 位信息位和 1 位校验位总共有偶数个“1”
    • 若 n-1 位信息位一共有偶数个“1”,则校验位为 0
    • 若 n-1 位信息位一共有奇数个“1”,则校验位为 1

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

1.2 相关例题

【例 1】原始数据:0110 1100。

【解】0110 1100 有偶数个“1”,则:

  • 奇校验码:0110 1100 1
  • 偶校验码:0110 1100 0

【注】校验位也可以加到数据的前面。

【例 2】原始数据:0100 1100。

【解】0100 1100 有奇数个“1”,则:

  • 奇校验码:0100 1100 0
  • 偶校验码:0100 1100 1

【例 3】原始数据:0110 1100,采用奇校验方式。

(1)若没有出错,校验位是多少?

(2)现若错误一位:0110 1101,能否检测出错误?

(3)现若错误两位:0110 1111,能否检测出错误?

(4)现若错误三位:0111 1111,能否检测出错误?

【解】(1)原始数据有偶数个“1”,所以为 0110 1100 1

(2)0110 1101 1,一共 6 个“1”,检测出错误

(3)0110 1111 1,一共 7 个“1”,检测不出错误

(4)0111 1111 1,一共 8 个“1”,检测出错误

【结论】采用奇校验方式,若原始数据出现奇数位错误时,将检测出错误;若原始数据出现偶数位错误时,将检测不出错误。

【例 4】原始数据:0110 1100,采用偶校验方式。

(1)若没有出错,校验位是多少?

(2)现若错误一位:0110 1101,能否检测出错误?

(3)现若错误两位:0110 1111,能否检测出错误?

(4)现若错误三位:0111 1111,能否检测出错误?

【解】(1)原始数据有偶数个“1”,所以为 0110 1100 0

(2)0110 1101 0,一共 5 个“1”,检测出错误

(3)0110 1111 0,一共 6 个“1”,检测不出错误

(4)0111 1111 0,一共 7 个“1”,检测出错误

【结论】采用偶校验方式,若原始数据出现奇数位错误时,将检测出错误;若原始数据出现偶数位错误时,将检测不出错误。

【例 5】字符 S 的 ASCII 码编码从低到高依次为 1100101。采用奇校验在下述收到的传输后的字符中,错误不能被检验出来的是( )

A. 11000011

B. 11001010

C. 11001100

D. 11010011

【解】原始数据:1100101,采用奇校验后:1100101 0

  • A 项:11000011 0,偶数个“1”,能检测出错误;
  • B 项:11001010 0,偶数个“1”,能检测出错误;
  • C 项:11001100 0,偶数个“1”,能检测出错误;
  • D 项:11010011 0,奇数个“1”,不能检测出错误。本题选 D。

2 检错编码——循环冗余码(CRC)

2.1 发送端——生成冗余码

循环冗余码(CRC)的组成:

数据部分 + 附加冗余码(FCS)

假设数据有 m 位,多项式为 G(x),计算附加冗余码(FCS)的步骤:

  • 加 0:假设 G(x) 的阶为 r,则在数据的低位添上 r 个 0;
  • 模 2 除:将上面得到的数据串去除以 G(x),得到的余数即为冗余码(共 r 位,前面的 0 不可省略)。

【注 1】有时候模 2 除法算出来的冗余码位数小于 r,此时要在附加冗余码前补 0 来满足位数。

【注 2】模 2 除法里的减法是异或操作(同 0 异 1)。

2.2 接收端——检错

对循环冗余码(CRC)除以多项式 G(x):

  • 若余数为 0,则判定这个数据没有出错,接收;
  • 若余数不为 0,则判定这个数据有出错,丢弃。

2.3 相关例题

【例 1】要发送的数据 1101011011,采用 CRC 校验,多项式是 10011,那么最终发送的数据是?

【解】计算附加冗余码(FCS)的步骤:

  • 添 0:多项式是 10011,则对应的多项式 G(x) = x4+x1+x0,r = 4,所以在数据的低位添 4 个 0,即 1101011011 0000
  • 模 2 除:将 1101011011 0000 除以 10011,得到的余数即为冗余码(共 r 位,前面的 0 不可省略):

在这里插入图片描述

所以,最终发送的数据为:1101011011 1110

【例 2】在数据传输过程中,若接收方收到的二进制比特序列为 10110011010,CRC 校验生成多项式为 G(x)=x4+x3+1。

(1)二进制比特序列在传输中是否出现了差错?

(2)若无差错,则发送方发送的二进制比特序列和 CRC 校验码的比特序列分别是什么?若有差错,则指出发送方发送的二进制比特序列和 CRC 校验码的比特序列分别为多少位。

【解】多项式 G(x) = 11001,进行模 2 除法:10110011010 除以 11001,所得余数为 0,说明二进制比特序列在传输中没有出现差错。

因为 G(x) 的 r = 4,所以发送数据的比特序列为 1011001,CRC 校验码为 1010。

3 纠错编码——海明码

以发送数据 D = 1100 为例,说明海明码的工作流程。

3.1 确定海明码的位数

海明不等式:m + r ≤ 2r - 1

  • 数据/信息为 m 位
  • 冗余码/校验码为 r 位

以 D = 1100 为例,数据位 m = 4,满足海明不等式的 rmin = 3,所以 D 的海明码有 4 + 3 = 7 位,数据位(用 Di 表示)为 4 位,校验码(用 Xi 表示)为 3 位。

3.2 确定校验位的分布

将校验码放在序号为 2n 的位置上:

序号7654321
二进制序号111110101100011010001
D7D6D5X4D3X2X1

然后将数据放在剩余位置上:

序号7654321
二进制序号111110101100011010001
110X40X2X1

3.3 对校验码进行分组

  • 4 号校验码 X4:负责二进制序号为 1** 的校验,即序号为 4,5,6,7 的校验
  • 2 号校验码 X2:负责二进制序号为 *1* 的校验,即序号为 2,3,6,7 的校验
  • 1 号校验码 X1:负责二进制序号为 **1 的校验,即序号为 1,3,5,7 的校验

3.4 求出校验码的值(偶校验)

校验码自己是不需要被校验的,所以需要把自己的序号去掉,然后对自己负责的数据进行异或运算(相当于偶校验),得出校验值。

  • 4 号校验码 X4:负责序号为 5,6,7 的校验,X4 = D7 ⊕ D6 ⊕ D5 = 1 ⊕ 1 ⊕ 0 = 0
  • 2 号校验码 X2:负责序号为 3,6,7 的校验,X2 = D7 ⊕ D6 ⊕ D3 = 1 ⊕ 1 ⊕ 0 = 0
  • 1 号校验码 X1:负责序号为 3,5,7 的校验,X1 = D7 ⊕ D5 ⊕ D3 = 1 ⊕ 0 ⊕ 0 = 1

得出完整海明码:

序号7654321
二进制序号111110101100011010001
1100001

3.5 检错和纠错

3.5.1 纠错方法一

假设接收方接收到错误的数据为:1110001(序号 5 出错),则先把接受到数据的校验码的值重新算一遍,与正确的对比。

序号7654321
二进制序号111110101100011010001
1110001
  • 4 号校验码 X4:负责序号为 5,6,7 的校验,X4 = D7 ⊕ D6 ⊕ D5 = 1 ⊕ 1 ⊕ 1 = 1(与接收到的不一样)
  • 2 号校验码 X2:负责序号为 3,6,7 的校验,X2 = D7 ⊕ D6 ⊕ D3 = 1 ⊕ 1 ⊕ 0 = 0
  • 1 号校验码 X1:负责序号为 3,5,7 的校验,X1 = D7 ⊕ D5 ⊕ D3 = 1 ⊕ 1 ⊕ 0 = 0(与接收到的不一样)

由以上结果可知:

  • 序号 3,5,7 和序号 5,6,7 中发生出错,取交集为 5,7;
  • 序号 3,6,7 没有发生出错,与以上集合再取一次差集,得到序号 5 出错。

3.5.2 纠错方法二

假设接收方接收到错误的数据为:1110001(序号 5 出错),则把校验组内的校验码和数据再进行一次异或运算(偶校验)。

序号7654321
二进制序号111110101100011010001
1110001
  • 4 号校验码组:负责序号为 5,6,7 的校验,S4 = X4 ⊕ D7 ⊕ D6 ⊕ D5 = 0 ⊕ 1 ⊕ 1 ⊕ 1 = 1
  • 2 号校验码组:负责序号为 3,6,7 的校验,S2 = X2 ⊕ D7 ⊕ D6 ⊕ D3 = 0 ⊕ 1 ⊕ 1 ⊕ 0 = 0
  • 1 号校验码组:负责序号为 3,5,7 的校验,S1 = X1 ⊕ D7 ⊕ D5 ⊕ D3 = 0 ⊕ 1 ⊕ 1 ⊕ 0 = 1

得到:S4S2S1 = 101,转换成十进制,即说明序号 5 出错了。

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

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

相关文章

LCHub:中国企业数字化门槛持续降低,数字化转型成本下降达80%

12月27日,钉钉联合中国信息通信研究院发布《“小快轻准”持续降低数字化转型门槛》研究报告(以下简称“报告”)。报告指出,中国企业数字化门槛正持续降低,数字化转型成本已降低80%;以钉钉为代表的数字平台,为中小企业提供了一条普惠、敏捷、低成本的数字化转型新路径;中国…

一种可远程监控的无线压力传感器

压力是工业生产中的重要参数之一,压力传感器是工业实践中最为常用的一种传感器。无线压力传感器TSM-04P是一款外接电源供电、具有无线通讯功能的高精度智能测压设备,采用4G通信方式,可选太阳能供电或电源供电。内置扩散硅传感器,能…

【java入门系列二】java基础

学习记录🤔变量(小数计算为近似值)运算符Scanner类接收输入进制位运算(对补码进行操作再输出原码)JavaAPI异常类型命名规范讨论总结谢谢点赞交流!(❁◡❁)更多代码: Gitee主页:https…

Exynos_4412——ADC实验

目录 一、ADC简介 二、Exynos_4412下的ADC控制器 三、ADC寄存器详解 四、ADC编程 一、ADC简介 ADC(Analog to Digital Converter)即模数转换器,指一个能将模拟信号转化为数字信号的电子元件 对于CPU来说只能处理数字信号,而很多外围输入信号都是模拟…

CADD药物设计;QSAR模型

1、CADD药物设计 计算药物设计(CADD)是一个使用计算技术来帮助设计和开发新药的领域。它涉及使用计算机程序来模拟潜在药物分子与体内靶蛋白之间的相互作用,以及预测这些分子的性质和行为。这可以帮助研究人员识别新的药物候选物,…

STM32使用红外测温

红外测温 文章目录红外测温前言一、原理二、STM32代码1.MLX90614.c2.MLX90614.h总结前言 一、原理 红外测温的原理可以直接去看卖家的手册,手册多余的话太多了,知道他是IIC通信的就行了, 下面直接给出代码 二、STM32代码 1.MLX90614.c …

synchronzied

synchronzied的作用 原子性:所谓原子性就是一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么都不执行。被synchronzied修饰的类或对象的所有操作都是原子的,因为在执行之前必须先获得类或对象的锁、直到…

直播运营|如何打造可复制的直播增长闭环?

作为当下最热门的营销模式,直播带货对人员、场地及流程的把控等都提出了严格要求。而要提升直播运营、促成更高转化,直播复盘是关键的一环。 那么,直播后到底该如何高效复盘,为带货提效呢? 「帷幄开播 Whale Cast」新功…

_Linux 进程信号-基础篇

文章目录信号入门1. 生活角度2. Linux技术应用角度3. 知识小点4. 信号概念5. kill -l命令6. 信号处理常见方式产生信号1. 通过终端按键产生信号Core Dump2. 调用系统函数向进程发信号系统调用接口概述3. 由软件条件产生信号软件条件给进程发送信号概述4. 硬件异常产生信号理解除…

VS2012编译libjson库过程

下载libjson库 https://sourceforge.net/projects/libjson/ 最新版是2012-06-25的libjson_7.6.1.zip,大小为759.5 kB 解压缩包 由于是旧版本VS创建的项目,无法用新版VS直接打开项目编译了 使用VS2012新建一个Win32项目libjson 选择静态库,点完成 创建完成后项目列表 将l…

【Linux】-- 操作系统进程的状态

目录 描述进程-PCB 状态理论 Linux内核源代码的描述 R运行状态与S睡眠状态: 前台进程与后台进程 D磁盘休眠状态: T停止状态 X死亡状态 Z(zombie)-僵尸进程 僵尸进程的危害 进程状态总结 孤儿进程 进程优先级 Linux具体的优先级做法 PRI …

driftingblues6靶机(脏牛漏洞)

环境准备 靶机链接:百度网盘 请输入提取码 提取码:463a 虚拟机网络链接模式:桥接模式 攻击机系统:kali linux 2021.1 信息收集 1.arp-scan -l 探测目标靶机 2.nmap -p- -A -T4 192.168.1.107 探测目标靶机开放端口和服务 …

Internet Download Manager2023稳定版下载器

Internet Download Manager(简称IDM) 是Windows平台老牌而功能强大的下载工具,一种将下载速度提高多达5倍。那如果想要使用这款软件,那就需要安装这款软件,如何正确的下载和安装呢?今天,小编就教…

【ES】 es | Elasticsearch 教程 | DSL命令 | 命令操作es

一、说明 1、通过kibana操作es 2、使用dsl命令操作es 3、需要已经安装es,必须 4、需要已经安装kibana,非必须 5、若是没有装kibana,可以用PostMan之类的请求工具 二、基础知识 1、Elasticsearch和RDBMS比较 说明1: es与传统关系数…

树莓派串口通信

文章目录一、树莓派串口介绍二、串口通信配置1.打开USART串口2.串口映射配置3.安装mini串口调试助手4. 解决打开ttyAMA0 时没有权限5.解决打开minicom串口助手的时候,键盘失灵一、树莓派串口介绍 树莓派4B一共包含两个串口,一个是硬件串口(/…

LVGL学习笔记13 - 圆弧Arc

目录 1. Parts 2. 样式 2.1 旋转 2.3 设置角度范围 2.4 设置值范围 2.5 清除Knob显示 2.6 禁止点击调整值 2.7 修改圆环前景色 2.8 修改圆环背景色 2.9 修改圆弧末端形态 2.10 修改圆弧宽度 2.11 修改圆弧透明度 3. 事件 圆弧由背景和前景弧组成,通过lv_ar…

密码学_SHA-1

SHA-1(Secure Hash Algorithm 1,安全散列算法1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。SHA-1可以生成…

SpringCloud Netflix复习之Eureka

写作背景 SpringCloud Netflix作为SpringCloud第一代产品很经典,而且公司的老项目还在用SpringCloud Netflix的技术栈,有必要对SpringCloud Netflix的各种核心组件回归复习一下了。 本次复习的主角是微服务注册中心Eureka,本文的书写思路是五…

【大厂高频真题100题】《给表达式添加运算符》 真题练习第22题 持续更新~

给表达式添加运算符 给定一个仅包含数字 0-9 的字符串 num 和一个目标值整数 target ,在 num 的数字之间添加 二元 运算符(不是一元)+、- 或 * ,返回 所有 能够得到 target 的表达式。 注意,返回表达式中的操作数 不应该 包含前导零。 示例 1: 输入: num = "123&q…

innovus中的DanglingWire(悬垂线)的理解和处理

在innovus工具里边,用户经常会使用verifyConnectivity 来进行open ,绕线完整性等问题的查验。对于绕线结果,尤其是PG绕线结果,使用这个命令可以很好的帮助用户在power planning阶段查验PG的闭合连接的状态(在pg DB中使…