计算机网络——数据链路层(数据链路层功能概述)

计算机网络——数据链路层(数据链路层功能概述)

  • 数据链路层的功能
  • 数据链路层的基本概念
  • 封装成帧和透明传输

我们之前已经学完了物理层的所有内容,今天开始我们要进入数据链路层的学习,如果有小伙伴对物理层的内容感兴趣的话,可以点击这里:

https://blog.csdn.net/qq_67693066/category_12609808.html

我们今天来学习数据链路层的功能

数据链路层的功能

数据链路层作为计算机网络OSI七层模型中的第二层,位于物理层之上,网络层之下,它在物理层提供的比特流传输服务基础上,提供了更为复杂和高级的服务。数据链路层的主要功能包括但不限于以下几个方面:

  1. 成帧(帧同步)
  • 数据链路层将从网络层接收的数据分割并封装成帧,每个帧都有固定的格式,包括帧头、数据部分和帧尾。帧头包含诸如源地址、目的地址等控制信息,帧尾则通常包含用于检测错误的校验序列。
  • 接收方通过特定的帧定界符或标志位来识别帧的开始和结束,实现帧同步。
  1. 链路管理
  • 对于面向连接的服务,数据链路层负责链路的建立、维护和释放过程,例如PPP协议中的LCP阶段。
  1. 物理地址识别
  • 数据链路层使用物理地址(如MAC地址)来进行节点间的通信,确保数据帧能够被正确送达目标主机。
  1. 错误检测与纠正
  • 实现差错控制机制,如循环冗余校验(CRC)或其他校验方式,检测数据帧在传输过程中是否出错。
  1. 流量控制
  • 控制数据传输速率,防止发送方过快发送数据导致接收方无法及时处理,从而避免数据丢失或网络拥塞。
  1. 透明传输
  • 保证任意数据都能被正确传输,即使数据中包含了特殊字符(如帧界定符),也需要通过字节填充或字符转义等方法来解决透明性问题。
  1. 数据封装与解封装
  • 将来自网络层的数据报文添加必要的控制信息封装成帧进行传输,并在接收端将接收到的帧解封装还原为数据报文。
    在这里插入图片描述
    在这里插入图片描述

综上所述,数据链路层通过上述功能确保了在两个相邻节点之间进行可靠的数据传输,并为上层网络层提供了逻辑无差错的数据传输服务。

在这里插入图片描述在这里插入图片描述

数据链路层的基本概念

数据链路层是开放系统互连(OSI)参考模型中的第二层,它直接建立在物理层基础之上,为网络层提供服务。以下是数据链路层的一些基本概念:

  1. 链路(Link)
  • 链路指的是两个相邻网络节点之间的物理通道,比如一根铜缆、一段光纤、或者无线通信的电磁频谱范围。它是用来传输数据的物理媒介。
  1. 结点(Node)
  • 在数据链路层上,结点一般指计算机、交换机、路由器等设备,它们通过链路相互联接,参与到数据传输过程中。
  1. 数据链路(Data Link)
  • 数据链路是在物理链路上增加控制数据传输的协议之后形成的逻辑通信路径,它实现了比特流的组织、传输和错误控制等功能。
  1. 协议(Protocol)
  • 数据链路层协议定义了两个对等实体间如何进行通信的规则,包括数据帧的格式、编码、错误检测、确认机制、流量控制和访问控制等具体过程。
  1. 实体(Entity)和对等实体(Peer Entity)
  • 在数据链路层参与通信的任何设备或软件组件被称为实体;当这些实体遵循相同的协议并且可以直接相互交互时,则称它们为对等实体。
  1. 服务(Services)
  • 数据链路层向上层(即网络层)提供服务,主要包括通过帧的传输来实现数据的可靠传输,这可能涉及到帧的组装、拆分、寻址、错误检测与纠正、流量控制等服务。
  1. 协议数据单元(PDU)
  • 在数据链路层,PDU被称为“帧”(Frame)。数据链路层接收网络层传递的数据包,将其封装成帧,并附加相应的地址和控制信息。
  1. 信道类型
  • 数据链路层的信道可以分为两类:
  • 点对点通信(Point-to-Point):两个单一设备之间的直接连接,一对一通信方式。
  • 广播通信(Broadcast):在一个共享媒体上传输,使得所有相连的设备都能接收到同一份数据,一对多通信方式。
    在这里插入图片描述

总之,数据链路层的核心任务是确保经过物理层传输的数据的可靠性,通过对原始比特流的处理,提供一种无差错的、有序的数据传输服务。同时,它还负责处理物理层不可靠带来的各种问题,比如丢包、重传、流量控制等,为上层网络层提供更加稳定的数据传输环境。

封装成帧和透明传输

封装成帧(Framing)
封装成帧是数据链路层的重要功能之一。它指的是在数据链路层将上层(通常是网络层)传来的数据加上帧头和帧尾,形成一个完整且独立的数据传输单元,这个单元被称为帧。帧头通常包含源地址、目的地址以及其他控制信息,而帧尾包含用于检测数据传输错误的校验码(如CRC校验)。

具体流程如下:

  1. 数据链路层在接收到网络层的数据报文后,在其前后添加特定的首部和尾部信息。
  2. 首部信息可能包括源和目的MAC地址、协议类型标识等。
  3. 尾部信息通常包含校验序列,用于在接收端验证数据在传输过程中是否发生错误。
  4. 成帧后的数据能够被物理层准确识别并进行传输,同时在接收端也能准确地恢复原始的数据报文。
    在这里插入图片描述

透明传输(Transparent Transmission)
透明传输是指数据链路层对于上层传输的数据不加任何限制,不论数据内容包含何种比特组合,都能够准确无误地进行传输,就像数据链路层不存在一样。但在实际物理传输过程中,可能会遇到一些特殊情况,比如某些特定的比特序列恰好与帧界定符相同,这就可能导致帧边界混淆。
在这里插入图片描述

为了实现透明传输,需要采用以下几种机制:

  • 字符计数法:帧首部放置一个字段,用于记录帧内数据区字符的总数(通常是ASCII字符的数量)。然而,这种方法存在的问题是,如果计数值字段本身发生了错误,接收方将无法准确识别帧的结束位置,导致同步丢失
    在这里插入图片描述
  • 字符填充法:当数据中有帧定界符时,在其前插入一个特殊的转义字符,并在其后重新插入定界符以区别数据中的定界符和真正的帧结尾
    在这里插入图片描述在这里插入图片描述
  • 零比特填充法(如在以太网中):如果数据中连续出现了多个1比特(如在曼彻斯特编码中表示帧起始和结束的特定模式),则在传输时会在连续的1比特之间自动插入一个0比特,接收端再按照规定移除这些额外插入的0比特。
    在这里插入图片描述
  • 违规编码法:设计一种编码方案,使得数据中不可能自然出现与帧界定符一样的比特序列。
    在这里插入图片描述

通过以上方法,数据链路层能够确保任何类型的数据都能不受干扰地在网络中进行透明传输,既不会因为数据内容影响到帧的识别,也不会因帧边界模糊而导致数据解析错误。

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

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

相关文章

from_pretrained 做了啥

transformers的三个核心抽象类是Config, Tokenizer和Model,这些类根据模型种类的不同,派生出一系列的子类。构造这些派生类的对象也很简单,transformers为这三个类都提供了自动类型,即AutoConfig, AutoTokenizer和AutoModel。三个…

算法系列--动态规划--子序列(2)

💕"你可以说我贱,但你不能说我的爱贱。"💕 作者:Mylvzi 文章主要内容:算法系列–动态规划–子序列(2) 今天带来的是算法系列--动态规划--子序列(2),包含了关于子序列问题中较难的几道题目(尤其是通过二维状…

数据结构从入门到精通——快速排序

快速排序 前言一、快速排序的基本思想常见方式通用模块 二、快速排序的特性总结三、三种快速排序的动画展示四、hoare版本快速排序的代码展示普通版本优化版本为什么要优化快速排序代码三数取中法优化代码 五、挖坑法快速排序的代码展示六、前后指针快速排序的代码展示七、非递…

VSCode最强插件合集,助你代码开发效率翻倍!

大家好,我是宝哥。 今天给大家推荐14个VSCode靠前的编程辅助插件,它们可以帮助你提高代码编写、调试、阅读和管理效率。 1.ESLint 简介:用于检查JavaScript代码的语法和风格错误。 功能特色:支持多种规则,可以自定义规…

XSS-labs详解

xss-labs下载地址https://github.com/do0dl3/xss-labs 进入靶场点击图片,开始我们的XSS之旅! Less-1 查看源码 代码从 URL 的 GET 参数中取得 "name" 的值,然后输出一个居中的标题,内容是 "欢迎用户" 后面…

STM32利用串口标准库发送字节,发送数组,发送字符串,发送数字,实现printf功能。

早晨到现在刚刚完成的功能:发送字节,发送数组,发送字符串,发送数字,实现printf功能。 当然这是建立在昨天学习使用串口发送数据的基础上,新建立的功能函数,咱们先来看看这次实验的结果吧&#…

C语言经典算法-8

文章目录 其他经典例题跳转链接41.基数排序法42.循序搜寻法(使用卫兵)43.二分搜寻法(搜寻原则的代表)44.插补搜寻法45.费氏搜寻法 其他经典例题跳转链接 C语言经典算法-1 1.汉若塔 2. 费式数列 3. 巴斯卡三角形 4. 三色棋 5. 老鼠…

安捷伦Agilent E8364C网络分析仪

181/2461/8938产品概述: Agilent E8364C 网络分析仪是 Agilent PNA 系列网络分析仪(高性能网络分析仪)的一部分,具有满足您关键需求的最高准确度。Agilent E8364C 具有 10 MHz 至 50 GHz 的宽频率范围,并具有 2 个端口…

刀具磨损失效形式

目录 磨料磨损 扩散磨损 粘着磨损 腐蚀磨损 氧化磨损 表面疲劳磨损 热点磨损 刀具失效形式有磨损、破损和折断。在微小孔钻削中,磨损形式有很多种,如磨料磨损、扩散磨损、粘着磨损、腐蚀磨损、氧化磨损、表面疲劳磨损、热点磨损等。 磨料磨损 磨…

python电影院订票信息管理系统flask-django-php-nodejs

当今社会已经步入了科学技术进步和经济社会快速发展的新时期,国际信息和学术交流也不断加强,计算机技术对经济社会发展和人民生活改善的影响也日益突出,人类的生存和思考方式也产生了变化。传统电影院订票采取了人工的管理方法,但…

leetcode 20.有效的括号 JAVA

题目 思路 括号的匹配,这是一道经典的栈的应用问题。 给我们一个字符串,当我们遍历到左括号时,让其入栈。当我们遍历到右括号时,让栈顶元素出栈,看看栈顶的元素是否和遍历到的右括号匹配。不匹配的话直接false,匹配的…

基于FPGA的FFT图像滤波设计

1.FFT滤波算法介绍 FFT滤波就是通过傅里叶运算将图像转换到频域空间,然后在频域中对图像进行处理,最后将处理后的图像通过傅里叶逆运算将图像转会到时域空间。 在频域空间中,我们能够更好的对图像的噪声进行分析,然后找出相关规律…

Kubernetes(k8s)集群健康检查常用的五种指标

文章目录 1、节点健康指标2、Pod健康指标3、服务健康指标4、网络健康指标5、存储健康指标 1、节点健康指标 节点状态:检查节点是否处于Ready状态,以及是否存在任何异常状态。 资源利用率:监控节点的CPU、内存、磁盘等资源的使用情况&#xf…

YOLOv8 | 注意力机制 | ShuffleAttention注意力机制 提升检测精度

YOLOv8成功添加ShuffleAttention ⭐欢迎大家订阅我的专栏一起学习⭐ 🚀🚀🚀订阅专栏,更新及时查看不迷路🚀🚀🚀 YOLOv5涨点专栏:http://t.csdnimg.cn/1Aqzu YOLOv8涨点专栏…

mysql字段多个值,mybatis/mybatis-plus匹配查询

mysql中有一个字段是字符串类型的,category字段值有多个用逗号分割的,例如:娱乐,时尚美妆,美食 。现在想实现这么一个功能, 前端传参 字符串,美食,娱乐。现在想在mybatis的xml中实现,查询,能查到…

软件测试 -- Selenium常用API全面解答(java)

写在前面 // 如果文章有问题的地方, 欢迎评论区或者私信指正 目录 什么是Selenium 一个简单的用例 元素定位 id定位 xpath定位 name定位 tag name 定位和class name 定位 操作元素 click send_keys submit text getAttribute 添加等待 显示等待 隐式等待 显示等…

【wubuntu】披着Win11皮肤主题的Ubuntu系统

wubuntu - 一款外观类似于 Windows 的 Linux 操作系统,没有任何硬件限制。以下是官方的描述 Wubuntu is an operating system based on Ubuntu LTS that has a similar appearance to Windows using the open-source themes. Wubuntu also comes with a set of adva…

JavaScript 权威指南第七版(GPT 重译)(二)

第四章:表达式和运算符 本章记录了 JavaScript 表达式以及构建许多这些表达式的运算符。表达式 是 JavaScript 的短语,可以 评估 以产生一个值。在程序中直接嵌入的常量是一种非常简单的表达式。变量名也是一个简单表达式,它评估为分配给该变…

2024 Mazing 3 中文版新功能介绍Windows and macOS

iMazing 3中文版(ios设备管理软件)是一款管理苹果设备的软件, Windows 平台上的一款帮助用户管理 IOS 手机的应用程序。iMazing中文版与苹果设备连接后,可以轻松传输文件,浏览保存信息等,软件功能非常强大,界面简洁明晰…

【运维】MacOS Wifi热点设置

目录 打开热点 配置共享网段 打开热点 打开macOS设置,进入通用->共享 点击如下图标进行配置, 会进入如下界面(⚠️目前是打开共享状态,无法修改配置,只有在未打开状态才能进入配置) 配置完成后&#x…