DJ5-2 差错检测和纠错

news2024/11/26 18:37:35

目录

一、差错检测和纠错技术

1、发送节点

2、接收节点

3、说明

二、差错检测技术

1、一比特奇偶校验

2、二维奇偶校验

3、Internet 校验和方法(复习)

4、循环冗余检测 CRC

5、差错检测方法比较


一、差错检测和纠错技术

链路层提供比特级差错检测和纠正这两种服务。EDC 是差错检测和纠正比特。

① 比特级差错检测和纠正

是指对从一个节点发送到另一个物理上连接的邻近节点的链路层帧中的比特损伤进行检测和纠正。

主要的差错检测技术有:奇偶校验、Internet 校验和、循环冗余检测。

② 差错检测并非 100% 可靠

差错校验位越多,差错检测和纠正效果越好。

1、发送节点

  • 将数据 D 以及附加的差错检测和纠错位 EDC 一起发送到链路。

差错检测和纠正的保护范围覆盖了数据 D 的所有字段。数据 D 不仅包括从网络层传递下来需要通过链路传输的数据报,还包括链路帧首部中的链路级寻址信息、序列号和其它字段。

2、接收节点

接收比特序列 D' 和 EDC' 。

接收方根据 D' 和 EDC',判断 D' 是否和初始的 D 相同,即 D 的传输是否正确。

  • 正确:解封取出数据报,交付给网络层。
  • 出错:进行差错处理。

如果发生传输比特错误(0→1,1→0),D' 和 EDC' 可能与发送的 D 和 EDC 不同。


 

3、说明

① 差错检测和纠正技术不能保证接收方能检测到所有的比特差错。

即接收方并未发现有比特差错,更不用提知道是哪一位发生差错了。

② 选择一个合适的差错检测方案使未检测到的情况发生的概率很小即可。

③ 差错检测和纠错技术越好,越复杂,开销更大。

二、差错检测技术

三种主要差错检测技术

  • 奇偶校验:最基本的方法。
  • Internet 校验和:常用于运输层。
  • 循环冗余检测:常用于链路层。

1、一比特奇偶校验

发送方:

  • 在要发送的信息 D(d 位)后面附加一个奇偶校验位
  • 使 “1” 的个数是奇数(奇校验)或者是偶数(偶校验)
  • 一起传输发送(d+1 位)

接收方:

  • 检测收到的信息(d+1 位)中 “1” 的个数。
  • 偶校验:发现奇数个 “1”,至少有一个比特发生差错(奇数个比特差错)。
  • 奇校验:发现偶数个 “1”,至少有一个比特发生差错。

一比特奇偶校验只能检测出奇数个比特差错,不能检测出偶数个比特差错,因为偶数个 0→1,1→0 将会彼此抵消。

特点:

  1. 可以检查出任意奇数个错误,但不能发现任意偶数个错误。
  2. 若比特差错概率很小,差错独立发生,一比特奇偶校验可满足要求。
  3. 若比特差错集中在一起 “突发”,则一帧中未检测到差错的概率达到 50% 。

一比特奇偶校验只能检测到差错,不能指出是哪一位发生了差错。

2、二维奇偶校验

基本思想:

  • 将要传信息 D(d 比特)划分为 i 行 j 列
  • 分别对每行和每列信息进行相应的奇偶检验
  • 帧的差错检测比特最终由 i+j+1 个奇偶比特构成

特点:

  1. 可以检测并纠正单个比特差错。
  2. 能够检测但不能纠正分组中任意两个比特的差错。

3、Internet 校验和方法(复习)

发送方:

  1. + 伪首部;
  2. 以 16 位为单位切割数据;
  3. 将所有16 位整数求和并回卷;
  4. 对得到的和进行逐位取反 -- 校验和;
  5. 将校验和放入报文段首部,一起发送。

接收方:

对接收到的信息按与发送方相同的方法进行求和。

  • 全 “1”:收到的数据无差错;
  • 若有 “0”:收到的数据出现差错。

特点:

  • 分组开销小:因为校验和的位数比较少。
  • 差错检测能力弱:适用于运输层,差错检测用软件实现,检查和方法简单、快速。

链路层的差错检测由适配器中专用的硬件来实现,采用更强的 CRC 方法。

4、循环冗余检测 CRC

cyclic redundancy check 

CRC 编码:即多项式编码,把要发送的比特串看作为系数是 0 或 1 的一个多项式,对比特串的操作看作为多项式运算。

校验码的具体生成过程为:假设发送信息用信息多项式 C(X) 表示,将 C(x) 左移 R 位,则可表示成 C(x)*2R,这样 C(x) 的右边就会空出 R 位,这就是校验码的位置。通过 C(x)*2R 除以生成多项式 G(x) 得到的余数就是校验码。

基本思想:发送方和接收方先共同选定一个生成多项式 G(r+1 比特),最高有效位是 1 。

① 发送方

  • 将位数为 G 位数减一的全 0 附加比特 R(r)添加到数据 D 的后面生成 DR(d+r)
  • 用 DR 去除以 G,将得到的余数替换全 0 的 R,成为新的 R,并一起发送

由于最终 DR 是初始 DR 加上初始 DR/G 的余数,因此最终 DR 能被生成多项式 G 整除。

② 接收方

用接收到的 DR(d+r)去除以 G:

  • 余数非 0:传输发生差错
  • 余数为 0:传输正确,去掉尾部 r 位以得到所需数据 D(r)

CRC 举例:

注意:在除的过程中,不是用上面一项减去下面一项,而是将两者进行异或;位数不够则商 0,位数足够则商 1 。CRC 只能检测出小于等于 r 位的比特差错,但是能 100% 检测出。

5、差错检测方法比较

  • 奇偶校验能力最弱,CRC 校验能力最强。
  • 奇偶校验通常用于简单的串口通信。
  • Internet 校验和通常用于网络层及其之上的层次,要求简单快速的软件实现方式。
  • CRC 通常应用于链路层,一般是由适配器的硬件来实现。

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

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

相关文章

我为什么要使用vuetify3做为基础组件去开发公司组件库

设计风格 Vuetify是基于Material Design规范,依靠Material Design的设计优势,在无需编写一行css代码就可以得到非常美观的界面功能,同时Vuetify还具备自适应的能力,可以使用一套代码写出同时兼容手机、平板、web的功能&#xff1…

如何在Simulink中使用可变电阻-可变电容-可变电感

1. 原由 前期文章提出了Simulink如何在线修改(动态修改)模块参数的方法,并提供原创的Dynamic Change Parameter模块(简称DCP模块),模块得到了许多朋友的使用。最近收到几位朋友反馈,他们使用DCP…

VGG网络原理与搭建

VGG网络原理与搭建 VGG在2014年由牛津大学著名研究组VGG(Visual Geometry Group)提出,斩获该年ImageNet竞赛中Localization Task(定位任务)第一名和Classification Task(分类任务)第二名。 论文…

HTTP第10讲——响应状态码

背景 HTTP 报文里请求行的组成部分,包括请求方法和 URI。有了请求行,加上后面的头字段就形成了请求头,可以通过 TCP/IP 协议发送给服务器。 服务器收到请求报文,解析后需要进行处理,具体的业务逻辑多种多样&#xff0…

四、c++学习(类的简介)

上一篇我们做了一个简单的界面优化,并且我们可以选择进入游戏界面,所以这一篇我们来实现贪吃蛇和食物。 C学习,b站直播视频 文章目录 4.0 课程目标4.1 结构体4.1.1 c语言面向对象4.1.2 c的结构体4.1.3 内存对齐 4.2 union4.2.1 union应用&am…

Chapter8:线性系统的状态空间分析与综合(上)

第八章:线性系统的状态空间分析与综合 Exercise8.1 已知控制系统结构图如下所示: 其中: u u u为输入, y y y

Gradle版本、Gradle插件版本和AndroidStudio版本之间的对应关系

问题描述 有时候碰到gradle版本死活下载不下来,还会报Gralde Sync Issues,有可能是你的Gradle Wrapper版本和Gradle插件版本、AndroidStudio版本不匹配。 解决方案 Gradle版本和Gradle插件版本之间存在一定的对应关系。Gradle Wrapper是用来指定项目使用的Gradl…

javaweb系列-js引入、输出、变量、数据类型、运算符

1.1 js介绍 js可以让我们的页面更加的智能,让页面和用户进行交互。 1.2 引入方式 同样,js代码也是书写在html中的,那么html中如何引入js代码呢?主要通过下面的2种引入方式: 第一种方式:内部脚本&#x…

深度学习第J9周:Inception v3算法实战与解析

目录 一、理论基础 二、pytorch代码复现1.前期准备 2.代码复现 3.训练运行 3.2指定图片进行预测 三、总结 🍨 本文为[🔗365天深度学习训练营]内部限免文章(版权归 *K同学啊* 所有) 🍖 作者:[K同学啊] &…

K_A39_001 基于STM32驱动TF卡模块读写数据 串口打印

K_A39_001 基于STM32驱动TF卡模块读写数据 串口打印 所有资源导航一、资源说明二、基本参数参数引脚说明 三、驱动说明时序对应程序: 四、部分代码说明1、接线引脚定义1.2、STM32F103C8T6TF卡模块 五、基础知识学习与相关资料下载六、视频效果展示与程序资料获取七、注意事项八…

【英语】大学英语CET考试,口语部分2(课程笔记)

文章目录 1、口语考试介绍与备考攻略1.1 口语考试介绍1.2 考试备考攻略 上课老师:金格妃 上课时间:4h 1、口语考试介绍与备考攻略 方法是通用的:CET4/6,雅思托福,BEC等 近年四六级考试的长度是接近雅思托福的&#x…

【大数据】Presto(Trino)配置参数以及 SQL语法

文章目录 一、概述二、Trino coordinator 和 worker 节点作用1)Trino coordinator 节点作用2)Trino worker 节点作用 三、Trino 参数详细讲解1)coordinator 节点配置1、config.properties 配置文件2、jvm.config 配置文件3、log.properties 配…

libevent高并发网络编程 - 04_libevent实现http服务器

文章目录 1 evhttp简介2 相关的APIevhttp_new()evhttp_free()evhttp_bind_socket()evhttp_set_gencb()evhttp_set_cb()evhttp_request_get_uri()evhttp_request_get_command()evhttp_request_get_input_headers()evhttp_request_get_input_buffer()evhttp_request_get_output_h…

MagicalCoder系列教程(二):如何下载本地安装启动项目?

目录 下载启动 1 windows下载 2 linux下载 3 安装启动方式: 3.1 Windows免安装 3.2 其他操作系统(Mac等其他操作系统) 3.3 启动安装失败 MagicalCoder可视化开发平台:轻松搭建业务系统,为企业创造更多价值&…

【故障排查】【杂项】ingress + Jenkins 上传hpi文件(8MB)报错413

1、ingress Jenkins 上传hpi文件(8MB)报错 413 Request Entity Too Large 处理方法:ingress文件加上annotations ingress-nginx 实际上为nginx,所以在此调整。apiVersion: extensions/v1beta1 kind: Ingress metadata:name: jen…

Dreaming of Freedom

题目: 题意解析: n 个程序员要在 m 个算法里选出最受欢迎的算法,每轮投票每个程序员都会在剩下的算法中选择一个。 在第一轮投票前,m 种算法都可以选择;每轮投票后,只保留有最多票数的算法;只…

蓝桥杯提单day2【题解】

题单链接 蓝桥杯题单day2【题目】_奔跑的星黛露的博客-CSDN博客 题解 蓝肽子序列 链接 https://www.lanqiao.cn/problems/1030/learning/?page1&first_category_id1&sortstudents_count&second_category_id3&tags%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92,%E…

VRRP高级特性——管理VRRP

目录 管理VRRP备份组与业务VRRP备份组 管理VRRP备份组的两种实现方式 配置管理备份组 当在设备上配置了多个VRRP备份组时,为了减少设备间交互大量的VRRP协议报文,可以将其中一个VRRP备份组配置为管理VRRP备份组(mVRRP)&#xf…

WordPress PHP版本:2023年用于WordPress的最佳PHP版本

不同的 WordPress 版本可以与多个 PHP 版本一起使用。然而,WordPress社区官方为每个 WP 版本推荐了特定的 PHP 要求。选择最好的 WordPress PHP 版本对于确保网站安全且没有错误至关重要。 本文从 WordPress 的推荐、最低和最新 PHP 版本的角度讨论了 PHP 和 WordP…

SpringBoot——如何获取配置文件中的配置信息

SpringBoot——如何获取配置文件中的配置信息 简单介绍: 之前我们看到了我们是如何对SpringBoot以及SpringBoot中不同技术进行配置的,我们舍弃了之前在Spring中的对不同的技术使用不同的配置信息的方式,使用将所有技术的配置写在了一个配置…