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

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

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

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

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

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比特。
    在这里插入图片描述
  • 违规编码法:设计一种编码方案,使得数据中不可能自然出现与帧界定符一样的比特序列。
    在这里插入图片描述

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

相关文章:

  • 【智能算法】飞蛾扑火算法(MFO)原理及实现
  • React系列之React版本时间线和主要更新
  • GIS与Python机器学习:开创地质灾害风险评价新纪元
  • 精品凉拌菜系列热卤系列课程
  • HarmonyOS 应用开发案例
  • Python学习之-基础语法
  • 一文搞懂大疆机场kmz航线和图新地球导出的kmz的区别
  • 音视频处理 - 音频概念详解,码率,采样率,位深度,声道,编码
  • XGB-24:使用Scikit-Learn估计器接口
  • Python中lambda函数使用方法
  • Java | 自由落体与反弹距离计算
  • mysql的单表、多表查询和数据类型
  • Mysql中的执行计划怎么分析?
  • RHCE-网络服务实验1
  • git patch的使用方法
  • [译]CSS 居中(Center)方法大合集
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • canvas 五子棋游戏
  • const let
  • es的写入过程
  • exif信息对照
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • Hibernate最全面试题
  • javascript 哈希表
  • JDK 6和JDK 7中的substring()方法
  • Lucene解析 - 基本概念
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • mysql 数据库四种事务隔离级别
  • SegmentFault 2015 Top Rank
  • SpiderData 2019年2月16日 DApp数据排行榜
  • springMvc学习笔记(2)
  • SpriteKit 技巧之添加背景图片
  • v-if和v-for连用出现的问题
  • Vue全家桶实现一个Web App
  • Yii源码解读-服务定位器(Service Locator)
  • 给第三方使用接口的 URL 签名实现
  • 驱动程序原理
  • 小程序 setData 学问多
  • 移动端唤起键盘时取消position:fixed定位
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • $.ajax()参数及用法
  • (¥1011)-(一千零一拾一元整)输出
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (七)理解angular中的module和injector,即依赖注入
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (转)fock函数详解
  • (转)setTimeout 和 setInterval 的区别
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .Mobi域名介绍
  • .net 7 上传文件踩坑
  • .NET MVC 验证码
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET 设计模式—简单工厂(Simple Factory Pattern)