计算机网络 第三章 数据链路层(一)

devtools/2024/9/24 10:05:01/

在这里插入图片描述

一、数据链路层前导知识

1.1 整体了解数据在网络传输的整体过程

计算机网络分为五个层次,从下往上依次是物理层(实际传输01代码),数据链路层,网络层,运输层,应用层。这一次我们学习的是数据链路层,想要学习数据链路层,应该首先了解数据是如何从一个点发送到另外一个点的,对其整体有个了解,不然会学的特别懵。
在这里插入图片描述
我们通过主机H1向H2发送信息,是要通过网线,一系列路由器传送转发我们所发送的数据才能送到主机H2;首先会将要发送的数据通过应用层封装成为应用层数据协议单元,其实就可以理解为想要从北京邮寄一个物品到居住在大连的一个朋友,那么我们要邮寄物品,首先就会对物品进行打包,而就和将数据封装成为应用层数据协议单元将类似,只有包裹被打包后才可以被运输,只有数据被封装成应用层数据协议单元才可以被运输层传送;

到这里位置,将数据封装成为应用层数据协议单元好像就可以进行传输了,不再需要经过运输层,网络层,数据链路层的作用了,其实数据通过网络传输远比我们打包快递邮寄难,它需要将数据按着顺序进行不同层次的封装,最后在通过物理层传输,即0101010,将数据通过物理线路传输到H2主机,主机H2接收到的最开始其实就是一串毫无规律的01数据,在主机H2中,就需要进行摆数据上的封装一步一步拆开的步骤,所以在从上往下依次经过数据链路层,网络层,运输层,应用层一层一层的拆开我们的之前在主H1处的封装,最后得到H1想要发送的数据。

我们会一步一步的学习每一层都是如何对数据封装的,这里需要对其过程有个抽象的了解。

1.2 数据传输的实际过程

①数据首先由应用层封装成为应用层协议数据单元,封装完成后会交付给运输层。

在这里插入图片描述

②运输层会再次将数据封装成为运输层数据协议单元,即在其加上运输层协议首部,后交付给网络层。

在这里插入图片描述
③网络层会对数据再次进行封装,即加上网络层协议首部,使其成为网络层协议数据单元,然后交付给数据链路层。

在这里插入图片描述

④数据链路层会再一次的对数据进行封装,此次是将其封装成帧,即加帧头和帧尾,使其成为数据链路层协议数据单元,然后交付给物理层。

在这里插入图片描述
⑤封装成帧后的数据,最后就会通过物理层传输至H2主机,然后在主机H2处会按着封装的步骤,从外往里的依次拆开封装。

二、数据链路层

2.1数据链路层的三大问题:

  • 封装成帧
    • 如何封装?
    • 封装的作用是什么,为什么要封装?
  • 透明传输
    • 透明传输是什么?
    • 如何进行透明传输?
  • 差错检测
    • 为什么需要差错检测?
    • 如何差错检测?

2.1封装成帧

①如何封装

如何封装,其实我们已经知道了,就是在网络层协议数据单元中添加帧首部和帧尾部信息,封装完成的帧我们也会将其称为MAC帧,MAC帧在不同的数据链路层中MAC帧封装的格式是不同的,就比如,京东快递和中通快递封装快递的方式就会不同,虽然都是同一层,但是,由于协议不同,封装的格式不同。

ppp协议,点对点协议的MAC帧格式

对于点对点(所谓的点对点传输,就是两个点要传输就通过一个线直接连接进行传输)协议的MAC帧格式如下,在网络层协议数据单元中添加额帧首部信息5字节,帧尾部份3字节,在帧的首部和尾部都有一个1字节的标志。
在这里插入图片描述

以太网MAC帧格式

在网络层协议数据单元中添加额帧首部信息14字节,帧尾部份4字节。

在这里插入图片描述
封装的作用

那在数据链路层进行封装成帧到底有什么作用呢?其实封装成成帧后会将MAC交付给物理层,物理层进行传输的时候,会将01000110挤在一起传送,为了一个包裹一个包裹的区分开来,就可以使用帧定界在区分一个一个数据帧,所以封装成帧的作用就是使用帧定界。
在这里插入图片描述

所以通过前后的一个字节的标志就可以区分出来一个一个的帧了;仅适用于点对点这种的帧,因为对于以太网MAC帧中并没有标记,为了实现以太网中的MAC帧的帧定界,在物理层的时候,还会添加一个前导码,通过时间间隔的控制来实现帧的定界。

在这里插入图片描述

2.2透明传输

在了解透明传输是个什么东西开始之前,先来看个可能出现的问题,若要传输的数据中就包含了flag,应为flag其实就是一个数据,若传送的数据中也包含一个帧定界符的话,还可以进行准确的传输吗?

在这里插入图片描述
显然的不行的,当主机H2接收到数据,先看到第一个flag,接着读取帧数据,看见第二个flag,就会自动的认为帧结束了,从而导致传输出错,所以我们就需要解决它,从而实现透明传输。

所以所谓的透明传输就是想让数据的传输是想让数据中存在的 “ 标记 ”好像透明一样,可以顺利被传输,而不是被误认为是开始或结束的标志。那么如何实现透明传输呢?

对于数据中出现的flag,就对其添加转义字符,转义字符1个字节,在接收端接收的数据的时候,遇见转义字符,就可以判别出来前面的flag是数据,而不是帧定界的标志,从而就可以实现透明传输。

在这里插入图片描述
其实上述实现的透明传输面向字节的物理传输的,即一个字节一个字节传输,一个字节一个字节接受的,就可以通过字节填充ESC来实现透明传输。

所以实现透明传输就是要将数据部分出现的和标记相同的数据实现透明传输,即为其加上转义字符,这里只需要了解到对于数据链路层实现透明传输是通过加转移字符来实现的;后面我们会具体的学习PPP点对点协议它的透明传输是具体以什么作为转义字符,以及如何添加转义字符的。

2.3差错检测

在传输过程中就很可能出现0变成1,1变成0,从而导致传输的数据出现差错,所以我们需要检测到传输的数据是否出错,出错的话,就会丢弃该数据,以确保每次接受到的数据都是正确的,所以在数据链路层还需要实现检错功能;检错功能如何实现呢?
在这里插入图片描述
①奇偶校验

所谓的奇偶校验就是,将数据中加上一个校验位,使其1成为奇数个或者偶数个,成为奇数个称为奇校验,偶数个称为偶校验。

当传输数据为01011101110101001时候,采用偶校验,此时1的个数为10个,偶数个1,此时将数据变为010111011101010010,添加上一个校验位保证1的个数为偶数个,若为奇数个1,校验位写1,使其1的个数为偶数个,在接收方接收到来自发送方的信息时,直接检测1的个数是奇数还是偶数个从而判断是否传输出错;对于校验位的存放位置,在ppp帧格式和以太网帧格式中,都有相应的字节FCS来存放校验位。

其实对于奇偶校验来说,该方法其实是有缺陷的,如果采用奇偶校验的方式,有两位bit数据发生了出错,奇偶校验的方式还可以准确无误的检测出来吗?显示有时候是检测不出来的,所以该方法的误检率还是比较高的。

②CRC循环冗余校验
在这里插入图片描述

直接举例解释,对于下图所示的生成多项式,其对应比特串就是10111,也就是发送和双放约定好的生成多项式,根据多项式的比特串求解出此次发送数据的冗余码,将其冗余码加入到MAC帧中的FCS字段,接收方将接收到的数据+FCS字段构成的一串数据和约定好的多项式的比特串进行除法运算,若余数为零,则表示没有差错,若不为零,则表示有差错。

在这里插入图片描述

  1. 发收方根据要发送的信息和生成多项式求解循环冗余码,即求解校验位。
    在这里插入图片描述
  2. 接收方检验传送的数据是否出错,使用接受到的数据和生成多项式检验,此次发现,计算结果的余数不为零,则表示产生了误码。
    在这里插入图片描述
    对于CRC校验来说,该方法的检错率是比较高的,所以一般都是采用该方式来检错。

http://www.ppmy.cn/devtools/38494.html

相关文章

nodejs中fs读写删除文件

读取文件内容 hello.txt 为文本,可通过readFileSync同步方法获取文本里的内容 const fs require(fs)const content fs.readFileSync(hello.txt,{encoding:utf-8})// 也可简写成 // const content fs.readFileSync(hello.txt,utf-8)console.log(content:,conten…

Python代码生成类型注解库之monkeytype使用详解

概要 MonkeyType 是由 Instagram 开发的一个 Python 库,用于自动为 Python 代码生成类型注解。通过监控运行时的类型信息,MonkeyType 能够帮助开发者为现有的 Python 代码库增加类型提示,从而提高代码的可读性和健壮性。 安装 安装 MonkeyType 非常简单,可以通过 pip 进行…

钉钉开放平台创建企业内部H5微应用或者小程序

前言: 在当今企业数字化转型的浪潮中,创建企业内部H5微应用或小程序已成为提升工作效率和促进内部沟通的重要举措。发话不多说本文将介绍如何利用钉钉平台快速创建这些应用,让企业内部的工作更加便捷高效。 步骤 1.在浏览器打开链接…

数字孪生与虚拟现实结合

在飞速发展的科技世界中,数字孪生与虚拟现实(VR)的融合是一项开创性的发展,尤其是在建筑、工程和施工(AEC)行业。本文探讨了数字孪生与VR技术的协同整合,阐明了它们如何彻底改变用户体验和运营效…

【论文笔记 | 异步联邦】FedSA

FedSA:一种处理 non-IID 数据 的 过时感知 异步联邦算法 1. 论文信息 FedSA:A staleness-aware asynchronous Federated Learning algorithm with non-IID data,Future Generation Computer Systems,2021.7,ccfc 是…

【Android Studio】开启真机调试

1 打开手机的开发者模式 各种款式的手机进入开发者模式的情况不同,但大致是在 【关于手机】中多次点击系统版本即可进入。这里以小米8为例,记录下流程。 1.1 进入手机开发者模式 【设置】->【我的设备】->【全部参数】->【MIUI版本】连续点击3…

容联云孔淼:大模型落地与全域营销中台建设

近日,由金科创新社主办的2024区域性商业银行数智化转型研讨会顺利召开, 容联云产业数字云事业群副总经理、诸葛智能创始人孔淼受邀出席,并分享数智化转型实践经验。 他分享了容联云两大核心产品,“大模型应用容犀Copilot”在金融营…

最大数字——蓝桥杯十三届2022国赛大学B组真题

问题分析 这道题属于贪心加回溯。所有操作如果能使得高位的数字变大必定优先用在高位,因为对高位的影响永远大于对低位的影响。然后我们再来分析一下,如何使用这两种操作?对于加操作,如果能使这一位的数字加到9则变成9&#xff0…