计网第三章数据链路层_详细易懂

文章目录

  • 第三章:数据链路层
    • 3.1 数据链路层概述
    • ==3.2 封装成帧==
    • ==3.3 差错检测==
    • ==3.4 可靠传输==
      • 3.4.1 可靠传输的基本概念
      • 3.4.2 可靠传输的实现机制 — 停止-等待协议
      • 3.4.3 可靠传输的实现机制 — 回退N帧协议
      • ==3.4.4 可靠传输的实现机制 — 选择重传协议==
    • 3.5 点对点协议PPP
    • 3.6 媒体接入控制MAC
      • 3.6.1 媒体接入控制的基本概念
      • 3.6.2 媒体接入控制 — 静态划分信道
      • ==3.6.3 媒体接入控制 — 动态接入控制 — 随机接入 — CSMA/CD协议==
      • ==3.6.4 媒体接入控制 — 动态接入控制 — 随机接入 — CSMA/CA协议==
    • 3.7 MAC地址、IP地址和ARP协议
      • 3.7.1 MAC地址
      • 3.7.2 IP地址
      • 3.7.3 ARP协议
    • ==3.8 集线器与交换机的区别==
    • ==3.9 以太网交换机自学习和转发帧的流程==
    • 3.10 以太网交换机的生成树协议STP
    • 3.11 虚拟局域网VLAN
      • 3.11.1 虚拟局域网VLAN概述

学习参考视频:计算机网络微课堂-湖科大

第三章:数据链路层

3.1 数据链路层概述

数据链路层是OSI参考模型中的第二层,介乎于物理层网络层之间。数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层

为达到这一目的,数据链路必须具备一系列相应的功能,主要有:

  1. 如何将数据组合成数据块,在数据链路层中称这种数据块为(frame),帧是数据链路层的传送单位;
  2. 如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配;
  3. 以及在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。

3.2 封装成帧

  • 1、封装成帧是指数据链路层把上层交付的协议数据单元添加帧头帧尾使之成为帧。

    • 帧头和帧尾具有重要的控制信息(目的地址、源地址和校验码等等);

      image-20211002111901205

      image-20211002111947080

    • 接收方的数据链路层如何将物理层交付的比特流如何分辨一个个帧呢?帧头和帧尾的作用之一就是帧定界

  • 假如说上层交付的数据单元中含有和帧定界相同的字符该怎么办呢,是不是会出问题?

    • 答案肯定是不会的,在发送前会扫描该帧,如果有相同的会在前面添加转义字符
    • 那问题又来了,如果有和转义字符相同的呢?道理也是同样的,也在前面添加转义字符就好了;
    • 接收方接收时,扫描该帧,将转义字符后的一个帧定界或转移字符按正常数据接收直到遇到前面没有转义字符的帧定界。
  • 2、上述一点也就是透明传输,透明传输也就是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。

    • 面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输。
    • 面向比特的物理链路使用比特填充的方法实现透明传输。
    • 比特填充如下:计网第三章数据链路层_详细易懂_第1张图片

3.3 差错检测

  • 1、实际的通信链路都不是理想的,比特在传输过程中可能会产生差错:1可能会变成0,而0也可能变成1。这称作比特差错

  • 2、而为解决这一问题,会在帧尾添加帧检测序列FCS,也就是差错检测码。使用差错检测码来检测传输过程中是否产生比特差错,是数据链路层所要解决的问题之一。

    • 奇偶校验

      计网第三章数据链路层_详细易懂_第2张图片

      奇偶校验实现简单,具有相对理想检错能力,但当同时出现2位及以上偶数位同时发生错误,奇偶校验却无法检测出偶数个数据位错误。通常不会采用,更多是选用下面这种方法。

    • 循环冗余校验CRC(CYclic Redundancy Check)

      1. 收发双方约定好一个生成多项式G(x);
      2. 发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面一起传输。
      3. 接收方通过生成多项式来计算收到的数据是否产生了误码。
      • 计算方法:

        计网第三章数据链路层_详细易懂_第3张图片

      • 举例说明:

        计网第三章数据链路层_详细易懂_第4张图片

        计网第三章数据链路层_详细易懂_第5张图片

    有没有想过,当接收方检查出错后,该如何处理呢?下面就引出了可靠传输的概念!

3.4 可靠传输

3.4.1 可靠传输的基本概念

  • 1、使用差错检测技术(例如循环冗余校验CRC),接收方的数据链路层就可检测出帧在传输过程中是否产生了误码(比特差错)。

  • 数据链路层向上层提供的服务类型有两种

    • 不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做;
    • 可靠传输服务:想办法实现发送端发送什么,接收端就接收什么。
  • 使用上述哪种方法一般分情况讨论

    1. 一般情况下,有线链路的误码率比较低,为减小开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理

    2. 无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务。

      计网第三章数据链路层_详细易懂_第6张图片

  • 2、比特差错只是传输差错中的一种。

    从整个计算机网络结构中来看,传输差错还包括分组丢失分组失序以及分组重复;(一般这三种不会出现在数据链路层,会出现在其上层)

  • 3、此外,可靠传输服务不局限于数据链路层,其他各层均可选择实现可靠传输。

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

  • 1、停止-等待协议,我们通过它的几种处理过程来介绍

计网第三章数据链路层_详细易懂_第7张图片

  • 如上图所示,第一种接收方发现有误码后:
    1. 将该分组丢弃,并给发送方发送NAK信号,表示重发
    2. 发送方收到后重发,接收方收到无误后,发送ACK表示成功,然后发送方发送下一个分组
  • 第二种接收方没有收到分组
    1. 发送方没有接到接收方信号,引起超时重发
  • 第三种接收方收到后,发送ACK确认,但丢失
    1. 发送方没有接到信号,误以为发送失败,超时重发
  • 第四种接收方发送ACK确认但是传输时延>重传时间,导致分组的确认重复
    • 所以我们需要给以上ACK和分组标号,以分辨是哪一个的分组确认信号,避免确认信息混淆。
  • 2、信道利用率计算方法

计网第三章数据链路层_详细易懂_第8张图片

​ 当往返时间RTT远大于数据帧发送时延TD时(例如卫星链路),信道利用率非常低;

​ 若出现重传,信道利用率会更低;

为了克服停止-等待协议利用率的缺点,就产生了下面两种协议!

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

在刚才的协议中,我们发现在分组发送后,收到确认信息后才可发送下一个分组,这就导致了通信资源的浪费。

所以我们可以一次性发送多个分组,提高信道利用率,如下图所示:

计网第三章数据链路层_详细易懂_第9张图片

  • 1、接下来,我们通过两个过程来了解它

    计网第三章数据链路层_详细易懂_第10张图片

    • 第一种情况:接收窗口依次收到0、1、2、3、4后,每次差错检测无误后向右滑动,然后发送累计确认,也就是发送2和4
      • 若发送方收到到2和4后,表示4和4之前的窗口确认成功,然后向右滑动5个窗口
      • 若4丢失,发送方只收到2,表示2之前的接收成功,2之后的要等待超时重传,所有窗口不动,只能等到5个窗口都发送成功才可滑动;
      • 若2丢失,发送方只收到4,表示4和4之前的窗口确认成功,然后向右滑动5个窗口,这就是累计确认
    • 第二种情况:接收窗口依次收到0、1、2、3、4后,差错检测发现2误码,会发送累计确认1;因为一个数据分组的误码就会导致其后续多个数据分组不能被接收方按序接收而丢弃(尽管他们无乱序和误码)。这必然会造成发送方对这些数据分组的超时重传,显然这是对通信资源的极大浪费!
  • 于是出现了下面这种协议

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

选择重传协议为了使发送方仅重传出现差错的分组,接收方不能采用累积确认,而需要对每个正确接收到的数据分组进行逐一确认

计网第三章数据链路层_详细易懂_第11张图片

  • 1、如上图所示,接收方发送0、1、2、3后,2在传输过程中丢失

    • 接收方这里,接收到什么便发送什么确认信息,也就是0、1、3,并向右滑动两格

    • 发送方收到0、1、3后,只能向右滑动两格,而且发送4、5分组并等待2超时重传,现况如下图

    计网第三章数据链路层_详细易懂_第12张图片

  • 2、发送窗口和接收窗口尺寸大小问题

    • 假设现在计网第三章数据链路层_详细易懂_第13张图片
      计网第三章数据链路层_详细易懂_第14张图片

    • 当1的确认分组丢失后,重新发送0,由于接收方无法分辨新、旧数据分组,则会将其接收到下一个0窗口。会导致下一次接收发送方发送的新的0分组丢弃

3.5 点对点协议PPP

计网第三章数据链路层_详细易懂_第15张图片

3.6 媒体接入控制MAC

3.6.1 媒体接入控制的基本概念

  • 共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体占用,即媒体接入控制MAC

计网第三章数据链路层_详细易懂_第16张图片

目前在有线局域网采用的是交换式局域网,而由于无线的广播天性还是采用的是共享式局域网。

3.6.2 媒体接入控制 — 静态划分信道

信道复用:复用就是通过一条物理线路同时传输多路用户的信号;

信道复用技术主要分为以下几种:

  • 1、频分复用FDM

计网第三章数据链路层_详细易懂_第17张图片

  • 2、时分复用TDM
    计网第三章数据链路层_详细易懂_第18张图片

  • 3、波分复用WDM
    计网第三章数据链路层_详细易懂_第19张图片

  • 4、码分复用CDM

计网第三章数据链路层_详细易懂_第20张图片

3.6.3 媒体接入控制 — 动态接入控制 — 随机接入 — CSMA/CD协议

载波监听多址接入/碰撞检测,即CSMA/CD,为了解决共享式局域网中多台主机在总线发生碰撞问题。

  • 多址接入MA:多个站连接在一条总线上,竞争使用总线;
  • 载波监听CS:每一个站在发送帧之前先要检测一下总线上是否有其他站点在发送该帧。
  • 碰撞检测CD:每一个正在发送帧的站,边发送边检测碰撞

1、若采用CSMA/CD协议,当一台主机要发送帧时过程如下

  1. 检测总线是否空闲,若空闲则发送,否则等待并持续检测
  2. 发送帧后,在总线传输过程中,会一直检测有没有发生碰撞
  3. 若发生碰撞,以太网会采取一种强化碰撞措施。这就是当发送帧的站点一旦检测到碰撞,除了立即停止发送该帧外,还要再发送32bit或48bit的人为干扰信号,以便有足够多的碰撞信号使所有站点都能检测出来。

2、若某主机发送的帧太长,会导致其他主机一直等待,为避免这种情况规定了最大帧长

计网第三章数据链路层_详细易懂_第21张图片

3、若帧太短,会导致其他主机检测不到信道被占用,增加碰撞概率,所以规定了最小帧长

最 小 帧 长 = 争 用 期 × 传 输 速 率 最小帧长=争用期\times传输速率 =×

争 用 期 = 两 点 之 间 距 离 传 播 速 率 × 2 争用期=\frac{两点之间距离}{传播速率}\times{2} =×2

这种协议用于早期有线共享式局域网,现在随着科技发展,交换式局域网已完全取代共享式局域网,所以这种协议也就被淘汰了!

3.6.4 媒体接入控制 — 动态接入控制 — 随机接入 — CSMA/CA协议

无线局域网中,不能使用碰撞检测CD,因为:

  1. 在无线信道中,信号波动会很大,接收到的信号强度可能会远小于发送信号的强度。如果要在无线网卡上实现碰撞检测CD,对硬件要求非常高

  2. 而且由于无线电波传播的特殊性(存在隐蔽站问题),进行碰撞检测的意义也不大。

计网第三章数据链路层_详细易懂_第22张图片

则给出以下解决办法

计网第三章数据链路层_详细易懂_第23张图片

在讲解CSMA/CA流程之前,我们先来了解下帧间间隔IFS

  • 802.11规定,所有的站点必须在持续检测到信道空闲一段时间后才能发送帧,这段时间称为帧间间隔IFS。
  • 高优先级帧等待时间较短,低优先级等待时间较长,这样就大大减少了发生碰撞的机会。
  • 常见的两种帧间间隔如下:
    1. 短帧间间隔SIFS(28us):最短的帧间间隔,用来分隔开属于一次对话的各帧。
    2. DCF帧间间隔DIFS(128us):他比SIFS要长得多,在DCF方式中用来 发送数据帧和管理数据帧。

一般来说在共享式无线局域网中,在发送帧前都会进行预约,这是因为:

  1. 对于一般的数据帧来说,其发送时延往往大于传播时延,碰撞的概率会很大,而且如果发生碰撞,浪费的时间会更
  2. 采用RTS帧和CTS帧进行预约,RTS帧和CTS帧很,发生碰撞的概率和碰撞产生的开销都很小,因此用很小的代价对信道进行预约是值得的

CSMA/CA协议的工作流程

  1. 信道空闲时,有帧要发送,要等待一段时间DIFS。因为可能有优先级更高的帧要发送;
  2. 等待后,发送RTS(请求发送帧);
  3. 目的站接收后,等待一段时间SIFS。因为在这段时间内目的站足够从接收状态变为发送状态;
  4. 等待后,发送CTS(允许发送帧);
  5. 源站接受到CTS帧后,再等待一段时间SIFS,就可以发送数据帧了;
  6. 目的站接收到数据帧后,等待一段时间SIFS,然后发送确认帧ACK

除外802.11标准规定了3种情况供用户选择:

  1. 使用RTS帧和CTS帧
  2. 不使用RTS帧和CTS帧
  3. 根据数据帧的长度超过某一值时才使用RTS帧和CTS帧

3.7 MAC地址、IP地址和ARP协议

如果我们的数据在局域网中传输,那又如何传输到指定的主机呢?由此产生了MAC地址

而如果我们的数据要在广域网甚至网上传输呢?那就需要用到IP地址。

3.7.1 MAC地址

  • MAC地址是以太网的MAC子层所使用的地址,又称作物理地址,属于数据链路层例如这是我的物理地址:28-3A-4D-15-4F-61

  • 一般情况下,用户主机会有两个网络适配器,有线局域网适配器和无线局域网适配器。每个适配器在全球都有唯一的MAC地址。严格来说,MAC地址是对网络上各接口的唯一标识,而不是对设备的唯一标识

计网第三章数据链路层_详细易懂_第24张图片

  • 在多个主机连接在同一个广播信道中,每个主机所发送的帧中必须包含发送主机和接收主机的MAC地址

3.7.2 IP地址

计网第三章数据链路层_详细易懂_第25张图片
计网第三章数据链路层_详细易懂_第26张图片
计网第三章数据链路层_详细易懂_第27张图片

3.7.3 ARP协议

当多台主机连接在同一个广播信道中,所要发送的帧必须包含接收方的MAC地址,而接收方的MAC地址又是从何而来的呢?

以主机B要给C发送数据为例:

  1. 先查找主机BARP高速缓存计网第三章数据链路层_详细易懂_第28张图片

  2. 若未找到,会发送ARP请求广播计网第三章数据链路层_详细易懂_第29张图片

  3. 目的主机接到后,给发送方发送MAC地址,并将对方各自的MAC地址保存在自己的ARP缓存

3.8 集线器与交换机的区别

  • 集线器

    • 集线器的每个接口仅简单的转发比特进行碰撞检测(由各站点的网卡检测)

    • 集线器只工作在物理层,使用集线器的以太网在逻辑上还是总线结构,使用的是CSMA/CD协议

    • 集线器一般都有少量的容错能力网络管理能力;例如某个网卡发生故障,不停的发送帧,其可以断开内部连接,使整个以太网都能正常工作。

    若采用集线器扩展以太网,就相当于是广播式以太网。

    若某主机向接收主机发送帧,该帧会通过广播形式传播,也就是所有主机都会收到该帧,那这样,就大大增加了碰撞概率,我们暂且叫这为一个小的碰撞域。

    那如果集线器将几个小的碰撞域连接在一起,那就会形成更大的碰撞域,所以这种方式不可取。

  • 交换机

计网第三章数据链路层_详细易懂_第30张图片

计网第三章数据链路层_详细易懂_第31张图片

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

  • 以太网交换机工作在数据链路层(也包括物理层)
  • 以太网收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧。
  • 以太网交换机在最初使用时帧交换表是空的,随着网络中各主机间的通信,以太网交换机通过自学习算法自动逐渐建立起帧交换表

计网第三章数据链路层_详细易懂_第32张图片

假如说目前有主机连接的两台交换机(如上图),A要往B发送数据帧,工作流程如下:

  1. A->B帧到达交换机后,交换表中保存A的MAC地址和接口号,然后根据B的MAC地址查找有无对应接口号
  2. 若有的话直接转发到对应接口号,没有向所有接口号都转发

帧交换表中每条记录都有有效时间,这是因为MAC地址和接口号的对应关系不是永久性的。

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

计网第三章数据链路层_详细易懂_第33张图片

3.11 虚拟局域网VLAN

3.11.1 虚拟局域网VLAN概述

计网第三章数据链路层_详细易懂_第34张图片

  • 分割广播域的方法

    • 使用路由器可以隔离广播域

      但是路由器的成本较高

    • 虚拟局域网VLAN技术应运而生

计网第三章数据链路层_详细易懂_第35张图片

你可能感兴趣的