计算机网络:数据链路层 - 封装成帧 透明传输 差错检测

计算机网络:数据链路层 - 封装成帧 & 透明传输 & 差错检测

    • 数据链路层概述
    • 封装成帧
    • 透明传输
    • 差错检测


数据链路层概述

在这里插入图片描述

从数据链路层来看,主机 H1 到 H2 的通信可以看成是在四段不同的链路上的通信组成的,所谓链路就是从一个节点到相邻节点的一段物理线路,中间没有任何其他的交换节点。要在链路上传输数据,仅有链路还不够,还需要一些通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路

在这里插入图片描述

在数据链路层上传输的数据包又称为也就是说数据链路层以帧为单位传输和处理数据

接下来我们介绍数据链路层的三个重要问题,他们是封装成帧透明传输差错检测


封装成帧

所谓封装成帧,就是指数据链路层给上层交付下来的协议数据单元添加帧头和帧尾,使之成为帧,例如下图所示:

在这里插入图片描述

在帧头和帧尾中包含有重要的控制信息。

接收方的数据链路层如何从物理层交付的比特流中提取出一个个的帧呢?实际上帧头和帧尾的作用之一就是帧定界。若忽略与帧定界无关的控制信息,帧可以如下表示:
在这里插入图片描述
帧定界一般用特殊的控制字段:

SOH:帧开始符,16进制表示为01H
EOT:帧结束符,16进制表示为04H

不过要注意,不是所有的帧都使用SOHEOF

假设发送端由于故障,某一个帧发送到一半停止,然后重新发送:
在这里插入图片描述
由于帧定界符的存在,第一个SOH没有匹配的EOT,接收方就知道这不是一个完整的帧,于是把它丢弃。第二次再收到一个同时带有SOHEOF的帧,才算收到一个完整的帧。

现在考虑这样一个问题:如果一个分组的数据段太短,那么首部和尾部的占比就很大,传输效率低;如果一个分组的数据部分太长,此时就削弱了分组的优点。

因此,每一种数据链路层协议都规定了能传输的数据部分上限,及最大传送单元MTU 

在这里插入图片描述
一般来说,MTU的默认值是1500 byte,也就是说网络层交给数据链路层的数据部分,不能超过1500 byte


透明传输

接下来我们介绍透明传输的问题。透明传输是指数据链路层对上层交付的传输数据并没有任何限制,就好像数据链路层不存在一样

我们来举例说明。这是发送方数据链路层收到其上层交付的协议数据单元,给其添加帧头SOH和帧尾EOT,使其成为帧:

在这里插入图片描述
但是我们的数据部分中也存在和EOT一样的数据段,那么就会发送以下情况:

在这里插入图片描述

数据段中的EOT被错误的认为是一个帧尾,此时把前面一段误以为是一个帧,后面的的数据因为缺少SOH而被丢弃。

也就是说,数据链路层对上层交付的协议数据单元有限制,其内容不能包含帧定界符。那么此时数据链路层就不能算作透明传输,因为网络层传输的数据会受到数据链路层的影响,不能传输SOHEOT这样的字段,不能当作数据链路层不存在。

实际上,各种数据链路层协议一定会想办法来解决这个问题。

规则如下:

在发送帧之前对帧的数据部分进行扫描,每出现一个帧定界符EOTSOH,就在其前面插入一个转义字符ESC

在这里插入图片描述

接收方数据链路层在物理层交付的比特流中提取帧,遇到第一个帧定界符SOH时,认为这是帧的开始。当遇到转移字符ESC时,就知道其后面的一字节内容虽然是SOH或者EOT,但它是数据而不是定界符剔除转移字符后,将其后面的内容作为数据继续提取

大家再来思考一下这种情况。在上层交付给数据链路层的协议数据单元中,既包含了帧定界符,又包含了转义字符ESC

在这里插入图片描述

这应该怎么处理呢?方法仍然是在发送帧之前对帧的数据部分进行扫描,每出现一个帧定界符或转义字符就在其前面插入一个转义字符

在这里插入图片描述
当接收方遇到ESCESC这样的数据后,就知道第一个ESC是转义字符,第二个ESC是数据,于是剔除第一个ESC,保留第二个ESC

需要说明的是,转义字符是一种特殊的控制字符,其长度为一个字节,十进制值为27,而并不是 ESC这三个字符。

以上我们讲述的方式叫做字节填充,在PPP协议中还存在一中比特填充的方式来进行透明传输,这个在PPP协议的博客中讲解。


差错检测

再来看差错检测,发送方将封装好的帧通过物理层发送到传输媒体。帧在传输过程中遭遇干扰后,可能会出现误码,也就是比特 0 可能变成了比特 1,反之亦然

在一段时间内,传输错误的比特占所传输比特总数的比率,称为误码率。

但是接收方主机如何判断帧在传输过程中是否出现了误码呢?

这可以通过检错码来发现。发送方在发送帧之前基于待发送的数据和检错算法计算出检错码,并将其封装在帧尾。接收方主机收到帧后,通过检错码和检错算法就可以判断出帧在传输过程中是否出现了误码

在数据链路层传输的帧中,广泛使用了循环冗余校验 CRC 的检错技术。

在这里插入图片描述
假定发送端发送的原始数据为k个比特,对原始数据进行CRC运算,产生了n位冗余码FCS,把n位冗余码FCS放入帧的末尾一起发送出去。

那么我们现在就来讲解一下这个冗余码FCS是如何计算的:

  1. 在原始k位数据后面加n0
  2. 用指定的n + 1位除数p,对这个k + n位的数据段做模2除法
  3. 最后得到的n位除数就是冗余码FCS,用冗余码FCS替换最后的n0

假设我们现在的原始数据为101001,约定的除数p1101

在这里插入图片描述

除数p为4位数,那么n就是4 - 1 = 3位,因此在101001后面添上3位0:

在这里插入图片描述

现在就可以开始进行模2除法了:

在这里插入图片描述

所谓模2除法,就是每次进行相除操作时,上下按位异或,比如以上式子中10101101按位异或就是0111,在后面补一位0就是1110。以此类推,一直计算下去:

在这里插入图片描述
由于我们的除数pn + 1位,所以最后的余数一定是小于等于n位的,如果不够n位就在前面补0,补到n位。然后把这n位除数替换掉原数据中的n位0,得到101001 001

101001 001这一段数据中,101001是原始的数据, 001就是冗余码FCS

一开始我们拿p除以101001 000,余数为001。我们把001补上去后,数据变成了101001 001,那么p除以101001 001就应该是0。因此如果接收端用p除以k + n位数据等于0,就说明数据没有出问题,是正常的。但是如果结构非0,说明有比特位出现了差错,那么接收端就可以知道传输出问题,进行后续操作了。

要注意的是,这个除数p是一开始双方就约定好的,因此双方都是知道拿p去除以这个数据段。


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

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

相关文章

从0到1构建uniapp应用-store状态管理

背景 在 UniApp的开发中,状态管理的目标是确保应用数据的一致性,提升用户体验,并简化开发者的工作流程。通过合理的状态管理,可以有效地处理用户交互、数据同步和界面更新等问题。 此文主要用store来管理用户的登陆信息。 重要…

数据结构——图的应用(最小生成树,最短路径,拓扑排序,关键路径)

目录 1.最小生成树 1.概念回顾——生成树 2.最小生成树概念 2.构造最小生成树 1.MST性质 2.Prim算法 3.Kruskal 算法 4.两种算法比较 3.最短路径 1.两点间最短路径 2.某源点到其它各点最短路径 3.单源最短路径——用Dijkstra算法 4.所有顶点间的最短路径…

QML嵌套页面的实现学习记录

StackView是一个QML组件,用于管理和显示多个页面。它提供了向前和向后导航的功能,可以在堆栈中推入新页面,并在不需要时将页面弹出。 ApplicationWindow {id:rootvisible: truewidth: 340height: 480title: qsTr("Stack")// 抽屉:…

【GlobalMapper精品教程】073:像素到点(Pixels-to-Points)从无人机图像轻松生成点云

文章目录 一、工具介绍二、生成点云三、生成正射四、生成3D模型五、注意事项一、工具介绍 Global Mapper v19引入的新的像素到点工具使用摄影测量原理,从重叠图像生成高密度点云、正射影像及三维模型。它使LiDAR模块成为已经功能很强大的的必备Global Mapper扩展功能。 打开…

Linux的中间件

我们先补充点关于awk的内容 awk的用法其实很广。 $0 表示整条记录 变量: NF 一行中有多少个字段(表示字段数) NR : 代表当前记录的序号,从1开始计数。每读取一条记录,NR的值就会自动增加1。(…

编程生活day6--回文子串、蛇形填充数组、笨小猴、单词排序

回文子串 题目描述 给定一个字符串,输出所有长度至少为2的回文子串。 回文子串即从左往右输出和从右往左输出结果是一样的字符串,比如:abba,cccdeedccc都是回文字符串。 输入 一个字符串,由字母或数字组成。长度5…

【设计原则】CQRS

文章目录 概述组成与特点优缺点何时使用 CQRS 模式推荐阅读 概述 CQRS(Command Query Responsibility Segregation)是一种软件设计模式,其核心设计理念是将一个对象的数据访问(查询)和数据操作(命令&#…

显示器and拓展坞PD底层协商

简介: PD显示器或者PD拓展坞方案中,连接显示设备的Type-C端口主要运行在DRP模式,在此模式下可以兼容Source(显卡)、Sink(信号器)、DRP(手机、电脑)模式的显示设备。 Sou…

探索设计模式的魅力:揭秘B/S模式在AI大模型时代的蜕变与进化

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》《MYSQL应用》 💪🏻 制定明确可量化的目标,坚持默默的做事。 🚀 转载自热榜文章:探索设计模式的魅力:揭秘B/S…

ArcGIS Pro导出布局时去除在线地图水印

目录 一、背景 二、解决方法 一、背景 在ArcGIS Pro中经常会用到软件自带的在线地图,但是在导出布局时,图片右下方会自带地图的水印 二、解决方法 解决方法:添加动态文本--服务图层制作者名单,然后在布局中选定位置添加 在状…

【星计划★C语言】c语言初相识:探索编程之路

🌈个人主页:聆风吟_ 🔥系列专栏:星计划★C语言、Linux实践室 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. ⛳️第一个c语言程序二. ⛳️数据类型2.1 🔔数据单位2.2 &…

【ARM 嵌入式 C 常用数据结构系列 25 -- container_of 宏 使用介绍】

文章目录 container_of 宏container_of 宏的定义container_of 使用示例应用场景总结 container_of 宏 在Linux内核编程中,container_of宏是一个非常有用的工具,它允许开发者从指向结构体中某个成员的指针反向获得包含它的完整结构体的指针。这在实现基于…

Vol.34 Good Men Project:一个博客网站,每月90万访问量,通过付费订阅和广告变现

今天给大家分享的案例网站是:Good Men Project,这是一个专门针对男性成长的博客网站,内容包括人际关系、家庭、职业发展等话题。 它的网址是:The Good Men Project - The Conversation No One Else Is Having 流量情况 我们先看…

Linux :进程的程序替换

目录 一、什么是程序替换 1.1程序替换的原理 1.2更改为多进程版本 二、各种exe接口 2.2execlp ​编辑 2.2execv 2.3execle、execve、execvpe 一、什么是程序替换 1.1程序替换的原理 用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往…

LongAdder 和 Striped64 基础学习

cs,表示 Cell 数组的引用;b,表示获取的 base 值,类似于 AtomicLong 中全局变量的 value 值,在没有竞争的情况下数据直接累加到 base 上,或者扩容时,也需要将数据写入到 base 上;v&am…

32-2 APP渗透 - 移动APP架构

前言 app渗透和web渗透最大的区别就是抓包不一样 一、客户端: 反编译: 静态分析的基础手段,将可执行文件转换回高级编程语言源代码的过程。可用于了解应用的内部实现细节,进行漏洞挖掘和算法分析等。调试: 排查软件错误的一种手段,用于分析应用内部原理和行为。篡改/重打…

Unity | Shader基础知识(第十一集:什么是Normal Map法线贴图)

目录 前言 一、图片是否有法线贴图的视觉区别 二、有视觉区别的原因 三、法线贴图的作用 四、信息是如何存进去的 五、自己写一个Shader用到法线贴图 六、注意事项 七、作者的话 前言 本小节会给大家解释,什么是法线贴图?为什么法线贴图会产生深…

GPT4不限制使用次数了!GPT5即将推出了!

今天登录到ChatGPT Plus账户,出现了如下提示: 已经没有了数量和时间限制的提示。 更改前:每 3 小时限制 40 次(团队计划为 100 次);更改后:可能会应用使用限制。 GPT-4放开限制 身边订阅了Ch…

C++多线程:单例模式与共享数据安全(七)

1、单例设计模式 单例设计模式,使用的频率比较高,整个项目中某个特殊的类对象只能创建一个 并且该类只对外暴露一个public方法用来获得这个对象。 单例设计模式又分懒汉式和饿汉式,同时对于懒汉式在多线程并发的情况下存在线程安全问题 饿汉…

【原创】基于分位数回归的卷积长短期结合注意力机制的神经网络(CNN-QRLSTM-Attention)回归预测的MATLAB实现

基于分位数回归的卷积长短期结合注意力机制的神经网络(CNN-QRLSTM-Attention)是一种用于时间序列数据预测的深度学习模型。该模型结合了卷积神经网络(CNN)、长短期记忆网络(LSTM)和注意力机制(A…