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

【计算机网络】第三章——数据链路层概述

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【计算机网络】
本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交流讨论💌

目录

  • 一、数据链路层概述
  • 二、链路和数据链路
  • 三、封装成帧
  • 四、差错检测
  • 五、可靠传输
  • 六、最后小结

一、数据链路层概述

数据链路层在网络层体系结构中的地位:

主机拥有计算机网络中的各个层次,而交换机只有网络层、数据链路层,物理层。如下:
在这里插入图片描述
各设备通过物理层下面的传输媒体进行互连。

主机H1向主机H2发送数据:主机H1将待发送的数据逐层封装后,通过物理层将构成数据包的各比特转换电信号并发送到传输媒体;数据包进入路由器后,由下往上逐层解封到网络层,路由器根据数据包的目的网络地址自身转发表来确认数据包的转发端口;然后从网络层向下逐层解封数据包,让后再通过物理层将构成数据包的比特转换成电信号后发送到传输媒体;最后,数据包最终到达主机H2时,由下往上逐层解封,最终解封出H1发送的数据。
在这里插入图片描述

但我们专门研究数据链路层的问题时,在大多数情况下,我们只可以只关心数据链路层而忽略网络体系结构中的其它层,或者我们可以把它想象成数据包只在数据链路层之间从左向右沿水平方向进行传输。

二、链路和数据链路

从数据链路层来看,主机H1到主机H2的通信可以看成是在四段不同的链路上的通信组成的,如下图:

在这里插入图片描述

要想在链路上进行数据的传输,仅仅有链路是不够的,还需要一些通信协议来控制这些数据的传输,如果把实现这些协议的硬件和软件加到链路上,这样就构成的数据链路。在数据链路上传输的数据包称为,所以数据链路层是以帧为单位进行传输和处理数据的。

在这里插入图片描述

下面我们来看数据链路层的三个重要问题:封装成帧、差错检测、可靠传输。

三、封装成帧

两台主机通过一段链路互连,并且两台主机都会对所发送或接收的数据包进行五个层次的封装和解封。

在这里插入图片描述

下面我们将通过上面这个例子来解释什么是封装成帧。

首先,发送方将待发送的数据通过应用层封装成应用层协议数据单元,然后交给运输层,如下:

在这里插入图片描述

然后运输层为其添加运输层写协议首部,使之成为运输层协议数据单元,然后交给网络层,如下:

在这里插入图片描述
然后网络层为其添加网络层协议首部,使之成为网络层协议数据单元然后交给数据链路层,如下:

在这里插入图片描述

最后,数据链路层为网络层协议数据单元添加数据链路层协议首部(简称帧头),还要给其增添一个帧尾这里我们将数据链路层给网络层协议数据单元添加帧头和帧尾的过程称为封装成帧

  • 添加帧头和帧尾的目的:为了在数据链路上以帧为单元来传送数据(也就是为了实现数据链路层本身的功能)。

比如下面是一个以太网版本2MAX帧格式:由帧头帧尾上层交付的协议数据单元组成。
在这里插入图片描述

四、差错检测

发送方将封装好的帧通过物理层发送到传输媒体,帧在传输过程中遭受干扰后可能会出现误码(发生了比特反转,即0变1或者1变0):

在这里插入图片描述

现在有一个问题:接收方如何判断帧在传输过程中出现了误码,这可以通过检测码来发现。发送方在发送帧之前会基于待发送的数据和检测算法计算出检错码,并将其疯转在帧尾。如下图:

在这里插入图片描述

比如,以太网版本2的MAC帧的帧尾,就是4字节的帧检验序列FCS字段,要写入该字段的内容,即检错码,如下图:

在这里插入图片描述

接收方主机收到检错码和检错算法就可以判断出帧在传输过程中是否出现了误码。

在这里插入图片描述

五、可靠传输

接收方主机收到有误码的帧后,不会接收该帧反而会将其抛弃。

  • 如果数据链路层向其上层提供的是不可靠服务,此时丢弃也就丢弃了,并不会在有更多的措施。
  • 如果数据链路层向其上层提供的是可靠服务,那么就需要其它措施来确保接收方主机还可以重新收到被丢弃的这个帧的正确副本。换句话来说,尽管误码不能够完全避免,但是如果能够实现发送方发送什么,接收方就能接收到什么,这就称为是可靠传输

在这里插入图片描述

六、最后小结

封装成帧、差错检测、可靠传输是数据链路层中最重要的问题.。本文中要注意在介绍这三个问题的时候使用的是点对点信道的数据链路层来举例的。

而对于使用广播信道的数据链路层除了包含这三个问题外,还有一些其它需要解决的问题。

如图所示:主机A、B、C、D、E通过一根总线进行互连。主机A要给主机C发送帧,代表帧的信号会通过总线传输到总线上的其它主机。那么主机B、D、E是如何知道所接收到的帧不是它们的呢,而主机C又如何知道接收到的帧恰好是发送给自己的呢?解决方法:将帧的目的地址添加在帧中一起传输

比如下图是以太网版本2的MAC帧格式,其首部的三个字段中有两个字段(目的地址和源地址字段)和地址相关。
在这里插入图片描述
当总线上多台主机同时使用总线来传输帧时,传输信号就会产生碰撞。
在这里插入图片描述
信号碰撞这个问题是采用广播信道的共享式局域网不可避免的。
在这里插入图片描述
以太网使用的协调方法是使用一种特殊的协议CSMA/CD(载波监听多点接入/碰撞检测)

随着交换技术的成熟和成本的降低,具有更高性能的,使用点对点链路和链路层交换机的交换式局域网,如下图:
在这里插入图片描述
在有线(局域网)领域已完全取代了共享式局域网。那么,在这里,网络中的交换机又是如何转发帧的呢?另外,由于无线信道的广播天性,无线局域网仍然使用的是共享信道技术,例如802.11局域网采用的媒体接入控制协议是CSMA/CA(即载波监听多点接入/碰撞避免)。它的工作原理又是怎样的呢?
在这里插入图片描述

在这里插入图片描述

本文到这里就结束了,希望友友们可以支持一下一键三连哈。嗯,就到这里吧,再见啦!!!

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • RabbitMQ安装及配套Laravel使用
  • 生物识别技术存在的问题及需要考虑的关键事项
  • 【qt】标准型模型 下
  • C++之第八课
  • BL121DT网关在智能电网分布式能源管理中的应用钡铼技术协议网关
  • Python的基本使用(numpy、pandas、matplotlib)
  • 配置docker阿里云镜像地址
  • 【OpenCV】图像通道合并与分离,ROI
  • php 使用phpoffice导出导出excel
  • 二十七篇:未来掌控:嵌入式系统的革命性进展
  • Spring Boot 3.3 正式发布,王炸级更新,应用启动速度直接起飞!
  • linux系统——终止进程命令
  • Improving Diffusion Models for AuthenticVirtual Try-on in the Wild # 论文阅读
  • 翻译《The Old New Thing》- The importance of the FORMAT_MESSAGE_IGNORE_INSERTS flag
  • pillow学习6
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • 2018一半小结一波
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • javascript面向对象之创建对象
  • Java教程_软件开发基础
  • Linux各目录及每个目录的详细介绍
  • PAT A1120
  • Redis 中的布隆过滤器
  • tab.js分享及浏览器兼容性问题汇总
  • vue中实现单选
  • XML已死 ?
  • 阿里云前端周刊 - 第 26 期
  • 分类模型——Logistics Regression
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 前端工程化(Gulp、Webpack)-webpack
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 手机端车牌号码键盘的vue组件
  • 学习笔记TF060:图像语音结合,看图说话
  • 原生 js 实现移动端 Touch 滑动反弹
  • 在Mac OS X上安装 Ruby运行环境
  • 自定义函数
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​Linux·i2c驱动架构​
  • ​低代码平台的核心价值与优势
  • ​字​节​一​面​
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #if和#ifdef区别
  • #知识分享#笔记#学习方法
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (zhuan) 一些RL的文献(及笔记)
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (三)模仿学习-Action数据的模仿