奇偶校验、crc循环冗余检验

news2024/9/23 23:26:44

数据链路层

链路

从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换点

数据链路

是指把实现通信协议硬件软件加到链路上

数据链路上传输的数据包,称之为

数据链路层是以为单位进行传输和处理数据的

数据链路层的三个重要问题

封装成帧

将数据链路层给网络层交付的协议数据单元添加帧头和帧尾的操作称之为封装成帧

在这里插入图片描述

添加帧头帧尾的目的,都是为了以帧为单元传送数据,为了实现数据链路层的功能。

在这里插入图片描述

帧头和帧尾的作用之一就是帧定界

从数据链路层开始,将以太网的数据层封装好MAC帧后,将其交付给物理层,物理层在MAC帧前面添加8字节的前导码,然后再将比特流转换成电信号发送,前导码中的前七个字节为同步码,作用为使接收方的时钟同步,之后的一个字节为帧开始定界符,表明其后面跟随的为MAC帧,另外以太网规定了帧间时间间隔为96比特的发送时间。因此,MAC帧并不需要帧 结束定界符。

透明传输

是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在

数据链路层对上层交付的协议数据单元有限制,其内容不能包含帧定界符

处理方式,通过识别每个帧定界符,对除去第一个以及最后一个帧定界符进行添加转义字符

  • 对于面向字节的链路 使用字节填充的方法实现透明传输

  • 对于面向比特的链路 使用比特填充的方式实现透明传输

为了提高帧的传输效率,应该使帧的数据部分的长度尽可能的大一些

考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的最大长度,即为最大传送单元MTU

差错检错

比特差错,再传输中1变成0,0变成1

误码率

传输错误的比特占所传输总比特总数的比率称之为误码率BER(Bit error rate)

使用差错检错码来检测数据在传输过程之中是否发生了比特差错,是数据链路层的重要问题

eg:MAC帧和PPP帧中都存在一个4字节的FCS字段,目的是为了检测帧在传输过程中是否产生了误码。

奇偶校验

在待发送的数据后面添加一位奇偶校验位,使整个数据中的“1”的个数为奇数或者偶数
在这里插入图片描述

由于这种的误差太大,因此一般不采用。

循环冗余校验CRC(Cyclic Redundancy Check)

  • 双方约定好一个生成多项式G(X)
  • 发送方基于待发送的数据和生成多项式计算出差错检错码(冗余码),将其添加到待传输数据的后面一起传输
  • 接收方通过计算生成多项式来计算收到的数据是否产生的误码

在这里插入图片描述

CRC算法要求生成多项式必须包含最低次项

例子:

在这里插入图片描述

进行除法的运算的时候为异或运算

在这里插入图片描述

[!warning]

  • 检错码只能检测错误,不能纠正错误
  • 纠正错误可使用冗余信息更多的纠错码进行前向纠错,但,纠错码的开销过大,因此在计算机网络中较少使用
  • CRC有很好的检测能力(漏检率低),虽然计算复杂,但是易用硬件实现,因此多用于数据链路层

可靠传输

可靠传输的基本概念

当产生误码的时候,

  • 对于不可靠传输,会丢弃存在误码的帧,其他什么也不做
  • 对于可靠传输服务, 会实现发送端发送什么,接收端就收到什么

[!warning]

在一般的情况下,有线链路的误码率比较低,为了减小开销,并不会要求数据链路层提供可靠服务

但是使用的为无线链路的时候,误码率较高,因此要求数据链路层必须向上层提供可靠传输服务

传输差错

比特差错只是传输差错的一种。

从整个计算机网络体系结构来看:传输差错总共包含三种,分组丢失分组失序分组重复(在这之中,将帧变为了分组)

上述三种差错,一般不会出现在数据链路层之中,而是出现其上层。

可靠传输服务并不局限于数据链路层,其他层均可实现可靠传输

eg:802.11无线局域网要求数据链路层实现可靠传输

以太网不要求数据链路层实现可靠传输

ip向上层提供的是无连接、不可靠的传输服务

TCP向上层提供的是面向连接的可靠传输服务

UDP向上层提供无连接、不可靠传输服务

可靠传输的实现复杂,开销大,是否使用取决于应用需求

以下三种的可靠传输实现机制的基本原理并不局限于数据链路层,可以应用到计算机网络体系结构中的各层协议之中。

停止等待协议

具体实现过程

第一种错误,传输数据data丢失解决办法

在这里插入图片描述

第二种错误 : ACK丢失,导致分组重复的问题

在这里插入图片描述

第三种错误 : ACK时间太长导致的数据重复确认,

解决办法:通过对ACK进行编号

停止—等待协议的信道利用率

从下面这个例子进行理解

在这里插入图片描述

由于Ta远小于Td一般可与忽略

  • 当往返时延RTT远大于数据帧发送时延Td的时候(例如使用卫星电路)信道利用率极低。

  • 若出现重传,则对于传送有用的数据信息来说,信道利用率还要降低

回退N帧协议GBN(GO-BACK-N)

  1. 采用3个比特给分组编序,即序号为0~7
  2. 发送窗口的尺寸WT的取值:1<WT≤23-1,本例子取WT=5
  3. 接受窗口的尺寸WR的取值:WR=1;

当窗口的值超过其大小的时候,接收方无法分辨新的、旧的分组

累计确认

接收方不一定要对收到的数据分组逐个发送确认而是可以在收到几个数据分组之后,对按序到达的最后一个数据分组发送确认

ACKN表示序号为n及以前的所有数据分组都已正确接收

  1. eg: 发送ACK1说明对1及其以前的数据都存储完成
  2. 发送ACK4说明对4及其以前的数据都存接收完成
  3. 因此即使ACK1丢失,只要ACK4也能够到达,发送方依旧不需要重传

优缺点

  • 减小接收方的开销

  • 减少对网络资源的占用

缺点:不能向发送方及时放映出接收方已经正确接受的数据分组

选择重传协议SR

  1. 采用3个比特给分组编序,即序号为0~7
  2. 发送窗口的尺寸WT的取值:1<WT≤23-1,本例子取WT=4
  3. 接受窗口的尺寸WR的取值:WR=WT=1;

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

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

相关文章

用Springboot(java程序)访问Salesforce RestAPI(通过JWT认证)

外部系统想访问Salesforce的数据,发Rest请求,必须需要Salesforce的AccessToken。那么为了得到这个AccessToken,Salesforce有几种方式可供选择。 一种就是用户名密码认证方式(之前的文章介绍过通过java代码访问Salesforce),一种就是JWT认证方式。当然还有其他方式,之后有…

利用Streamlit前端框架开发Stable Diffusion模型图像生成网页应用(下篇)

今天介绍亚马逊云科技推出的国际前沿人工智能模型平台Amazon Bedrock上的Stability Diffusion模型开发生成式AI图像生成应用&#xff01;本系列共有3篇&#xff0c;在上篇中我们学习了如何在亚马逊云科技控制台上体验该模型的每个特色功能&#xff0c;如文生图、图生图、图像修…

认知杂谈41

今天分享 有人说的一段争议性的话 I I 贫富根源在观念 I 你知道不&#xff1f;穷人穷啊&#xff0c;好多时候是因为他们自己还有家里好几代人呢&#xff0c;都陷在一种不对的想法里出不来&#xff0c;还觉得这样挺好&#xff0c;就一直这么过下去了。可富人的那些想法呢&am…

借老系统重构机会我写了个groovy规则引擎

公司老系统的重构计划早就有了&#xff0c;为了对Java硬编码的各种校验规则进行重构&#xff0c;特地参考了相关技术&#xff0c;最终选择了groovy进行了系统的学习&#xff0c;并编写了一个即插即用的轻量级规则引擎。 文章目录 项目背景技术选型groovy的性能groovy脚本执行线…

Scala之父Martin Odersky作序推荐的Scala速学版(第3版)出版

Scala 是一个很有吸引力的选择。 Scala 的语法简洁&#xff0c; 跟 Java 的“陈词滥调”比起来让人耳目一 新。它运行在 Java 虚拟机&#xff08;Java virtual machine &#xff0c;JVM&#xff09;上&#xff0c;提供对大量库和工具的访问。并 且&#xff0c;Scala 不仅仅瞄准…

设计模式之适配器模式:软件世界的桥梁建筑师

一、什么是适配器模式 适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff08;Structural Pattern&#xff09;&#xff0c;通过将类的接口转换为客户期望的另一个接口&#xff0c;适配器可以让不兼容的两个类一起协同工作。其核心思想是通过一个…

嵌入式全栈开发学习笔记---Linux系统编程(概述)

目录 入门级问题 为什么要学习Linux系统&#xff1f; 为什么Linux系统被嵌入式设备广泛应用&#xff1f; 系统调用 应用层是什么&#xff1f; 系统调用和库函数有什么区别&#xff1f; 为什么在应用层不能直接调用内核中的函数&#xff1f; 为什么有了系统调用就安全了…

Linux系统安装MySQL8.0

1.查看Linux发行版 2.安装前准备 2.1.检查是否安装 rpm -qa | grep mysql 2.2.如已安装mysql&#xff0c;则删除 rpm -e --nodeps 包名 2.3.再次检查安装包是否全部删除 rpm -qa | grep mysql 2.4.搜索mysql文件夹 find / -name mysql 2>/dev/null 2.5.若有mysql文件夹&a…

Golang | Leetcode Golang题解之第388题文件的最长绝对路径

题目&#xff1a; 题解&#xff1a; func lengthLongestPath(input string) (ans int) {n : len(input)level : make([]int, n1)for i : 0; i < n; {// 检测当前文件的深度depth : 1for ; i < n && input[i] \t; i {depth}// 统计当前文件名的长度length, isFi…

Cookie对象的缺陷与应对策略

Cookie对象的缺陷与应对策略 1. 安全性问题&#xff1a;Cookie是明文的2. 存储限制&#xff1a;浏览器对Cookie数量和大小有限制3. 性能影响&#xff1a;Cookie携带过多增加网络流量4. 数据类型限制&#xff1a;Cookie的value值只能是字符串 &#x1f496;The Begin&#x1f4…

82.给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。实现返回已排序的链表

删除排序链表中的重复元素 II 一、题目描述 82. 删除排序链表中的重复元素 II 给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。 示例 1: 输入:head = [1,2,3,3,4,4,5] 输出:[1,2,5] 示例 2: 输入:hea…

华为云征文|部署电影收藏管理器 Radarr

华为云征文&#xff5c;部署电影收藏管理器 Radarr 一、Flexus云服务器X实例介绍1.1 云服务器介绍1.2 应用场景1.3 核心竞争力 二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 Radarr3.1 Radarr 介绍3.2 Docker 环境搭建3.3 Radarr 部署3.4 Ra…

ubuntu24安装cuda和cudnn

一、安装cuda 确保显卡驱动正确安装 终端输入&#xff1a; nvidia-smi显示下面结果&#xff0c;说明显卡驱动安装正常&#xff0c;可以进行下一步 1.去官网下载CUDA&#xff0c;需要注册账号下载 https://developer.nvidia.com/cuda-toolkit-archive由于我们显卡支持12.2&…

[免越狱]FLEXTool/FLEX 炫酷功能怎么添加到目标App

原因&#xff1a; 这么炫酷的功能&#xff0c;手机又不想越狱&#xff0c;又想体验一波&#xff0c;于是研究了他源码&#xff0c;实现了功能。 1. 下载源码 https://github.com/FLEXTool/FLEX?tabreadme-ov-filehttps://github.com/FLEXTool/FLEX?tabreadme-ov-file 2. 修…

TeamTalk消息服务器(未读计数)

信令和协议设计 enum MessageCmdID {// ...... 省略无关逻辑 CID_MSG_UNREAD_CNT_REQUEST 775,CID_MSG_UNREAD_CNT_RESPONSE 776,// ...... 省略无关逻辑 };message IMUnreadMsgCntReq{//cmd id: 0x0307required uint32 user_id 1;optional bytes attach_data 20; }mes…

[Labview]图片叠加下的表格视图拖拽功能:挖坑粗糙版

没错&#xff0c;又是Labview表格T - T 由于项目中用到的表格上有一张用于画框的二维图片&#xff0c;感兴趣可看这篇 [Labview] 表格单元格外边框 二维图片叠加绘图 因此在滚动条与鼠标滚轮的基础上&#xff0c;想再增加一个拖拽移动的功能。 但 [二维图片] 并没有 拖拽开始…

windows C++ 并行编程-矩阵乘法

下面我们尝试分步演练演示如何使用 C AMP 加速矩阵乘法的执行。 提供了两种算法&#xff0c;一种不使用平铺&#xff0c;一种使用平铺&#xff0c;看看两者的差别。 在 Visual Studio 中创建项目 在菜单栏上&#xff0c;选择“文件”>“新建”>“项目”&#xff0c;打开…

[Algorithm][综合训练][过桥][最大差值][兑换零钱]详细讲解

目录 1.过桥1.题目链接2.算法原理详解 && 代码实现 2.最大差值1.题目链接2.算法原理详解 && 代码实现 3.兑换零钱1.题目链接2.算法原理详解 && 代码实现 1.过桥 1.题目链接 过桥 2.算法原理详解 && 代码实现 解法&#xff1a;贪心 BFS #in…

【Slurm集群在centos7上的搭建】

Slurm集群在centos7上的部署 集群基本情况1. 前期准备工作2.网络配置3.NTP时间同步配置4.NFS共享目录配置5.NIS用户管理配置6.Munge通信部署7.安装Mariadb数据库以及Slurm安装配置7.1安装配置Mariadb及SlurmID配置7.2Slurm安装配置 附录配置文件slurm.conf&#xff1a;slurmdbd…

Redis从入门再再到入门(下)

文章目录 1.Redis远程连接1.1 Redis远程连接配置1.2 通过桌面版图形化界面连接Redis1.3 通过IDEA中的插件连接Redis 2.Jedis的基本使用2.1 jedis概述2.2 jedis的基本操作2.3 jedis连接池 3.Spring整合Redis3.1 新建maven工程,引入相关依赖3.2 redis.properties3.3 spring-redis…