当前位置: 首页 > news >正文

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

      🧸安清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,它们定义了数据封装和传输的具体方法。在本书中重要程度仅次于网络层,是非常重要的学习章节。下面我将逐步为大家介绍其重点。


🎯一.数据链路层的功能

  1. 链路是一条无源的点到点的物理线路段,中间没有任何其他的交换结点
  2. 数据链路层传送的是。 

链路层就是把上层的网络层给它的这个数据包,装入到帧这个结构的数据部分,中间链路上的比特经过曼彻斯特或差分曼彻斯特等编码方式传输到对端。数据从结点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流量控制,可靠传输,滑动窗口机制

✨基本概念

  1. 流量控制是确保发送方不会因为发送数据过快而导致接收方处理不过来的情况。TCP通过滑动窗口机制来实现流量控制,接收方根据自己的缓冲区容量来调整通告给发送方的窗口大小,从而控制发送方的数据发送速率。我们假设A是发送方,B是接收方,流量控制是控制发送方的发送速度和接收方的接受速度保持一致,即控制的是发送方。
  2. 滑动窗口机制是TCP协议中用于流量控制和可靠传输的一个重要技术。它允许发送方在没有收到确认应答的情况下,继续发送一定数量的数据,这个数量由窗口大小决定。这样可以有效提高数据传输的效率,因为它减少了发送方因为等待确认而产生的空闲时间。
  3. 滑动窗口机制还包括快速重传和超时重传机制。快速重传是指发送方在连续收到三个重复确认(即接收方请求重传丢失的数据包)时,立即重传丢失的数据包,而不是等待超时计时器到期。这样可以快速响应丢包情况,提高传输效率。

🚦 3.2停止-等待协议

✨3.2.1无差错情况和超时重传

“停止等待”就是每发送完一个分组就停止发送,等待对方的确认。有两种情况会出现,分别是无差错情况和有差错情况。

  • 在无差错情况中,A发送分组M1,发送完就暂停发送,等待B的确认。B收到了M1就向A发送确认。往后依此类推。
  • 在有差错情况中,A向B发送时,出现了帧丢失的情况或B收到帧后检查发现有错误,此时,A就引入了超时重传机制。A由于没有收到B发送来的确认,因而重传前面发送过的分组。

✨3.2.2确认丢失和确认迟到

  1. 确认丢失  (a)A在设定的超时重传时间里没有收到B发送的确认信息,A无法判断数据处于丢失,出错或B发送的确认丢失某种状态,所以A继续向B传输原来未发送过去的数据M1,直到收到了确认信息,继续传输数据。
  2. 确认迟到  (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可以使图片点击放大&#xff0c;不用在写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展览馆项目&#xff0c;需要考虑以下技术和预算方面的信息&#xff1a; 技术需求&#xff1a; 1、三维建模技术&#xff1a;利用3D软件&#xff08;3ds max、maya、blender、c4d等&#xff09;制作展馆和展品的3D模型 2、Web3D技术&#xff1a;如WebGL&#xff0c…...

C++标准库容器类——string类

引言 在c中&#xff0c;string类的引用极大地简化了字符串的操作和管理&#xff0c;相比 C 风格字符串&#xff08;char*或cahr[]&#xff09;&#xff0c;std::string 提供了更高效和更安全的字符串操作。接下来让我们一起来深入学习string类吧&#xff01; 1.string 的构造…...

Qt --- 常用控件的介绍 --- 其他控件

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

spark读取数据性能提升

1. 背景 spark默认的jdbc只会用单task读取数据&#xff0c;读取大数据量时&#xff0c;效率低。 2. 解决方案 根据分区字段&#xff0c;如日期进行划分&#xff0c;增加task数量提升效率。 /*** 返回每个task按时间段划分的过滤语句* param startDate* param endDate* param …...

一次使用threading.Thread来实现Pytorch多个模型并发运行的失败案例

文章目录 背景我的做法&#xff08;但证明不起效果&#xff09; 背景 我有多个pytorch GPU模型&#xff0c;他们有不同的参数&#xff08;也就是说不是共享的&#xff09;&#xff0c;但是相同的数据输入&#xff0c;想要并发运行。 不并发运行&#xff0c;当然就是循环喽。 …...

HashMap源码

简介 HashMap 是一种基于哈希表的 Map 接口实现&#xff0c;它存储键值对&#xff08;key-value pairs&#xff09;&#xff0c;并允许使用键来快速检索值。在 Java 中&#xff0c;HashMap 是 java.util 包的一部分&#xff0c;它不是同步的&#xff0c;这意味着它不是线程安全…...

探索 Web Speech API:实现浏览器语音识别与合成

引言 Web Speech API 是一项由 W3C 开发的 Web 标准&#xff0c;为开发者提供了在 Web 应用程序中实现语音识别和语音合成的能力。通过 Web Speech API&#xff0c;我们可以让网页与用户进行语音交互&#xff0c;实现更加智能化和便捷的用户体验。本文将深入探讨 Web Speech A…...

python基础题练习

1.可否定义一个sum函数呢&#xff1f;返回指定区间的值的和&#xff1f;例如&#xff0c;区间[1,4]的和为123410返回指定区间值的平方的和呢&#xff1f;立方呢&#xff1f; 代码&#xff1a; # 计算从start到end&#xff08;包括end&#xff09;的所有整数的和。 def sum_ra…...

工业交换机如何保证数据的访问安全

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

jmeter得到的文档数据处理

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

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...