• 【计算机网络Part 2】数据链路层



    在这里插入图片描述

    不论是考研还是找工作,计算机网络都是必须学的一部分。本文是根据【湖南科技大学—计算机网络】课程,整理所得。大家可以将本笔记作为课程的补充,如果你没有看过该课程,也推荐你继续往下看。⭐码字不易,求个关注

    数据链路层

    数据链路层概述

    链路:就是从一个结点到相邻接点的一段物理链路,而中间没有任何其他的交换结点。
    数据链路:是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。
    数据链路层以为单位传输和处理数据。

    • 使用点对点信道的数据链路层
      存在三个重要问题:封装成帧、差错检测、可靠传输。
    • 使用广播信道的数据链路层
      共享式局域网可能会存在数据碰撞的情况,使用CSMA/CD(以太网的媒体接入控制协议)来解决这个问题。
    • 无线局域网
      802.11局域网避免数据碰撞,使用CSMA/CA协议解决这个问题。

    数据链路层的三个重要问题

    封装成帧

    封装成帧是指:数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。

    • 帧定界
      帧头和帧尾中包含有重要的控制信息,帧头和帧尾的作用之一就是帧定界
      PPP帧在帧头和帧尾进行帧定界:
      在这里插入图片描述
      以太网V2的MAC帧进行帧定界时,需要添加前导码,每个帧之间存在帧间间隔(96比特时间):
      在这里插入图片描述

    • 透明传输: 是指数据链路层对上层交付的传输数据没有任何限制(即使控制字符在帧数据中,也当做不存在去处理)。
      面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输。
      即在控制字符前面加上转义字符ESC 。
      面向比特的物理链路使用比特填充的方法实现透明传输。
      比如在每五个1之后加上一个0。

    • 帧的传输效率
      为了提高帧的传输效率,应当使帧的数据部分的长度尽可能大些。每一种数据链路层协议都规定了帧的数据部分的长度上限。即最大传送单元MTU(Maximum Transfer Unit)。

    差错检测

    实际的通信链路都不是理想的,比特在传输过程中可能会产生差错。这称为比特差错
    在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率(BER)。
    使用差错检测码来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一。
    差错检测码(FCS)如下所示:
    在这里插入图片描述

    下面介绍两种差错检测方法:

    • 奇偶校验
      在待发送数据后面添加一位奇偶校验位,使数据中“1”的个数为奇数(奇校验)或偶数(偶校验)。奇偶校验的方式漏检率较大。
    • 循环冗余校验(CRC)
      首先,收发双方约定好一个生成多项式。
      然后,发送方计算出差错检测码(冗余码)并将其添加到待传输数据的后面一起传输。
      最后,接收方计算余数,为0则无误码。
      循环冗余校验的计算:
    1. 被除数为要发送的信息或接受到的信息。
    2. 除数为生成多项式各系数构成的比特串。
    3. 做除法(异或运算)
    4. 检查余数。

    计算余数(冗余码):
    在这里插入图片描述
    判断是否误码:
    在这里插入图片描述

    可靠传输

    • 出现的传输差错
      比特差错只是传输差错中的一种,整体来看,还包括分组丢失、分组失序以及分组重复。
      这些传输差错一般不会出现在数据链路层,而会出现在上层。所以可靠传输服务并不仅限于数据链路层,其他各层均可选择实现可靠传输。

    使用差错检测技术,接收方的数据链路层就可检测出帧在传输过程中是否产生了误码,之后的具体操作,还要看数据链路层向上层提供的服务类型。
    不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做。
    可靠传输服务:想办法实现发送方发送什么,接收方就能收到什么。
    在这里插入图片描述

    一般情况,有线链路误码率低,不要求数据链路层向上提供可靠传输服务。而无线链路要求数据链路层向上层提供可靠传输服务。
    接下来介绍三种可靠传输实现机制:三种可靠传输实现机制的基本原理并不仅限于数据链路层,而是可以应用到计算机网络体系结构的各层协议中。

    可靠传输的实现机制——停止-等待协议SW

    • 停止等待协议
      停止等待协议主要包括以下四种情况:
      在这里插入图片描述
      确认(无差错情况)与否认:接收端收到DATA后,会发送ACK分组确认已经收到。对于误码率较高的点对点链路,接收端检测到数据分组有误码时,接收端发送NAK分组(否认分组)。
      超时重传:如果DATA分组丢失,迟迟未收到ACK/NAK分组。进行超时重传。
      确认丢失:如果ACK分组丢失,也进行超时重传,只不过发送的DATA最后会丢弃。超时计时器设置的重传时间应仔细选择。一般会略大于“从发送方到接收方的平均往返时间”

    为了让接收方能够判断收到的DATA分组是否重复,需要给数据分组编号。由于停等特性,只需要一个比特编号就够了。
    为了让发送方判断收到的ACK分组是否重复,需要给ACK分组编号,所用的比特量与数据分组编号所用比特数量一样。数据链路层实现停止-等待协议可以不用给ACK分组编号。 因为数据链路层一般不会出现分组迟到的情况。

    • 停止等待协议的信道利用率
      在这里插入图片描述
      信道利用率=TD/TD(数据帧发送时延)+RTT(往返时延)。
      当往返时延RTT远大于数据帧发送时延TD时,信道利用率非常低,于是产生了另外两种协议。

    • 问:说说你对停止等待协议的理解?
      停止等待协议是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组;在停止等待协议中,若接收方收到重复分组,就丢弃该分组,但同时还要发送确认。主要包括以下几种情况:无差错情况、出现差错情况(超时重传)、确认丢失和确认迟到。

    可靠传输的实现机制——回退N帧协议GBN

    在这里插入图片描述

    • 说说你对ARQ协议的理解?
      自动重传协议ARQ:停止等待协议中超时重传是指只要超过一段时间仍然没有收到确认,就重传前面发送过的分组(认为刚才发送过的分组丢失了)。因此每发送完一个分组需要设置一个超时计时器,其重传时间应比数据在分组传输的平均往返时间更长一些。这种自动重传方式常称为自动重传请求 ARQ。
      连续ARQ协议(回退N帧协议):连续 ARQ 协议可提高信道利用率。发送方维持一个发送窗口,凡位于发送窗口内的分组可以连续发送出去,而不需要等待对方确认。接收方一般采用累计确认,对按序到达的最后一个分组发送确认,表明到这个分组为止的所有分组都已经正确收到了

    可靠传输的实现机制——选择重传协议SR

    在这里插入图片描述

    发送方维持一个发送窗口,凡是位于发送窗口内的分组都可以连续发送出去,不需要等待对方确认。接收方可接受未按序到达且落在窗口内的分组,并且进行逐一确认。

    点对点协议PPP

    点对点协议(Point-to-Point Protocol)是目前使用最广泛的点对点数据链路层协议
    在这里插入图片描述

    PPP协议为在点对点链路传输各种协议数据报提供了一个标准方法,主要由以下三部分组成:
    对各种协议数据报的封装方法(封装成帧)、链路控制协议LCP(用于建立、配置以及测试数据链路的连接)、一套网络控制协议NCPs(其中的每一个协议支持不同的网络层协议)。
    在这里插入图片描述

    PPP协议的封装成帧、差错检测、可靠传输

    • 封装成帧:
      帧格式
      在这里插入图片描述

    • 透明传输
      在这里插入图片描述

    1. 面向字节的异步链路:字节填充法,插入转义字符。如图所示:
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q0TIht0L-1656924863929)(en-resource://database/875:1)]

    2. 面向比特的同步链路:比特填充法,数据部分每五个1之后插入比特0(为了和帧的首部进行区分)。如图所示:
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T1zGfF5l-1656924863930)(en-resource://database/877:1)]

    • 可靠传输和差错检测:
      接收方每收到一个PPP帧,就进行CRC检验。若CRC检验正确,就收下这个帧,反之,就丢弃这个帧。使用PPP协议1的数据链路层向上不提供可靠传输服务。

    PPP协议工作状态

    使用了LCP(链路控制协议)、NCP(网络控制协议)。
    在这里插入图片描述

    媒体接入控制(MAC)

    共享信道要着重考虑的问题之一就是如何协调多个发送和接收站点对一个共享传输媒体的占用,也就是媒体接入控制MAC(Medium Access Control)
    在这里插入图片描述

    可以采用多种方法解决媒体接入控制的问题,比如静态划分信道或动态接入控制。

    静态划分信道

    复用就是通过一条物理线路同时传输多路用户的信号,来充分利用传输媒体的带宽。

    • 频分复用FDM
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uyfEJzh4-1656924863931)(en-resource://database/983:1)]
      频分复用的所有用户同时占用不同的频带资源并行通信。

    • 时分复用TDM
      在这里插入图片描述
      时分复用的所有用户在不同的时间占用同样的频带宽度。

    • 波分复用WDM
      在这里插入图片描述

    • 码分复用CDM
      码分复用CDM主要用于多址接入,人们更常用CDMA(码分多址)。
      先不严格区分多址和复用的概念。

    多址:多点接入,处理的是动态分配信道给用户,在暂时占用信道的应用中是必须的,而所有的移动通信系统基本上都属于这种情况。
    复用:将单一媒体的频带资源划分为多个子信道,这些子信道相互独立,互不干扰。
    而FDMA、TDMA、CDMA可以分别看成是FDM、TDM、CDM的应用。

    使用CDMA的每一个站首先被指派一个m bit的码片序列。
    一个站如果要发送比特1,则发送自己的m bit码片序列,发送0则发送自己的m bit码片序列反码。

    码片序列的挑选原则:

    1. 分配给每个站的码片序列必须各不相同,实际采用伪随机码。
    2. 分配给每个站的码片序列必须相互正交(两个向量的规格化内积为0)。
    • 应用
      A、B站同时发送信号,D如何判断接受到的信号是来自A还是B?
      A发送比特1,发送A站自己的码片,同时B发送比特0,发送B站自己码片的反码。D用A x(接受到的信号),就表示接受A的信号,计算结果为A发送的bit。(1-bit1、-1-bit0)
      在这里插入图片描述

    动态接入控制

    总线型局域网使用的协议:CSMA/CD协议;无线局域网使用的协议:CSMA/CA协议。
    以前的CSMA/CD协议曾经用于各种总线型以太网中。现在的以太网基于交换机和全双工连接,不会有碰撞,因此没有必要使用CSMA/CD协议。

    CSMA/CD协议

    载波监听 多址接入 /碰撞检测协议

    • 多址接入MA:多个站连接在一条总线上,竞争使用总线。

    • 载波监听CS:每一个站在发送前先要检测一下总线上是否存在其他站点在发送帧(先听后说)。检测到总线空闲96bit就发送这个帧;检测到总线忙,则继续检测并等待总线转为空闲96bit,然后发送这个帧。

    • 碰撞检测CD:每个站在发送帧时边检测边发送(边说边听)。一旦冲突,立即停止发送,等待随机时间,重新再发送。

    • 争用期
      主机最多经过2t的时长就可以检测本次发送是否遭受碰撞。因此,以太网端到端往返传播时延2t称为争用期碰撞窗口。(t:以太网单程端到端传播时延)

    • 最小帧长
      以太网的最小帧长确保了主机可以在帧发送完成之前就检测到该帧的发送过程是否遭遇了碰撞。
      以太网规定最小帧长为64字节,即512bit(512bit的传输时间即为争用期)。
      如果发送了一段帧,经过了争用期还没有检测到碰撞,那么说明这次发送肯定没有发生碰撞;
      如果收到长度小于64字节的帧,说明收到的是由于碰撞而异常终止的无效帧。

    • 最大帧长
      数据载荷最大为1500字节。
      在这里插入图片描述

    • 截断二进制指数退避算法
      若发生多次碰撞,就表明可能有较多的主机参与竞争。使用退避算法可使重传需要推迟的平均时间随重传次数而增大(动态退避),从而较小发生碰撞的概率。
      如图所示:(退避时间=基本退避时间2t x 随机数r)
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-weHxV8ao-1656924863932)(en-resource://database/1666:1)]
      碰撞达到10次以后,随机数稳定在0-1023之间。当重传达16次仍不成功时,就丢弃该帧。

    • 信道利用率
      发送一帧占用总线的时间为T0(帧本身的发送时间)+t(单程端到端传播时延)。
      极限信道利用率如图:
      在这里插入图片描述

    • 帧发送/接收流程
      帧发送:先载波监听——碰撞检测——检测后的处理(退避算法等)。
      在这里插入图片描述
      帧接收:确认帧长——确认MAC地址——确认CRC检错码
      在这里插入图片描述

    CSMA/CA协议

    载波监听 多址接入 /碰撞避免协议

    在802.11无线局域网中,仍然可以使用CSMA,即在发送帧之前先对传输媒体进行载波监听。若发现有其他站在发送帧,就推迟发送以免发生碰撞。
    但是在无线局域网中,不能使用CD,其一是对硬件的要求非常高,其二是无线电波可能存在隐蔽站问题,进行碰撞检测意义不大。如图:
    在这里插入图片描述
    无线局域网使用CSMA/CA协议,碰撞检测CD变为碰撞避免CA。由于不能避免所有的碰撞,并且无线信道误码率较高,所以还使用了数据链路层确认机制(停止-等待协议)来保证数据被正确接收。

    802.11的MAC层定义了两种媒体接入控制方式:

    1. 分布式协调功能DCF。没有中心控制站点,每个站点使用CSMA/CA协议通过争用信道来获取发送权。(默认方式)
    2. 点协调功能PCF。使用集中控制的接入算法。(可选方式)
    • 帧间间隔IFS
      802.11标准规定,所有的站点必须在持续检测到信道空闲一段时间后才能发送帧,这段时间称为帧间间隔IFS。
      帧间间隔的长短取决于发送帧的类型,高优先级等待时间较短,反之亦然。
      常用的两种帧间间隔如下:
      短帧间间隔SIFSDCF帧间间隔DIFS
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hejW23Z5-1656924863935)(en-resource://database/1011:1)]

    • CSMA/CA协议工作原理
      在这里插入图片描述

    • CSMA/CA协议退避算法
      在执行退避算法时,站点会为退避计时器设置随机的退避时间:
      当退避计时器的时间减小到0,就开始发送数据。
      当退避计时器的时间未减小到0,信道忙状态,就会冻结退避计时器的数值,等待信道空闲并且经过DIFS时间,继续启动退避计时器。
      退避算法图示:
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0KtXd4VZ-1656924863936)(en-resource://database/1017:1)]

    • 信道预约
      为尽可能减少碰撞的概率,802.11标准允许要发送数据的站点对信道进行预约。
      主要说明如下:
      在这里插入图片描述
      图解:
      在这里插入图片描述

    • 虚拟载波监听
      除了RTS帧和CTS帧会携带通信要持续的时间,数据帧也能携带通信需要持续的时间,这就称为802.11的虚拟载波监听。
      由于利用虚拟载波监听机制,站点只需要监听到RTS帧、CTS帧或数据帧中的任何一个,就能知道信道被占用的持续时间,而不需要真正监听信道上的信号,因此虚拟载波监听机制能减少频闭站带来的碰撞问题

    MAC地址、IP地址以及ARP协议

    MAC地址属于数据链路层。
    IP地址和ARP协议属于TCP/IP体系结构的网际层,但是它们与MAC地址存在一定关系。

    MAC地址

    MAC地址是以太网的MAC子网所使用的地址。当多个主机连接在一条广播信道上,想要实现两台主机的通信,每个主机就必须有一个唯一的标识,就是数据链路层地址。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U1PKBDz1-1656924863938)(en-resource://database/1035:1)]

    所以在主机发送的帧中必须携带标识发送主机和接受主机的地址,由于这类地址属于媒体接入控制MAC,因此这类地址被称为MAC地址(物理地址、硬件地址)。

    注:MAC地址一般被固化在网卡的EEPROM中。严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。

    IEEE 802局域网的MAC地址格式

    共六字节,48位。

    在这里插入图片描述

    MAC地址的类型

    单播MAC地址:
    在这里插入图片描述

    广播MAC地址FF-FF-FF-FF-FF-FF:
    在这里插入图片描述

    多播MAC地址(第一个字节的前四个比特的十六进制数不能整除2即为多播地址,1,3,5,7,9,B……等):
    在这里插入图片描述

    IP地址

    IP地址是因特网上的主机和路由器所使用的地址,用于标识两部分信息:

    • 网络编号:标识因特网上数以百万计的网络。
    • 主机编号:标识同一网络上的不同主机。(或路由器各接口)
      如图所示:
      在这里插入图片描述

    数据包转发过程中IP地址与MAC地址的变化情况

    从网络体系结构,可以看出IP地址与MAC地址的使用情况:
    在这里插入图片描述

    在数据包转发过程中,源IP地址和目的IP地址始终保持不变;而源MAC地址和目的MAC地址逐段链路(或逐个网络)改变。
    IP地址与MAC地址的变化如图所示:
    在这里插入图片描述

    ARP协议

    在这里插入图片描述
    在B给C发送数据包的过程中,B知道C的IP地址,但是B不知道C的MAC地址,那么B在数据链路层封装MAC帧时,就无法填写目的MAC地址。
    这时,就需要通过地址解析协议ARP来获取主机C的MAC地址。

    每台主机会有ARP高速缓存表,主机B给主机C发送数据包时,会先在自己的ARP高速缓存表中查找主机C的IP地址——MAC地址(目的地址)。如果没有对应的IP地址,主机B就会发送ARP请求报文(封装在广播MAC帧中):
    在这里插入图片描述

    之后主机C发送ARP响应报文(封装在单播MAC帧中):
    在这里插入图片描述

    主机B将C的IP地址放入ARP高速缓存中。

    ARP的作用范围:逐段链路或逐个网络使用。
    除了ARP请求和相应外,ARP还有其他类型的报文(例如检查IP地址冲突的无效ARP、免费ARP等);ARP没有安全验证机制,存在ARP欺骗(攻击)问题。

    集线器与交换机

    集线器

    1. 使用集线器的以太网在逻辑上仍然是一个总线网,各站共享总线资源,各主机使用的还是CSMA/CD协议。
    2. 集线器只工作在物理层,它的每个接口仅简单地转发比特,不进行碰撞检测。
    3. 集线器一般都有少量的容错能力和网络管理功能。

    交换机

    在这里插入图片描述

    1. 以太网交换机通常有多个接口,每个接口与主机或交换机相连,工作在全双工方式。
    2. 能同时连通多对接口,可以使多对主机同时通信,无碰撞
    3. 工作在数据链路层(也包括物理层),它收到帧之后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧。
    4. 是一种即插即用的设备,内部的帧交换表使通过自学习算法建立的。
    5. 帧的两种转发方式:存储转发和直通交换(基于硬件的交叉矩阵)。

    • 以太网交换机自学习和转发帧的流程

    以太网交换机通过自学习算法逐渐建立起帧交换表,正是这样,它是一种即插即用的设备。
    以太网帧交换表中的每条记录都有自己的有效时间,到期会删除。

    以太网交换机自学习和转发的流程如下:

    1. 交换机收到帧后进行登记,登记的内容为帧的源MAC地址以及进入交换机的接口号。
    2. 根据帧的目的MAC地址和交换机的帧交换表对帧进行查表转发,有以下三种情况:
    • 明确转发:交换机知道应当从哪些接口转发该帧。
    • 盲目转发:交换机不知道应该从哪个接口转发帧,只能全部转发(泛洪)
    • 明确丢弃:交换机知道自己不应该转发该帧,将其丢弃。

    • 以太网交换机的生成树协议STP

    当一条链路出现故障时,添加冗余链路可以提高以太网的可靠性,但是也会产生相应问题:

    • 广播风暴
    • 主机收到重复广播帧
    • 交换机的帧交换表震荡

    以太网交换机使用生成树协议STP,可以在增加冗余链路提高网络可靠性的同时,避免网络环路的出现带来的各种问题。
    使用以太网生成树协议:

    1. 不论交换机之间采用怎样的物理连接,交换机都能自动计算并构建一个逻辑上没有环路的网络,其拓扑结构必须是树形的。
    2. 最终生成的树形逻辑拓扑要确保连通整个网络。
    3. 当首次连接交换机或网络物理拓扑发生变化时,交换机都将进行生成树的重新计算

    集线器和交换机的区别

    区别一:
    集线器在进行单播时,仅仅只是简单的转发比特,而交换机可以找到目的MAC地址对应的接口号,然后通过接口转发帧。
    如图所示:
    在这里插入图片描述

    区别二:
    在连接两个HUB连接的星型网络时,集线器HUB扩大了广播域,也同时扩大了碰撞域(冲突域)。而使用交换机来连接,可以扩大广播域,同时也可以隔离碰撞域(冲突域)
    如图所示:
    在这里插入图片描述

    虚拟以太网VLAN

    随着交换式以太网规模的扩大,广播域相应扩大,巨大的广播域会带来很多弊端:广播风暴、难以维护和管理、潜在的安全问题等。
    分离广播域可以采用两个方法:使用路由器和采用虚拟局域网VLAN技术。

    虚拟局域网VLAN(Virtual Local Area Network)是一种将局域网内的设备划分成与物理位置无关的逻辑组技术,这些逻辑组具有某些共同的需求。
    如图所示:
    在这里插入图片描述

    虚拟局域网VLAN的实现机制

    主要采用IEEE 802.1Q帧交换机的端口类型两种方式实现虚拟局域网

    • IEEE 802.1Q帧:
      IEEE802.1Q帧对以太网的MAC帧进行了拓展,插入了4字节的VLAN标记
      在这里插入图片描述

    VLAN标记的最后12比特称为VLAN标识符VID,它唯一地标志了以太网属于哪一个VLAN。VID的有效取值范围是1~4094。
    802.1Q帧是由交换机来处理的,而不是用户主机来处理的。当交换机收到普通的以太网帧时,会将其插入4字节的VLAN标记转变为802.1Q帧。

    • 交换机的端口类型:
      交换机的端口有以下三种:Access、Trunk、Hybrid。
      交换机各端口的缺省VLAN ID ,在华为交换机上称为PVID。
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7aqNRVwk-1656924863945)(en-resource://database/1089:1)]

    习题

    可靠传输

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T4tQriK3-1656924837976)(en-resource://database/1624:1)]

    静态划分信道

    在这里插入图片描述

    CSMA/CD

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

    CSMA/CA协议


    在这里插入图片描述

    MAC地址

    在这里插入图片描述

    集线器与交换机

    在这里插入图片描述

  • 相关阅读:
    分布式文件存储系统MinIO笔记
    springboot实现ACL+RBAC权限体系
    AIGC 是通向 AGI 的那条路吗?
    Qt_基础
    【HarmonyOS】鸿蒙开发之Stage模型-基本概念——第4.1章
    ARM 重定位引入和链接脚本
    2023年中国功能型内窥镜市场发展趋势分析:市场渗透潜力空间广阔[图]
    基于STM32设计的车库监控报警系统
    分布式锁的三种实现方式
    springBoot打包踩得坑
  • 原文地址:https://blog.csdn.net/weixin_62633072/article/details/125603749