【学习笔记】数据链路层的差错控制——检错编码与纠错编码(海明码、奇偶检验码与CRC循环冗余码)

文章目录

  • 前言
  • 一. 差错控制简介
  • 二.补充知识
  • 三. 检错编码
    • (1)奇偶检验码
      • 组成:
      • 构造方法:以奇检验码为例。
      • 举个例子:
        • 检验码求法:
        • 错误检测方法:
      • 特点
    • (2)CRC循环冗余检验码
      • 三要素:
      • 考察点:冗余码的计算
        • 1) 加0
        • 2)模2除法
        • 3)来个例子吧!
          • 检验码获取
          • 检错部分
    • 3)检错编码后言
  • 三. 纠错编码(海明码)
    • 1)海明码特点
    • 2)工作原理
    • 3)工作流程
      • I. 确定检验码位数r
      • II. 确定检验码位置
      • III. 求出检验码的值
      • IV. 检错并纠错

前言

这篇文章是基于B站王道考研的教程写的。
文章图片会有不少引用课程ppt。

以下思维导图概括了本文的内容。
本文思维导图

一. 差错控制简介

  • 差错是由噪声引起的

  • 全局性:固有噪声,随机存在。
    解决方法:提高信噪比来减小干扰

  • 局部性:由外界原因导致的冲击噪声,是差错的主要原因
    解决方法:通常是用编码技术

  • 差错类型:帧错 & 位错
    1)帧错:三种类型,以传输[1]、[2]、[3]三个帧为例子
    a.丢失:只收到[1] [3]——丢失了[2]
    b.重复:收到了[1] [2] [2] [3]——[2]重复了。
    c.失序:收到[1] [3] [2]——[2]和[3]的顺序错了。

    2)位错:比特位出错,1变成0,或者0变成1。

二.补充知识

  • 为什么要进行差错控制:可以节约资源,提升效率。
  • 同样是编码,物理层面向单个比特,而数据链路层面向的是一组比特
  • 数据链路层都是用冗余编码技术检错

三. 检错编码

开始到本文重点了。
检错编码分为奇偶检验码与CRC循环冗余码。
特点:只能检查出了错,具体错在哪位并不清楚

(1)奇偶检验码

组成:

由第1位的检验元,与后n-1位的信息元组成。

可以是奇检验码,也可以是偶检验码。区别在于检验码中为’1’的比特的数量是奇数还是偶数。

构造方法:以奇检验码为例。

1)首先计算为’1’的比特的数量。
2)如果1)中结果为偶数,则检验元设为1(让偶变奇),否则检验元设为0(保持偶)

举个例子:

在这里插入图片描述

检验码求法:

传输数据1100101有4个’1’,因此我们把检验元设置为1,得到奇检验码为1 1100101。

错误检测方法:

我们可以看到,选项中,ABC的’1’都是偶数个,说明我们传输的奇检测码出错了。而D选项,我们很容易看出传输出了错,但是由于D选项的‘1’也是奇数个,因此这种检验码无法检测出它的错误。

特点

只能检查出奇数个数比特的错误,检错能力为50%。
(这个特点可以自己思考一下,原理挺简单的)

(2)CRC循环冗余检验码

三要素:

  • 传输数据
  • 生成多项式
  • 冗余码/FCS帧检验序列

可参考这个图片的例子理解
在这里插入图片描述

考察点:冗余码的计算

1) 加0

根据生成多项式的阶数,给传输数据加0

2)模2除法

用经过1)步骤后的传输数据除以生成多项式,来获得冗余码。
除法过程中用到的不是减法,而是异或

3)来个例子吧!

图片可能有点乱,见谅= =在这里插入图片描述

检验码获取

在这个例子中,我们就是用到的异或除法来获取冗余码。
由此,我们得到了检验码
数据 + 冗余码:1101 0110 11 1110(粗体为冗余码)

检错部分

左边为具体过程,右边为过程描述。
概括起来就是:接收端对接受到的数据,用同样的除数(本例中为10011)进行同样的异或除法。如果余数为0,说明没错
在这里插入图片描述

3)检错编码后言

总结一下下图,就是:

  1. 凡是接收端数据链路层接收的帧均认为无差错(接近1的概率)
  2. CRC实现无比特差错传输,但还并不是可靠传输
  3. 可靠传输:数据链路层发送端发送什么,接收端就收到什么。
    在这里插入图片描述

三. 纠错编码(海明码)

1)海明码特点

发现双比特错,纠正单比特错

2)工作原理

动一发而牵全身。
也就是一个比特,被多个检验码检验。

3)工作流程

在这里插入图片描述
接下来根据顺序来进行工作流程的描述。

I. 确定检验码位数r

依据就是这个海明不等式,图片右边是例子。
在这里插入图片描述

II. 确定检验码位置

由I确定检验码有4位,即P1,P2,P3,P4。

在这里插入图片描述
检验码放置有一个要求:放置于2的n次方位置
在这里就是1,2,4,8四个下标。
在这里插入图片描述
接下来,按顺序把传输数据分别填入剩下的空位。同时把传输数据的实际值也填好。
在这里插入图片描述

III. 求出检验码的值

首先我们要知道,每个检验码分别控制哪些数据
现在更换数据位的进制,换成二进制
在这里插入图片描述
检验码控制数据,是按照其占据数据位的二进制的1的位置来判断的。
如果某个数据占据的数据位,在相同位置也有1,那么这个数据被该检验码控制。
比如此处的P1,占据0001的位置,那么0011、0101、0111、1001都被P1控制,也就是D1、D2、D4、D5被控制。

接下来根据这个性质,就可以求出P1的实际值

检验码和所有控制值的异或,最终结果为0

假设值为X,有 X ⊕ D1 ⊕ D2 ⊕ D4 ⊕ D5 = 0
带入实际值,有 X ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 0 = 0
由此有 X ⊕ 0 = 0,从而得出 X = 0。

以此类推,依次求出P2、P3、P4即可。
在这里插入图片描述
由此可知海明码:0010 0111 01

IV. 检错并纠错

此处只需令所有检验码进行和III相同的异或计算即可。
在这里插入图片描述

偷懒了,不过ppt写得很清楚,就直接摆上来了。

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

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

相关文章

【学习笔记】数据链路层——流量控制:停止等待协议、后退N帧协议(GBN)、选择重传协议(SR)

文章目录一. 流量控制① 必要性② 数据链路层 VS 传输层③ 定义④ 方法1)停止等待协议2)滑动窗口协议关系:包括:3)协议对比二. 停止-等待协议必要性应用情况① 无差错情况② 有差错情况1)数据帧丢失&#x…

java线程唤醒与等待_Java线程的等待与唤醒

生产者和消费者必须使用同步代码块包裹起来,保证等待和唤醒只能有一个执行,同步使用的锁对象必须保证唯一Thread中重要方法void wait() 在其他线程调用此对象的notify()方法或notifyall()方法前,导致当前线程等待void notify() 唤醒在此对象监…

【学习笔记】数据链路层——信道划分访问控制(FDM、TDM、STDM、WDM、CDM CDMA)

PPT截自王道考研B站教程 一. 铺垫知识 ① 传输数据使用的两种链路 星型、总线型都是广播式结构。 星型更有容错率,总线型断一个则全断。 ② 介质访问控制 定义 采取一定措施,使得两对节点之间的通信不会发生互相干扰的情况。 分类 多路复用&…

stream of java_java8新特性之强大的Stream API

Stream APIStream是Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数 据库查询。也可以使用Stream API来并行…

【学习笔记】数据链路层——随机访问介质访问控制(ALOHA、CSMA、CSMA/CD、CSMA/CA),截断二进制指数规避算法

文章目录小前言一. ALOHA协议纯ALOHA协议时隙ALOHA协议ALOHA对比CSMA协议定义与分类① 1-坚持CSMA② 非坚持CSMA③ p-坚持CSMA总结CSMA/CD协议传播时延对载波监听的影响确定重传时机:截断二进制指数规避算法最小帧长问题CSMA/CA协议工作原理CSMA/CD 与 CSMA/CA的对比…

pca算法介绍及java实现_PCA算法原理及实现

众所周知,PCA(principal component analysis)是一种数据降维的方式,能够有效的将高维数据转换为低维数据,进而降低模型训练所需要的计算资源。以上是比较官方的说法,下面是人话(正常人讲的话)版。pca就是一种能够有效压缩数据的方…

【学习笔记】数据链路层——轮询访问介质控制(轮询协议、令牌传递协议)

文章目录一. 轮询访问介质控制二. 轮询协议三. 令牌传递协议结束语PPT截自王道考研B站教程 一. 轮询访问介质控制 结合了前面的信道划分访问控制、随机访问MAC协议的优点: 既要不产生冲突,又要发送时占全部带宽。 二. 轮询协议 轮询开销:…

java boolean 多线程_JAVA多线程两个实用的辅助类(CountDownLatch和AtomicBoolean)

AtomicBoolean它允许一个线程等待一个线程完成任务,然后运行:A boolean value that may be updated atomically. See the java.util.concurrent.atomic package specification for description of the properties of atomic variables. An AtomicBoolean is used in…

【学习笔记】局域网基本概念和体系结构,以太网、无线局域网与PPP协议、HDLC协议

文章目录一. 局域网:特点与要素① 拓扑结构② 传输介质③ 介质访问控制方法④ 局域网的分类⑤ IEEE 802标准⑥ MAC子层和LLC子层二. 以太网① 概述② 提供无连接、不可靠的服务③ 传输介质与拓扑结构的发展④ 10BAST-T以太网⑤ 适配器与MAC地址⑥ 以太网MAC帧⑦ 高速…

java truevfs_Java-Apache Commons VFS:使用FTP

我正在尝试通过FTP使用Apache Commons VFS.在我的FTP上,具有文件和文件夹的下一个结构://test/test/in/test/in/file1.txt/test/in/file2.txt我需要连接并从/ test / in文件夹中读取所有文件(它一直在变化).码:FileSystemManager fsManager null;FileSy…

【学习笔记】数据链路层——链路层设备:物理层拓展以太网、链路层拓展以太网与冲突域和广播域

文章目录一. 冲突域与广播域① 定义与对比图② 例子二. 物理层扩展以太网三. 链路层扩展以太网① 网桥定义透明网桥源路由网桥② 以太网交换机PPT截自B站王道考研教程 本文内容导图 一. 冲突域与广播域 可以先只是简单看看定义,然后看完二、三后再回来看对比图和…

java jui 正则表达式_常规正则表达式练习

PS:join()数组转串,split()串转数组1、test():在字符串查找符合正则的内容,如果查找到返回true,反之返回false用法:正则.test(字符串)2、search():在字符串搜索符合正则的内容,找到就…

【学习笔记】网络层——概述、数据交换方式:电路交换、报文交换与分组交换(数据报与虚电路)

文章目录一. 概述二. 数据交换方式① 电路交换② 报文交换③ 分组交换④ 分组交换 && 报文交换举例对比⑤ 三种数据交换方式比较总结三. 分组交换的两种方式① 定义传输单元名词辨析② 数据报③ 虚电路④ 数据报与虚电路的对比ppt截自王道考研B站教程 太不容易了&#…

java代码中 作用_Java利用开发中代码生成工具的作用

Java利用开发中代码生成工具的作用2010-6-5文字大小:大中小近来,随着各种代码生成工具的不断涌现(如SpringSource的Spring Roo、Skyway Builder Community Edition 6.3及Blu Age的M2Spring等),人们又将留心力转移到了这些代码生成工具在企业级Java使用开…

【学习记录】网络层——IP数据报(格式与分片)

文章目录一. IP数据报格式二. IP数据报分片① 为什么要分片?② 标识、标志与片偏移③ 例题单位为nB小结PPT截自王道考研教程 tips:b是位,B是字节。 一. IP数据报格式 在本章节中,暂时不区分IP数据报与分组。 生存时间(Time To Live)&#xf…

java计算器 运算符优先级_跪求大神帮忙,怎样在java 计算器中实现,四则运算优先级;...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼代码如下,跪求大神补充import java.awt.*;import java.awt.event.*;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;import javax.swing.JFrame;i…

自动驾驶学习笔记(二十二)——自动泊车算法

#Apollo开发者# 学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往: 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo开放平台9.0专项技术公开课》免费报名—>传送门 文章目录 前言 感知算法 定位算法 规划算法…

java中保留小数位_Java中保留两位小数的方法

Java中保留4位小数的方法:import java.math.BigDecimal;import java.text.DecimalFormat;import java.text.NumberFormat;public class format {double f 111231.5585;public void m1() {BigDecimal bg new BigDecimal(f);double f1 bg.setScale(2, BigDecimal.R…

【学习笔记】 IPv4地址、NAT与子网掩码、子网划分

文章目录一. IP地址① 在例子中理解③ IP地址的分类④ 特殊IP地址⑤ 私有IP地址⑥ 各类IP的对比二. NAT三. 子网划分与子网掩码① 子网划分② 子网掩码例题1例题2③ 使用子网时路由的转发PPT截自王道考研教程 一. IP地址 可以理解成上网设备的身份证号唯一点分十进制&#xff…

java对象底层原存储结构图解_图解图库JanusGraph系列-一文知晓“图数据“底层存储结构...

大家好,我是洋仔,JanusGraph图解系列文章,实时更新~图数据库文章总目录:转载文章请保留以下声明:一:存储模式留言或私信我,邀请你加入“图数据库交流”微信群!1、图内容本文以下所有…