数据链路层纠错研究一次学神and农夫and“i春秋”的心理交锋

本文主要是介绍数据链路层纠错研究一次学神and农夫and“i春秋”的心理交锋,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据链路层纠错研究)

请添加图片描述

请添加图片描述
请添加图片描述故事的起因是因为在白天学完农夫的计算机网络,晚上进行写笔记和复习的时候发现学神和i春秋的教程,和农夫的起了冲突
农夫:
数据链路层:为物理链路提供可靠的数据传输,包括错误的检测和修正
链路层的主要功能: 链路层的功能是实现系统实体间二进制信息块的正确传输 。 为网络层提供可靠无错误的数据信息 在数据链路中解决信息模式、操作模式、差错控制、流量控制、信息交换过程和通信控制规程的问题链路层是为网络层提供数据传送服务的,这种服务要依靠本层具备的功能来实现。 链路层应具备如下功能: 链路连接的建立,拆除,分离。 帧定界和帧同步。 链路层的数据传输单元是帧,协议不同,帧的长短和界面也有差别,但无论如何必须对帧进行定界。 数据链路层的典型设备:二层交换机、网桥、网卡请添加图片描述学神:
数据链路层:将分组拆分为字节,并将字节组合成帧,使用MAC地址提供介质访问,执行错误检测,但不纠错请添加图片描述i春秋:
数据链路层:
不同的网络类型,发送数据的机制不同,数据链路层就是将数据包封装成能够在不同网络传输的帧。能够进行差错检查,但不纠错,检测出错丢掉帧。请添加图片描述
我对比了一下,一看不对呀,
农夫写着数据链路层为物理链路提供可靠的数据传输,包括错误的检测和修正
学神写着数据链路层使用MAC地址提供介质访问,执行错误检测,但不纠错
i春秋写着数据链路层能够进行差错检查,但不纠错,检测出错丢掉该帧
首先农夫是确认修正,学神是不纠错但是前面有MAC前提,i春秋是不纠错首先这里有着三个知识点
接下来我们就围绕这三点一步一步来进行分析
1、错误检测
2、修正
3、纠错

1、什么是错误检测

在了解什么是错误检测之前我们先了解一下错误的产生
无论何时,在位流从一点流动到另一点时,由于干扰 (interference) 的存在,都可能经受到不可预测的变化,这些干扰可能会改变信号的波形。在单个位差错中,就是由 0 0 0 变成 1 1 1 或是由 1 1 1 变成 0 0 0 。在突发性差错中,可能有多个位的改变。例如,在一个具有 1200 bps 1200\textrm{bps} 1200bps 速率的传输中,一个 0.01 s 0.01s 0.01s 的脉冲噪声突发,可能要改变 12 12 12 位信息中一些位或所有位。1. 单个位差错
单个位差错 single-bit error 一词的意思是,在给定的数据单元(例如一个字节、字符或分组)中仅有一位发生从 1 1 1 到 0 0 0 或从 0 0 0 到 1 1 1 的变化。![请添加图片描述](https://img-blog.csdnimg.cn/52a3d1af6907446c8bf6bdc36d471578.png)图10.1说明在一个数据单元中单个位差错的影响。为了理解这一变化的影响,设想每一个 8 8 8 位组是一个左边加一个 0 0 0 位的ASCII码字符。在图10.1中,发送 00000010 00000010 00000010(ASCII的 STX ) ,表示文本的开始,但是接收方接收的是 00001010 00001010 00001010(ASCII的 LF ) ,表示换行。
图10.1 单个位差错
单个位差错在串行数据传输中很少出现。要了解为什么,可以想像以 1 Mbps 1\textrm{Mbps} 1Mbps 发送数据的情况。这意味着每一位仅持续 1 / 1000000 s 1/ 1 000 000s 1/1000000s 即 1 μ s 1μs 1μs 。要出现单个位差错,噪音信号必须只有 1 μ s 1μs 1μs 的持续时间,而这是非常罕见的情况,一般的噪音信号都比这个时间要长。
  1. 突发性差错
    突发性差错 burst error 是指在数据单元中有两位或更多位发生 1 1 1 到 0 0 0 或 0 0 0 到 1 1 1 的变化。请添加图片描述图10.2说明在数据单元中的一个突发性差错的影响。在这种情况下,发送的是 0100010001000011 01000 10001 00001 1 0100010001000011 ,但是接收的却是 0101110101100011 01011 10101 100011 0101110101100011 。注意:突发性差错并不意味着差错在连续位上出现。突发性差错的长度按从第一个差错位到最后一个差错位的长度计算,其间的某些位也可能未产生差错。
突发性差错比单个位差错更容易发生。噪声的持续时间要大于一个位的持续时间,这就意味着在噪声影响数据时,它要影响许多位。受影响的位的数量取决于数据速率和噪声的持续时间。例如,如果以 1 Kbps 1\textrm{Kbps} 1Kbps 的速率发送数据,一个 1 / 100 s 1/ 100s 1/100s 的噪声就会影响 10 10 10 位;而如果我们以 1 Mbps 1\textrm{Mbps} 1Mbps 的速率发送数据,同样的噪声就会影响 10000 10000 10000 位。

图10.2 长度为8位的突发性差错
冗余
检错或纠错的核心概念是冗余 redundancy 。为了能检测或纠正差错,我们除了数据外,还需要发送一些额外的位。这些冗余位由发送方添加、并由接收方除去。它们的存在允许接收方检测或纠正被破坏的位。

检错和纠错

差错的纠正比检测更难。在检错 error detection 中,只看是否发生差错。回答是简单的是或否,甚至对差错个数都不感兴趣。对我们来说,单个位差错和突发性差错是一样的。

在纠错 error correction 中,需要知道被破坏的位的个数,更重要的是知道它们在报文中的位置。差错个数和报文长度是重要的因素。如果需要纠正 8 8 8 位数据单元中的单个位差错,则需要考虑 8 8 8 个可能的差错位置。如果需要纠正相同长度数据单元中的两个差错,则需要考虑 28 28 28 种可能。可以想像,要在 1000 1000 1000 位数据单元中查找 10 10 10 个差错,是多么难了。

差错检测

在数据链路层检测数据传输错误的方法一般是通过对差错编码进行校验来实现,常见的有奇偶校验码(PCC)和循环冗余校验(CRC)。

PCC就不用多说了,在最后设置一个奇偶校验位。

循环冗余校验是一种根据传输或保存的数据而产生固定位数校验码的方法,主要用来检测或校验数据传输或者保存后可能出现的错误。生成的数字在传输或者储存之前计算出来并且附加到数据后面,然后接收端进行检验确定数据是否发生变化。

差错控制

由于信道噪声等各种原因,帧在传输过程中可能会出现错误。用以使发送方确定接收方是否正确收到由其发送的数据的方法称为差错控制。通常,这些错误可分为位错和帧错。

位错指帧中某些位出现了差错。通常采用循环冗余校验(CRC)方式发现位错,通过自动重传请求(Automatic Repeat reQuest,ARQ)方式来重传出错的帧。

具体做法是:让发送方将要发送的数据帧附加一定的CRC冗余检错码一并发送,接收方则根据检错码对数据帧进行错误检测,若发现错误则丢弃,发送方超时重传该数据帧。这种差错控制方法称为ARQ法。ARQ法只需返回很少的控制信息就可有效地确认所发数据帧是否被正确接收。

帧错指帧的丢失、重复或失序等错误。在数据链路层引入定时器和编号机制,能保证每一帧最终都能有且仅有一次正确地交付给目的结点。

结论:
差错纠正类似于差错检测,区别在于接受方不仅能检测帧中出现的比特差错,而且能够准确地确定帧中的差错出现的位置(并因此纠正这些差错)
意思就是在传输中出现错误,能够准确的知道哪里出现了错误,并且进行纠正
帧中某些位出现了差错。通常采用循环冗余校验(CRC)方式发现位错,通过自动重传请求(Automatic Repeat reQuest,ARQ)方式重传出错的帧
就是出现了错误ARQ法只需返回很少的控制信息就**可有效地确认所发数据帧是否被正确接收,给服务器发送有没有正确的接收到,然后让服务器重新发送

那么到底数据链路层到底有没有纠错,检测和纠正是一样的吗?
希望能得到各位的解答,谢谢大家。
微信:CNHKchenjiabao

参考链接:https://blog.csdn.net/FriendshipTang/article/details/119673074
参考链接:https://blog.csdn.net/weixin_41563161/article/details/104622668
参考链接:https://blog.csdn.net/myRealization/article/details/123102281
参考书籍:计算机网络自顶向下方法

这篇关于数据链路层纠错研究一次学神and农夫and“i春秋”的心理交锋的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/hacknetnetwork/article/details/128108669
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/716673

相关文章

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

解决mysql插入数据锁等待超时报错:Lock wait timeout exceeded;try restarting transaction

《解决mysql插入数据锁等待超时报错:Lockwaittimeoutexceeded;tryrestartingtransaction》:本文主要介绍解决mysql插入数据锁等待超时报... 目录报错信息解决办法1、数据库中执行如下sql2、再到 INNODB_TRX 事务表中查看总结报错信息Lock

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

Nacos日志与Raft的数据清理指南

《Nacos日志与Raft的数据清理指南》随着运行时间的增长,Nacos的日志文件(logs/)和Raft持久化数据(data/protocol/raft/)可能会占用大量磁盘空间,影响系统稳定性,本... 目录引言1. Nacos 日志文件(logs/ 目录)清理1.1 日志文件的作用1.2 是否可以删除

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1