3.3.1_1 检错编码(奇偶校验码)

news2025/6/12 23:24:53

 从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一种解决方案就是接收方只负责发现这种比特错。如果一个帧有位错误,就直接把这个帧丢弃,并且想办法通知发送方,让他重新传输这个帧,关于如何通知发送方重传帧这个问题,我们会在可靠传输功能里边再进行探讨。在差错控制这个部分,我们先把注意力放在如何发现比特错误上。使用检错编码技术可以发现比特错,我们会学习奇偶校验码和 CRC,也就是循环冗余校验码这两种检错编码技术。除了直接把帧丢弃重传之外,还可以有第二种解决方案,就是接收方可以发现并且纠正帧内部的比特错误。如果要纠正这种比特错误,我们就需要使用纠错编码的技术,之后我们会探讨海明教验码,这就是一种纠错编码。既可以发现比特错,同时还可以纠正比特错。

在这个视频中,我们先探讨最简单的奇偶校验码。我们会首先介绍奇偶校验的这种校验原理,如何检测出比特错误,紧接着,我们会为跨考的同学补充异或运算的一个规则。在这个视频中,我们依然需要对异或运算进行一个简单的补充,因为除了奇偶校验之外,接下来要学习的CRC校验码以及海明校验码都需要使用到异或运算。

接下来看奇偶校验码的校验原理,奇偶校验具体来说可以分为两种,一种就是奇校验,另一种是偶校验。二者的原理类似。假设有n个有效信息位,我们会在这n个信息位之前或者之后增加一个比特的这种奇偶校验位,如果我们采用的是奇校验的规则,那么我们添加这一个比特之后需要确保这 n+1位当中总共有奇数个1。相应的如果是偶校验的规则,那么我们需要确保添加了这一位之后,整体来看总共需要有偶数个1。

举个例子,假设这儿给出了两个比特串,我们分别求这两个比特串的基叫页码和偶叫页码。我们假设这个校验位是添加在有效信息位之前,那如果我们采用的是基校验的规则。看第一个比特串,这个比特串总共有七个信息位。其中包含一个一两个一三个一四个一,我们需要在这七个信息位之前增加一个校验位。并且要确保整体来看总共有奇数个1,那么原本有四个1,因此这个校验位我们就得填1,这样的话,整体就有五个1,也就是奇数个1。再来看第二个比特串,同样有七个比特的信息位,那么其中包含一个两个三个四个五个一。所以前边这个校验位,我们只需要添零。这是采用奇校验的规则,如果采用的是偶校验规则,原理类似。前边这个比特串,总共有四个1,添加这个校验位之后,需要确保整体来看总共有偶数个1,因此这个校验位我们只能添0。对于第二个比特串,总共有一个两个三个四个五个一,所以为了使整体拥有偶数个1,我们需要在校验位这儿再添加一个比特1。这就是基于偶校验规则的校验位的确定。在计算机网络中,发送方给接收方发送一个帧,那么发送方的数据链路层,会在帧的数据部分添加这个校验位的信息,然后把校验位和信息位一起发给接收方,而接收方的数据链路层又会基于奇偶校验的规则去检查整个帧有没有出错。

接收方的数据链路层是这么来检错的,如果发送方和接收方共同约定使用奇校验的规则,接收方的数据链路层收到这个帧之后会检查这个帧的校验位和信息位里边含有的比特1是不是奇数个?如果是奇数个,那么就认为没有错误。如果不是奇数个,就认为有错误。在现实应用中,偶校验要比基校验更常用,一些原因是偶校验很容易用简单的异或门来实现。

我们简单介绍一下异或运算的规则,异或运算又称为模2加运算,如果两个比特进行异或运算,那么当且仅当两个比特都相异不同的时候,运算的结果才等于1。比如说第二个式子0和1两个比特相异,它们俩异或运算得到的结果是1,第三个式子1和0两个比特相异,所以它们俩异或得到的结果等于1。相反,两个零进行异或得到的结果是0,两个0进行异或得到的结果也是零,这就是异或运算的规则。

如果我们把几个比特的信息位全部一起来异或就可以得到偶校验位。比如我们以这一串比特串为例,刚才我们用手算的方式得到它的偶校验位等于0。如果用机器计算偶校验位,我们只需要把这七个比特依次进行异或。首先1和0异或等于1,这个1和后一个0异或同样等于1,这个1和后一个1再进行异或等于0,这个0和后一个1继续异或等于1,这个1再和后一个0进行异或等于1,最后还有一个1再进行异或最后的结果就是0。所以把这七个信息位分别异或最终计算的结果是零,可以看到这个计算的结果和我们刚才手算求得的偶校验位是一致的。所以如果要用硬件来求偶校验位会非常快,只需要用异或门就可以实现。

第二个例子也是类似的,把所有的这七个信息位分别异或最终得到的结果就是1,和我们手算求得
的偶校验位是相同的。这儿就不再赘述。

这就是数据的发送方要做的事情,他会把帧的这n个信息位分别进行异或求得一个偶校验位,然后把这个偶校验位加入到信息位的前面。当然,也可以加入到信息位的后面这个都 OK,那么发送方会把这个校验位和n比特的信息位一起传给数据的接收方,而数据的接收方他的数据链路层会对收到的这 n+1个比特进行偶校验。进行偶校验,也可以用异或运算来实现。接收方会把所有的比特依次进行异或运算。我们总共收到八个比特,大家可以自己算一下这八个比特进行异或得到的结果等于0,此时说明这八个比特并没有发生错误。这个式子对应的是偶校验的第一个,这个比特串八个比特都没有发生错误,现在假设数据的接收方接收到的是后面的这八个比特,并且这八个比特当中最后一个比特1跳变成了0。此时对所有的比特进行异或运算,得到的结果就是1,结果为1,说明出现了比特错误。我们可以用人类视角数一数,总共有几个1,总共有五个1,接收方收到的这八个比特当中包含奇数个1。这并不符合偶校验的规则。所以我们从人类视角来看也能发现,这八个比特当中肯定有某些比特出现了错误。

接下来再看一个例子,同样是发送这八个比特。假设最后的两个比特发生了跳变,都是从1变成了0,那么此时数据的接收方对这八个比特进行异或运算之后,得到的结果等于零结果为零,意味着这一串比特符合偶校验的规则。我们从人类的视角来数一下,里边包含四个1,有偶数个1,因此这串二进制数是符合偶校验的规则的。然而,我们从上帝视角可以知道,这一串二进制数当中有两个比特发生了错误。因此,如果有偶数个比特发生错误,那么,数据的接收方将无法检测出这种错误。

刚才我们主要介绍了偶校验的硬件实现的原理,对于奇校验来说,硬件实现原理也是类似的,同样可以通过异或运算去实现。对于计算机网络的考试来说,我们只需要能够用人类的算法确定这个校验位等于多少,以及能够分辨一串二进制数是否符合校验的规则就可以了,大家不需要深究机器实现原理。

在这个视频中我们介绍了一种最简单的检错技术:奇偶校验码。我们提到了信息位、校验位这两个概念。信息位指的就是帧内部的有效数据,而校验位在有的教材中又会把它称为冗余位,因为校验位是我们为了给帧的数据部分纠错或者检错而附加的一些冗余比特信息。对于奇偶校验来说校验原理很简单,我们只需要在n比特信息位的首部或者尾部添加一个比特的校验位。如果数据的发送方和接收方约定的是奇校验规则,就需要确保添加了这个校验位之后。整体来看,总共会有奇数个1,而如果采用偶校验的约定,就需要确保添加校验位之后整体来看,有偶数个1。

需要注意的是,这种奇偶校验码只能检测出奇数位的错误,如果刚好有偶数个比特发生了这种比特跳变,奇偶校验码是没办法检测出这种错误的。同时,奇偶校验码只能检错,不能纠错。在这个视频中,我们也为跨考的同学补充了异或运算,又叫模2加运算的运算规则。当两个比特进行异或运算的时候,只有二者相异的时候,计算的结果才等于1,否则为0,当我们采用偶校验规则的时候,数据的接收方会把所有的信息位和校验位全部进行异或,如果异或的结果等于0,说明没有错误,如果等于1,说明有错误。如果恰巧有偶数个比特发生错误,那么此时数据的接收方,这个异或的结果也会等于零,也就是说发现不了偶数比特的错误。
以上就是这个视频的全部内容。

 

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

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

相关文章

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)&#xff0…

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​,覆盖应用全生命周期测试需求,主要提供五大核心能力: ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…

python/java环境配置

环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…

centos 7 部署awstats 网站访问检测

一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…

无法与IP建立连接,未能下载VSCode服务器

如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…