【计算机网络】数据链路层的功能

数据链路层的基本功能:

  • 封装成帧
  • 透明传输
  • 差错检测

数据链路层使用的信道主要有两种

  • 点对点信道——PPP协议
  • 广播信道——CSMA/CD协议(有线局域网)、CSMA/CA协议(无线局域网)

数据链路层所处的地位

从图中可以看出,数据从主机H1送到主机H2需要在路径中的各结点的协议栈向上和向下流动多次。

但当我们学习数据链路层时,通常可以只关心协议栈中平方向的各数据链路层。
于是当主机H1向H2发送数据时,可以想象数据就是在各相关设备的数据链路层之间沿水平方向传送的。
即可通过以下这样的链路:H1的链路层—>R1的链路层—>R2的链路层—>H2的链路层,其中三段不同的数据链路可能采用不同的数据链路层协议。

一些基本概念

1)链路。指从一个结点到相邻结点的一 段物理线路。当进行数据通信时,两台计算机之间的通信路径往往要经过许多段这样的链路。可见链路只是一条路径的组成部分。
2)数据链路。当在一条链路上传送数据时,除了需要链路本身,还需要- -些必要的通信协议来控制这些数据的传输,把实现这些协议的硬件和软件加到链路上,就构成了数据链路。有时也把上面所说的链路称为物理链路,而把数据链路称为逻辑链路
3)帧。数据链路层对等实体之间进行逻辑通信的协议数据单元。数据链路层把网络层下交的数据构成帧发送到链路上,并把接收到的帧中的数据取出并上交给网络层

为网络层提供的服务

1)无确认的无连接服务。源主机发送帧时不需要先建文链路连接,目的主机收到帧时不需要发回确认。数据传输的可靠性由高层负责。适用于误码率较低的信道,如以太网。
2)有确认的无连接服备。源主机发送帧时不需先建立砟路连接,但目的主机收到帧时必须发回确认。源主机在所规定的时间内未收到确定信号时,就重传丢失的帧,以提高传输的可靠性。该服务适用于误码率较高的信道,如无线通信。
3)有确认的面向连接服务。帧传输过程分为三个阶段:建立链路、传输帧、释放链路。目的主机对收到的每-一个帧都要返回确认。该服务适用于可靠性要求较高的场合。

链路管理

数据链路层的建立、维持和释放过程称为链路管理。它主要用于面向连接的服务
链路两端的结点要进行通信,必须首先确认对方已处于就绪状态,并交换一些必要的信息以对帧序号要返回确认。该服务适用于可靠性要求较高的场合初始化,然后才能建立连接,在传输过程中要能维持连接,而在传输完毕后要释放该连接

封装成帧与透明传输

封装成帧是指在一段数据的前后分别添加首部尾部,构成,帧是数据链路层的数据传送单元
帧长等于帧的数据部分长度加上首部尾部的长度。
首部和尾部中含有很多控制信息(PCI),它们的一个重要作用是确定帧的界限,即帧定界
接收方能从接收到的二进制比特流中区分出帧的起始与终止,即帧同步
如在HDLC协议中,用标识位F 11111)来标识帧的开始和结束。在通信过程中,检测到帧标识位F即认为其是帧的开始,然后一旦检测到帧标识位 F即表示帧的结束。HDLC标准帧格式如图所示。为了提高帧的传输效率,应当使帧的数据部分的长度尽可能地大于首部和尾部的长度,但随着帧长的增加,传输差错发生的概率也随之提高,发生差错时重传的代价也越大,因此每种链路层协议都规定了帧的数据部分的长度上限,即最大传送单元

若在数据中恰好出现与帧定界符相同的比特组合(会误认为“传输结束”而丢弃后面的数据),要采取有效的措施来解决这个问题,即透明传输。更确切地说,透明传输是指不论所传的数据是什么样的比特组合,都能够按原样无差错地在这个数据链路上传输。

流量控制接

因为链路两端结点的工作速率和缓存空间存在差异,所以发送方的发送能力可能大于接收方的接收能力。
此时若不适当限制发送方的发送速率,前面来不及接收的帧将被后面不断发送来的帧“淹没”。诰成帧的丢失而出错。
因此,流量控制实上就是限制发送万的发送速率,使之不超过接收方的接收能力。这个过程需通过某种反馈机制,使发送方知道在什么情况下可以接着发送下一帧,而在什么情况下必须暂停发送,以等待收到某种反馈信息后继续发送。
在OSI体系结构中,数据链路层具有流量控制的功能。而在TCP/P体系结构中,流量控制功能被移到了传输层。它们控制的对象不同。
对数据链路层来说控制的是相邻结点之间的数据链路上的流量,而对传输层来说,控制的则是从源端到目的端之间的流量。

差错检测

因为信道噪声等原因,帧在传输过程中可能会出现错误,这些错误分为位错和帧错。
1)位错:帧中某些位出现差错,通常采用循环冗余检验(CRC)来发现位错。
2)帧错:帧丢失、帧重复或帧失序等错误,它们都属于传输差错。

过去OSI的观点是:必须让数据链路层向上提供可靠传输。因此在CRC检错的基础上,增加了帧编号、确认和重传机制。收到正确的帧就要向发送方发送确认。发送方在一.定期限内若未.收到对方的确认,就认为出现了差错,因此进行重传,直到收到确认为止。
现在,在通信质量较差的无线传输中,数据链路层依然使用确认和重传机制,向上提供可靠的传输服务。对于通信质量良好的有线链路,数据链路层已不再使用确认和重传机制,即不要求向上提供可靠传输的服务,而仅需进行CRC检错,目的是将有差错的帧丢弃,保证上交的帧都是正确的,
而对出错的帧的重传任务则由高层协议(如传输层TCP协议)完成。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

苍穹外卖项目---------收获以及改进(9-12)

①Spring Task-------实现系统定时任务 概念: 应用场景: 使用步骤: 实现订单超时和前一天派送中的订单的自动任务处理: Component Slf4j public class Mytask {Autowiredprivate OrderServiceimpl orderServiceimpl;/*** 处理订…

05-11 周六 一键完成FastBuild镜像部署功能的开发

05-11 周六 一键完成FastBuild镜像部署功能的开发 时间版本修改人描述2024年5月11日21:50:15V0.1宋全恒新建文档 简介 注,需要提前完成从DockerService到FastBuild主机的免密,因为脚本使用了ssh命令。 博客描述04-22 周日 阿里云-瑶光上部署FastBuild过…

最大子序列的分数

题目链接 最大子序列的分数 题目描述 注意点 n nums1.length nums2.length从nums1和nums2中选一个长度为k的子序列对应的下标对nums1中下标对应元素求和&#xff0c;乘以nums2中下标对应元素的最小值得到子序列的分数0 < nums1[i], nums2[j] < 1000001 < k < …

MVCC 详解

介绍 MVCC&#xff0c;全称 Multi-Version Concurrency Control&#xff0c;即多版本并发控制 MVCC的目的主要是为了提高数据库并发性能&#xff0c;用更好的方式去处理读-写冲突&#xff0c;做到即使有读写冲突时&#xff0c;也能做到不加锁。 这里的多版本指的是数据库中同时…

Django项目运行报错:ModuleNotFoundError: No module named ‘MySQLdb‘

解决方法&#xff1a; 在__init__.py文件下&#xff0c;新增下面这段代码 import pymysql pymysql.install_as_MySQLdb() 注意&#xff1a;确保你的 python 有下载 pymysql 库&#xff0c;没有的话可以使用 pip install pymysql安装 原理&#xff1a;用pymysql来代替mysqlL…

Mysql数据库的基础学习

为什么使用数据库&#xff1f; 1.持久化&#xff1a;将数据保存到可掉电式存储设备中以供使用。 数据库相关概念&#xff1a; DB:数据库&#xff08;Databass&#xff09;即存储数据的仓库&#xff0c;本质是一个文件系统&#xff0c;保存了一系列有组织的数据DBMS:数据库管…

【简单介绍下Sass】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

怎么使用远程桌面传输文件?

微软提供的远程桌面功能是一项强大的工具&#xff0c;可让您在同一网络下远程访问和管理其他计算机。除了远程控制&#xff0c;它还支持文件传输功能&#xff0c;为Windows用户提供了极大的便利。在接下来的内容中&#xff0c;我们将介绍如何使用远程桌面传输文件。 如何从远程…

求正方形中一角四边形的面积

求绿色四边形的面积&#xff1f; 假设大正方形的边长为2a 通过中间的点做十字的辅助线&#xff0c;假设两条辅助线的长度为xy,uv 所以 1/2ay1/2au42① 1/2ay1/2av38② 1/2ax1/2av28③ ①③ 1/2ay1/2au1/2ax1/2av4228 &#xff08;1/2ay1/2av&#xff09;1/2au1/2ax4228 代入…

SeetaFace6人脸特征提取与对比C++代码实现Demo

SeetaFace6包含人脸识别的基本能力&#xff1a;人脸检测、关键点定位、人脸识别&#xff0c;同时增加了活体检测、质量评估、年龄性别估计&#xff0c;并且顺应实际应用需求&#xff0c;开放口罩检测以及口罩佩戴场景下的人脸识别模型。 官网地址&#xff1a;https://github.co…

Hive Transaction事务表(含实现原理)

Hive Transaction事务表 在Hive中&#xff0c;事务表&#xff08;Transactional Tables&#xff09;允许用户执行事务性操作&#xff0c;包括ACID&#xff08;原子性、一致性、隔离性、持久性&#xff09;特性。事务表是在Hive 0.14版本引入的&#xff0c;并且在后续版本中不断…

conan2 基础入门(05)-(静态库动态库)(DebugRelease)

conan2 基础入门(05)-(静态库&动态库)(Debug&Release) 文章目录 conan2 基础入门(05)-(静态库&动态库)(Debug&Release)⭐准备预备文件和Code ⭐静态库&动态库静态库动态库 ⭐Debug&ReleaseReleaseDebug END视频教学settings.yml ⭐准备 本文均在windo…

以太ETH链市值机器人

在数字资产交易市场的浪潮中&#xff0c;如何高效地管理市值、提升交易流动性并保障资金安全&#xff0c;一直是交易所和项目方关注的焦点。市值管理机器人飞机//aishutuyu以太ETH链市值机器人凭借其卓越的功能和强大的安全保障&#xff0c;为数字资产交易市场带来了革命性的变…

GeoServer安装以及部署

GeoServer介绍 GeoServer是一个开源的服务器软件&#xff0c;用于共享和编辑地理空间数据。它支持多种地理空间数据格式&#xff0c;并且可以发布为多种服务格式&#xff0c;如Web Feature Service (WFS)、Web Map Service (WMS)、Web Coverage Service (WCS)&#xff0c;以及…

十天学会单片机可能吗?单片机入门需要多久?

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 十天学“会”单片机&#xf…

前后端完全开源!功能丰富的在线教室项目:Agora Flat

Agora Flat&#xff1a;高效集成的在线教室解决方案&#xff0c;重塑互动学习新体验。- 精选真开源&#xff0c;释放新价值。 概览 Agora Flat是在GitHub平台上公开分享的一个全面开源项目&#xff0c;它精心设计为一个高性能的在线教室解决方案&#xff0c;旨在便捷地搭建支持…

Python装饰器带括号和不带括号的理解

装饰器是 Python 中一个强大且灵活的特性&#xff0c;允许用户在不修改原有函数或类定义的基础上&#xff0c;为其增加额外功能。 今天在尝试自定义 Python 装饰器的时候遇到了一个问题&#xff0c;因为以前一直是使用装饰器&#xff0c;基本没有自定义过装饰器&#xff0c;所…

KEIL declaration may not appear after executable statement in block

KEIL declaration may not appear after executable statement in block 这个问题也是比较经典&#xff0c;就是不允许你的变量定义位置不允许在下边的代码区域&#xff0c;只允许在最上方 ‍ 修改编码模式为C99解决 ‍ ​​

机器学习周报第41周

目录 摘要Abstract一、文献阅读1.1 摘要1.2 背景1.3 论文方法1.3.1 局部特征提取1.3.2 局部特征转换器 (LoFTR) 模块1.3.4 建立粗粒度匹配1.3.5 精细匹配 1.4 损失1.5 实现细节1.6 实验1.6.1 单应性估计1.6.2 相对位姿估计 二、论文代码总结 摘要 本周阅读了一篇特征匹配领域的…

Git团队协作机制

Git 团队协作机制 1.团队内协作 小故事&#xff1a;岳不群手里有华山剑法但是不完整&#xff0c;需要弟子令狐冲进行完善&#xff0c;岳不群将华山剑法推送&#xff08;push&#xff09;到代码托管中心&#xff0c;这样岳不群就有属于自己的远程库&#xff0c;令狐冲从远程库…