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

目录

物理链路

逻辑链路

封装成帧(组帧)

帧定界

透明传输

SDU

差错控制

可靠传输

流量控制

介质访问控制


 主机需要实现第一层到第五层的功能,而路由器这种节点只需要实现第一层到第三层的这些功能

假设左边用户需要给右边用户发送数据,那这些数据会经过上面这些层次的逐层处理,到网络层这块,会把数据拆分成IP数据报,也就是拆分成分组,接下来网络层会把分组交给数据链路层进行传输,也就是数据链路层需要为网络层提供服务,需要把网络层的分组加上首部尾部的控制信息,封装成一个帧,紧接着数据链路层又会请求物理层的服务,让物理层把这些帧,也就是二进制数据,传输给下一个相邻的结点,那下一个结点的物理层会收到这些二进制比特串,并把这些二进制比特串交给第二层,数据链路层进行处理,那这个数据链路层实体需要还原IP数据报的信息,并且把IP数据报交给第三层的实体

总之数据链路层的对等实体之间,以为单位进行数据传输,但是帧的传输依赖于物理层提供的“比特传输”服务

数据链路层又会为上一层网络层提供服务,把网络层的IP数据报(分组)加上相应的控制信息封装成,然后以帧为单位,传输给下一个相邻节点对应的实体

物理链路

就是传输介质(0层)和物理层(1层)实现了相邻结点之间的“物理链路

那相邻结点之间有了物理链路就可以实现二进制比特的传输

逻辑链路

那数据链路层需要基于“物理链路”,进一步实现相邻结点之间逻辑上的无差错的“数据链路(逻辑链路)

一条物理链路受到环境噪声的干扰,有可能会在传输的过程中发生比特跳变,比如说1跳变成0,或者0跳变成1,那我们的数据链路层需要确保这些比特错误可以被发现,才能确保第二层实体给第三层提交的数据报没有错误

封装成帧(组帧)

把网络层交给它的数据封装成一个“帧”

帧定界

如何让接收方确定一个帧的界限,从哪开始,从哪结束,因为物理层只会传输二进制比特串,这些二进制比特串中有可能只会包含一个帧,有可能会包含多个帧,所以接收方的物理层实体把一系列二进制比特串,交给第二层时,第二层就要从一系列二进制串中,分辨出帧和帧的边界在哪,这就是帧定界要解决的问题

透明传输

接收方的链路层需要能从帧里面恢复原始的SDU

SDU

某一层的SDU+这一层的协议控制信息=这一层的协议数据单元

对于数据链路层来说,网络层委托给它传输的这坨IP数据报(分组),就是数据链路层的SDU,那这层的SDU数据被封装成帧后,首先会增加首部,尾部,这些控制信息,另外这个SDU内部有可能还要进行一些改造

对于接收方而言,它需要从帧中把SDU恢复原样,然后再交付给第三层的实体,对于网络层来说,他们并不能感知数据链路层对我的这个数据分组做的这些处理,也就说组帧和拆帧对于网络层来说是透明的,因此我们把这功能称为透明传输

差错控制

数据的接收方需要发现并解决一个帧里面的“位错”,比如0变1,1变0这种位错误

想要发现一个帧的位错误,可以采用检错编码的技术

解决这种位错误有两种方案

第一种最常用的方案是如果发信了比特错误之后,就直接把这个帧丢弃,然后想办法让发送方重新传输这个帧

而第二种方案是由接收方的数据链路层发现并纠正比特错误(需采用纠错编码

纠错编码技术是检错编码技术的进阶

检错编码只能检测比特错误

纠错编码既能检测比特错误,还能找到是哪些比特发生的错误,然后对这些比特进行纠正

可靠传输

这个要求数据的接收方能够发现并解决“帧错

帧错有三种情况,分别是帧丢失,帧重复,帧失序

流量控制

控制发送方发送帧的速率别太快,让接收方来得及接收

介质访问控制

这的介质指的是物理传输介质,通常来说“广播信道”需要实现介质访问控制的功能,因为广播信道在逻辑上是总线型的拓扑,会出现多个节点争抢传输介质的使用权,这个时候就需要通过数据链路层的某些协议,去决定这个传输介质的使用权或访问权,到底先分配给哪点节点,这就是介质访问控制要解决的问题

点对点信道通常不需要实现此功能,因为点对点信道意味着两个节点之间会有专属的传输介质,两个节点可以同时使用这个信道不用抢

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

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

相关文章

计算机网络 --应用层

计算机网络 --应用层 一、应用层概述 1. 功能 应用层为应用程序通信提供直接服务,这种服务是用户能够直接感知到的数据通信服务。核心功能包括: 文件传输:实现不同设备间文件的传输操作。访问管理:对用户访问资源等进行管理。电…

企业级Linux服务器初始化优化全流程

实战指南:企业级Linux服务器初始化优化全流程 本文基于某电商平台百万级并发服务器的真实调优案例整理,所有操作均在Rocky Linux8.5验证通过,不同发行版请注意命令差异 一、服务器安全加固(Situation-Task-Action-Result&#xff…

OpenAI流式解析

OpenAI 流式的代码: 首选一般请使用os.getenv 去读环境变量的内容 注意使用pip install python-dotenv 的安装方法 load_dotenv 是这个库提供的一个函数,用于读取 .env 文件并将其中定义的键值对设置为系统的环境变量。 默认情况下,load_…

数据抓取的缓存策略:减少重复请求与资源消耗

在数据采集领域,爬虫效率是决定项目成败的关键因素之一。传统的爬虫架构往往因请求频繁、资源消耗较大以及重复抓取等问题,导致效率低下。这些问题不仅拖慢了数据获取的速度,还可能引发目标服务器的过载风险,甚至导致爬虫被限制。…

k8s部署argocd

前言 ArgoCD是一个基于Kubernetes的GitOps持续交付工具,应用的部署和更新都可以在Git仓库上同步实现,并自带一个可视化界面。本文介绍如何使用GitHelmArgocd方式来实现在k8s中部署和更新应用服务; 安装Argocd 准备一个k8s集群,然…

【Linux】MAC帧

目录 一、MAC帧 (一)IP地址和MAC地址 (二)MAC帧格式 (三)MTU对IP协议的影响、 (四)MTU对UDP协议的影响 (五)MTU对TCP协议的影响 二、以太网协议 &…

MySQL - 数据库基础操作

SQL语句 结构化查询语言(Structured Query Language),在关系型数据库上执行数据操作、数据检索以及数据维护的标准语言。 分类 DDL 数据定义语言(Data Definition Language),定义对数据库对象(库、表、列、索引)的操作。 DML 数据操作语言(Data Manip…

GraalVM原生镜像支持:Spring Cloud应用启动速度提升90%

引言:当Spring Cloud遇见GraalVM,启动时间进入秒级时代 传统Spring Cloud应用因动态类加载、反射等机制导致启动缓慢(通常超过30秒),在Serverless和Kubernetes滚动更新场景下成为性能瓶颈。Spring Cloud 2023.x通过**G…

【Unity3D】摄像机适配场景以及Canvas适配

目录 宽度不变策略 高度不变策略 宽度不变策略 开发分辨率 750*1334 (宽高比:0.56) 真机分辨率 1170*2532 (宽高比:0.46) 真机宽高比<开发宽高比&#xff0c;采用宽度不变策略 理由&#xff1a;小于代表真机高度比开发高度更大&#xff0c;因此不需要担心高度上…

HarmonyOS:基于axios实现文件的下载以及下载进度的监听

#前言&#xff1a;项目开发中&#xff0c;避免不了实现文件下载功能&#xff0c;其他平台的下载都很成熟&#xff0c;网上的例子也比较多&#xff0c;我就自己项目中实现的下载功能做个总结&#xff0c;你可以参考我的写法实现功能。 下载封装基于axios实现的下载功能。 1.下载…

简单一周日期展示及选择切换

医院挂号&#xff0c;可能需要切换日期&#xff0c;选择一周内的某一天。 提供一周内的日期段&#xff0c;通过点击&#xff0c;切换到不同天。 简单的js&#xff0c;html实例。切换玩调用后台接口&#xff0c;实现后续逻辑。 使用Vue,插值语法&#xff0c;更简单。 一周日历…

二叉树的前,中,后序遍历

我们来了解一下二叉树的遍历&#xff0c;话不多说 二叉树的遍历的概念&#xff1a; 二叉树有四种遍历方式&#xff0c;分别为前序遍历&#xff0c;中序遍历&#xff0c;后序遍历和层序遍历&#xff0c;但我们今天谈谈前三种&#xff0c;并实现它 前序遍历&#xff1a; 按照根…

golang Error的一些坑

golang Error的一些坑 golang error的设计可能是被人吐槽最多的golang设计了。 最经典的err!nil只影响代码风格设计&#xff0c;而有一些坑会导致我们的程序发生一些与我们预期不符的问题&#xff0c;开发过程中需要注意。 ​​ errors.Is​判断error是否Wrap不符合预期 ​…

逼用户升级Win11,微软开始给Win10限速

随着Windows10的支持时间越来越短&#xff0c;微软也加大了对Win10用户的驱赶力度。 最近&#xff0c;微软官宣了将要在今年6月份降低OneNote for Windows 10的同步速度。软件也将和Windows10在今年的10月14日一同停止支持和维护。 这将影响实时协作和多设备访问。 对OneNote…

SpringMVC_day02

一、SSM 整合 核心步骤 依赖管理 包含 SpringMVC、Spring JDBC、MyBatis、Druid 数据源、Jackson 等依赖。注意点&#xff1a;确保版本兼容性&#xff08;如 Spring 5.x 与 MyBatis 3.5.x&#xff09;。 配置类 SpringConfig&#xff1a;扫描 Service 层、启用事务管理、导入…

Android14 原生PackageInstaller安装某些apk报错问题

最近遇到Android14安装客户一个大型app的时候&#xff0c;执行到开始安装的时候就直接闪退了&#xff0c;查看log发现下面报错&#xff1a; 03-25 18:01:29.531 3085 3085 E AndroidRuntime: java.lang.RuntimeException: Could not copy bitmap to parcel blob. 03-25 18:01:2…

SQLAlchemy关键词搜索技术深度解析:从基础过滤到全文检索

在数据驱动的应用开发中&#xff0c;基于关键词的模糊查询是常见的业务需求。SQLAlchemy作为Python生态中最流行的ORM框架&#xff0c;提供了多种实现关键词搜索的技术方案。本文将从性能、适用场景和技术复杂度三个维度&#xff0c;系统对比分析SQLAlchemy中关键词搜索的最佳实…

基于 ffmpeg 实现合并视频

ffmpeg是一个强大的多媒体处理工具&#xff0c;支持视频文件的合并。 列出目录下所有MP4文件 import os import glob# 当前目录 directory os.getcwd() directory "/directory/to/mp4/*"# 列出目录下所有MP4文件 files glob.glob(directory)# 排序 files.sort(…

算法每日一练 (20)

&#x1f4a2;欢迎来到张翊尘的技术站 &#x1f4a5;技术如江河&#xff0c;汇聚众志成。代码似星辰&#xff0c;照亮行征程。开源精神长&#xff0c;传承永不忘。携手共前行&#xff0c;未来更辉煌&#x1f4a5; 文章目录 算法每日一练 (20)不同路径 II题目描述解题思路解题代…

【银河麒麟系统常识】命令:uname -m(查看系统架构)

命令&#xff1a; uname -m 功能 常用的 Linux/Unix 终端命令&#xff0c;用于显示当前系统的硬件架构&#xff1b; 返回 返回系统的CPU架构类型&#xff0c;用于判断软件兼容性&#xff1b; 输出结果架构说明常见设备x86_64Intel/AMD 64位 CPU主流 PC、服务器aarch64ARM 64位 …