朝颜的计算机网络学习笔记【Chapter 3.数据链路层】

课程来源: 「湖科大」计算机网络微课堂视频传送门

Chapter 3.数据链路层

3.1 数据链路层概述

基本概念

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

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

举例1:对于点对点信道的数据链路层而言

  • 封装成帧
    • 应用层协议数据单元 + 运输层协议首部 + 网络层协议首部 + 帧头、帧尾
    • 在数据链路层给网络层交付的协议数据单元添加帧头和帧尾的操作称为封装成帧
  • 差错检测
    • 帧在传输过程中可能遭遇误码等
    • 解决方法:可以将检测码封装在帧尾
  • 可靠传输
    • 尽管误码是不能完全避免的,但若能实现发送方发送什么,接收方就能收到什么,就称为可靠传输。

举例2:对于使用广播信道的数据链路层而言

  • 其他主机要如何知道所收到的帧不是发送给它们的,目的主机要如何知道所收到的帧就是发送给自己的呢?【编址问题】
    • 解决方法:可以将目的地址、原地址字段封装在帧头中
  • 多台主机传播时,产生碰撞【采用广播信道的共享式局域网不可避免的】
    • 以太网解决方法:媒体接入控制协议【CSMA/CD】
  • 交换式局域网
    • 网络中的交换机如何转发帧
  • 无线局域网【共享信道技术】
    • 802.11局域网的媒体接入控制协议CSMA/CD原理是怎样的?

3.2 封装成帧

封装成帧

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

那么接收方要怎么才能从接收到的一串比特流中识别出哪一段是一帧呢?

  • 在帧头和帧尾中包含有重要的控制信息。
  • 帧头和帧尾的作用之一就是帧定界。
  • 或者物理层会为以太网V2的MAC帧附加前导码

透明传输

透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。

那么如果发送方数据链路层收到其上层交付的协议数据单元中含有跟帧定界标识符一样的数值,接收方还能正确接收该帧吗?

那么如果发送方数据链路层收到其上层交付的协议数据单元中含有跟帧定界标识符、转义字符一样的数值,接收方还能正确接收该帧吗?

**方法一:**面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输。

  1. 在发送帧之前,对帧的数据部分进行扫描,每出现一个帧定界符就在其前面插入一个转义字符。
  2. 接收方数据链路层在物理层交付的比特流中提取帧,遇到第一个帧定界符认为这是开始,遇到转义字符则进行处理,再遇到帧定界符则认为结束了。
  3. 在发送帧之前,对帧的数据部分进行扫描,每出现一个帧定界符和转义字符就在其前面插入一个转义字符。

**方法二:**面向比特的物理链路使用比特填充的方法实现透明传输。

  1. 对上述问题可以采用零比特填充法【每几个连续的1后面插入一个0】

其他

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

3.3 差错检测

基本概念

  • **比特差错:**实际的通信链路都不是理想的,比特在传输过程中可能会产生差错:1可能会变成0,而0也可能变成1。【也称为误码】
  • 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate)。
  • 【那么接收方怎么知道误码了呢】使用差错检测码来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一

检错方法

  • 奇偶校验

    • 在待发送的数据后面添加1位奇偶校验位,使整个数据(包括所添加的校验位在内)中“1”的个数为奇数(奇校验)或偶数(偶校验)。
    • 如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码;
    • 如果有偶数个位发生误码,则奇偶性不发生变化,不能检查出误码(漏检);
  • 循环冗余校验CRC(Cyclic Redundancy Check)

    • 收发双方约定好一个生成多项式G(x)
    • 发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面一起传输;
    • 接收方通过生成多项式来计算收到的数据是否产生了误码;
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ON6X7ZWY-1645883130195)(./assets/差错检测.png)]
  • 总结

    • 检错码只能检出帧在传输过程中出现了差错,但并不能定位错误,因此无法纠正错误。
    • 要想纠正传输中的差错,可以使用冗余信息更多的纠错码进行前向纠错。但纠错码的开销比较大,在计算机网络中较少使用。
    • 循环冗余校验CRC有很好的检错能力(漏检率非常低),虽然计算比较复杂,但非常易于用硬件实现,因此被广泛应用于数据链路层。
    • 在计算机网络中通常采用我们后续课程中将要讨论的检错重传式来纠正传输中的差错,或者仅仅是丢弃检测到差错的帧,这取决于数据链路层向其上层提供的是可靠传输服务还是不可靠传输服务。

3.4 可靠传输

1 可靠传输的基本概念

  • 使用差错检测技术(例如循环冗余校验CRC),接收方的数据链路层就可检测出帧在传输过程中是否产生了误码(比特错误)。
  • 数据链路层向上层提供的服务类型
    • 不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做
    • 可靠传输服务:想办法实现发送端发送什么,接收端就收到什么
  • 一般情况下,有线链路的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。
  • 无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务。
  • 比特差错只是传输差错中的一种。
  • 从整个计算机网络体系结构来看,传输差错还包括分组丢失分组失序以及分组重复
  • 分组丢失、分组失序以及分组重复这些传输差错,一般不会出现在数据链路层,而会出现在其上层。
  • 可靠传输的实现比较复杂,开销也比较大,是否使用可靠传输取决于应用需求。

2 三种可靠传输的实现机制

  1. 停止-等待协议SW
  2. 回退N帧协议
  3. 选择重传协议SR

这三种可靠传输实现机制的基本原理并不仅限于数据链路层,可以应用到计算机网络体系结构的各层协议中。

停止-等待协议SW【也称为自动请求重传协议(Automatic Repeat reQuest,ARQ)】:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vnPQpKrN-1645883130196)(./assets/停止等待.png)]

  • 接收方收不到数据分组,就不会发送ACK或NAK。如果不采取其他措施,发送方就会一直处于等待接收方ACK或NAK的状态。

    • 为解决该问题,可以在发送方发送完一个数据分组时,启动一个超时计时器。若到了超时计时器所设置的重传时间而发送方仍收不到接收方的任何ACK或NAK,则重传原来的数据分组,这就叫做超时重传。
    • 一般可将重传时间选为略大于“从发送方到接收方的平均往返时间”。
  • 为避免分组重复这种传输错误,必须给每个分组带上序号。对于停止-等待协议,由于每发送一个数据分组就停止等待,只要保证每发送一个新的数据分组,其发送序号与上次发送的数据分组的序号不同就可以了,因此用一个比特来编号就够了。

  • 注意事项:

    • 接收端检测到数据分组有误码时,将其丢弃并等待发送方的超时重传。但对于误码率较高的点对点链路,为使发送方尽早重传,也可给发送方发送NAK分组。
    • 为了让接收方能够判断所收到的数据分组是否是重复的,需要给数据分组编号。由于停止-等待协议的停等特性,只需1个比特编号就够了,即编号0和1。
    • 为了让发送方能够判断所收到的ACK分组是否是重复的,需要给ACK分组编号,所用比特数量与数据分组编号所用比特数量一样。数据链路层一般不会出现ACK分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给ACK分组编号。
    • 超时计时器设置的重传时间应仔细选择。一般可将重传时间选为略大于“从发送方到接收方的平均往返时间”。
      • 在数据链路层点对点的往返时间比较确定,重传时间比较好设定。
      • 然而在运输层,由于端到端往返时间非常不确定,设置合适的重传时间有时并不容易。
  • 停止-等待协议的信道利用率

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oXt6kGjA-1645883130196)(./assets/停止等待信道利用率.png)]

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

若出现重传,则对于传送有用的数据信息来说,信道利用率还要降低。
为了克服停止-等待协议信道利用率很低的缺点,就产生了另外两种协议,即后退N帧协议GBN和选择重传协议SR。

回退N帧协议GBN【又称滑动窗口协议】:

前情:流水线传输

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y8LOkMBZ-1645883130197)(./assets/流水线传输.png)]

  • 基本原理【举例】
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7nd91gVU-1645883130198)(./assets/回退n帧举例.png)]

    • 【无差错情况,即未出现乱序和误码】累计确认:接收方不一定要对收到的数据分组逐个发送确认,而是可以在收到几个数据分组后(由具体实现决定),对按序到达的最后一个数据分组发送确认。ACKn表示序号为n及以前的所有数据分组都已正确接收。

      • 优点:
        • 即使确认分组丢失,发送方也可能不必重传!
        • 可以减少接收方的开销
        • 可以减少对网络资源的占用
      • 缺点:
        • 不能向发送方及时反映出接收方已经正确接收的数据分组的信息
    • 有差错情况

      • 问题1:发送方收到重复的确认【重复的上一次ACK】,就知道之前所发送的数据分组出现了差错,于是可以不等超时计时器超时就立刻重传!至于收到几个重复确认就立刻重传,由具体实现决定。

      举例:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dvjo56yx-1645883130198)(./assets/有差错情况.png)]
      在本例中,尽管序号为6, 7, 0, 1的数据分组正确到达接收方,但由于5号数据分组误码不被接受,它们也“受到牵连”而不被接受,发送方还要重传这些数据分组,这就是所谓的Go-back-N(回退N帧)。

      可见,当通信线路质量不好时,回退N帧协议的信道利用率并不比停止-等待协议高。

      • 问题2:若发送窗口尺寸超过分组长度上限,接收方对于重复接收的分组将无法分辨
  • 总结:

    • 发送方:
      • 发送窗口尺寸WT的取值范围是 1 < WT ≤ 2^n - 1
        • 其中,n是构成分组序号的比特数量
        • WT = 1,停止-等待协议
        • WT > 2^n - 1,接收方无法分辨新、旧数据分组
      • 发送方可在未收到接收方确认分组的情况下,将序号落在发送窗口内的多个数据分组全部发送出去;
      • 发送方只有收到对已发送数据分组的确认时,发送窗口才能向前相应滑动;
      • 发送方收到多个重复确认时,可在重传计时器超时前尽早开始重传,由具体实现决定。发送方发送窗口内某个已发送的数据分组产生超时重发时,其后续在发送窗口内且已发送的数据分组也必须全部重传,这就是回退N帧协议名称的由来。
    • 接收方:
      • 接收方的接收窗口尺寸WR的取值范围是WR = 1。因此接收方只能按序接收数据分组。
      • 接收方只接收序号落在接收窗口内且无误码的数据分组,并且将接收窗口向前滑动一个位置,与此同时给发送方发回相应的确认分组。为了减少开销,接收方不一定每收到一个按序到达且无误码的数据分组就给发送方发回一个确认分组,
        • 而是可以在连续收到好几个按序到达且无误码的数据分组后(由具体实现决定),才针对最后一个数据分组发送确认分组,这称为累积确认;
        • 或者可以在自己有数据分组要发送时才对之前按序接收且无误码的数据分组进行捎带确认;
      • 接收方收到未按序到达的数据分组,除丢弃外,还要对最近按序接收的数据分组进行确认;

选择重传协议SR【对回退n帧的改进】:

  • 发送方:
    • 发送方的发送窗口尺寸WT必须满足:1 < WT ≤ 2^(n-1)
      • 其中n是构成分组序号的比特数量;
      • 若WT = 1,则与停止-等待协议相同
      • 若WT > 2^(n-1),造成接收方无法分辨新、旧数据分组的问题
  • 接收方:
    • 接收方的接收窗口尺寸WR必须满足:1 < WR ≤ WT
      • 若WR = 1,与回退N帧协议相同
      • 若WR > WT:无意义

3.5 点对点协议PPP【Point-to-Point Protocol】

点对点协议PPP是目前使用最广泛的点对点数据链路层协议。用户计算机与ISP进行通信时,所使用的数据链路层协议通常就是PPP协议。

ISP已从因特网管理机构申请到一批合法的IP地址,提供给用户使用。

  • PPP协议为在点对点链路传输各种协议数据报提供了一个标准方法,主要由以下三部分构成:
    • 对各种协议数据报的封装方法【封装成帧】
    • 链路控制协议LCP,用于建立、配置以及测试数据链路的连接
    • 一套网络控制协议NCPs,其中的每个协议支持不同的网络层协议
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mhtFxQxZ-1645883130199)(./assets/PPP.png)]
  • PPP协议帧格式
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xfmBOiL0-1645883130199)(./assets/帧格式.png)]
  • PPP协议如何解决透明传输问题?
    • 如果是面向字节的异步链路,则采用字节填充法,插入转义字符
    • 如果是面向比特的同步链路,则采用比特填充法,插入比特0
  • PPP协议是如何进行差错检测的?
    • 接收方每收到一个PPP帧,就进行CRC检验。若CRC检验正确,就收下这个帧;反之,就丢弃这个帧。使用PPP的数据链路层向上不提供可靠传输服务。
  • PPP协议的工作状态
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1iuxRtWL-1645883130200)(./assets/工作状态.png)]

3.6 媒体接入控制

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

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

  • 静态划分信道:预先固定分配好信道,这类方法非常不灵活,对于突发性数据传输信道利用率会很低。通常在无线网络的物理层中使用,而不是在数据链路层中使用。
    • 频分多址
    • 时分多址
    • 码分多址
  • 动态接入控制
    • 受控接入【已逐步退出历史舞台】
      • 集中控制:有一个主站以循环方式轮询每个站点有无数据发送,只有被轮询到的站点才能发送数据。最大缺点是存在单点故障问题。
      • 分散控制:各站点是平等的,并连接成一个环形网络。令牌(一个特殊的控制帧)沿环逐站传递,接收到令牌的站点才有权发送数据,并在发送完数据后将令牌传递给下一个站点。
    • 随机接入:所有站点通过竞争,随机地在信道上发送数据。如果恰巧有两个或更多的站点在同一时刻发送数据,则信号在共享媒体上就要产生碰撞(即发生了冲突)。使得这些站点的发送都失败。因此,这类协议要解决的关键问题是如何尽量避免冲突及在发生冲突后如何尽快恢复通信。著名的共享式以太网采用的就是随机接入。

随着技术的发展,交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线领域已完全取代了共享式局域网,但由于无线信道的广播天性,无线局域网仍然使用的是共享媒体技术。

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

信道复用基本概念:

  • 复用(Multiplexing)是通信技术中的一个重要概念。复用就是通过一条物理线路同时传输多路用户的信号。
  • 当网络中传输媒体的传输容量大于多条单一信道传输的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽。

频分复用FDM:
频分复用的所有用户同时占用不同的频带资源并行通信。

时分复用FDM:
时分复用的所有用户在不同的时间占用同样的频带宽度。

波分复用WDM【光的频分复用】:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rsilImdj-1645883130200)(./assets/波分复用.png)]

码分复用CDM:

  • 码分复用CDM是另一种共享信道的方法。实际上,由于该技术主要用于多址接入,人们更常用的名词是码分多址CDMA(Code Division Multiple Access)
    • 同理,频分复用FDM和时分复用TDM同样可用于多址接入,相应的名词是频分多址FDMA(Frequency Division Multiple Access)和时分多址TDMA(Time Division Multiple Access)
    • 在本课程中,我们不严格区分复用与多址的概念。可简单理解如下:
      • 复用是将单一媒体的频带资源划分成很多子信道,这些子信道之间相互独立,互不干扰。从媒体的整体频带资源上看,每个子信道只占用该媒体频带资源的一部分。
      • 多址(更确切地应该称为多点接入)处理的是动态分配信道给用户。这在用户仅仅暂时性地占用信道的应用中是必须的,而所有的移动通信系统基本上都属于这种情况。相反,在信道永久性地分配给用户的应用中,多址是不需要的(对于无线广播或电视广播站就是这样)。
  • 与FDM和TDM不同,CDM的每一个用户可以在同样的时间使用同样的频带进行通信。
  • 由于各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰。
  • CDM最初是用于军事通信的,因为这种系统所发送的信号有很强的抗干扰能力,其频谱类似于白噪声,不易被敌人发现。
  • 随着技术的进步,CDMA设备的价格和体积都大幅度下降,因而现在已广泛用于民用的移动通信中。
  • 在CDMA中,每一个比特时间再划分为m个短的间隔,称为码片(Chip)。通常m的值是64或128。为了简单起见,在后续的举例中,我们假设m为8。
  • 使用CDMA的每一个站被指派一个唯一的m bit码片序列(Chip Sequence)。
    • 一个站如果要发送比特1,则发送它自己的m bit码片序列;
    • 一个站如果要发送比特0,则发送它自己的m bit码片序列的二进制反码;
  • 码片序列的挑选原则如下:
    1. 分配给每个站的码片序列必须各不相同,实际常采用伪随机码序列。
    2. 分配给每个站的码片序列必须相互正交(规格化内积为0)。

频分:一条路同一时间走两种车;
时分:一条路一种车只能在属于他的时间经过;
码分:给两种车分别编号(编码),到了终点再根据编号区分;

3 媒体接入控制——动态接入控制——随机接入

  • 早期的共享式以太网:载波监听多址接入/碰撞检测【CSMA/CD】
  • 无限局域网使用的协议:载波监听多址接入/碰撞避免【CSMA/CA】
    • 多址接入:多个站连接在一条总线上,竞争使用总线。
    • 载波监听CS:每一个站在发送帧之前先要检测一下总线上是否有其他站点在发送帧(“先听后说”):
      • 若检测到总线空闲96比特时间,则发送这个帧;
      • 若检测到总线忙,则继续检测并等待总线转为空闲96比特时间,然后发送这个帧。
        • 96比特时间是指发送96比特所耗费的时间,也称帧间最小间隔
    • 碰撞检测CD:每一个正在发送帧的站边发送边检测碰撞(“边说边听”):
      • 一旦发现总线上出现碰撞,则立即停止发送,退避一段随机时间后再次发送(“一旦冲突,立即停说,等待时机,重新再说”)。
      • 以太网还采取一种叫做强化碰撞的措施。这就是当发送帧的站点一旦检测到碰撞,除了立即停止发送帧外,还要再继续发送32比特或48比特的人为干扰信号(Jamming Signal),以便有足够多的碰撞信号使所有站点都能检测出碰撞。

CSMA/CD协议

①争用期【碰撞窗口】
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hyAL0OVH-1645883130201)(./assets/碰撞窗口.png)]

  • 主机最多经过2τ【即δ → 0】的时长就可检测到本次发送是否遭受了碰撞
  • 因此,以太网的端到端往返传播时延2τ称为争用期或碰撞窗口。
  • 经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
  • 每一个主机在自己发送帧之后的一小段时间内,存在着遭遇碰撞的可能性。这一小段时间是不确定的。它取决于另一个发送帧的主机到本主机的距离,但不会超过总线的端到端往返传播时延,即一个争用期时间。
  • 显然,在以太网中发送帧的主机越多,端到端往返传播时延越大,发生碰撞的概率就越大。因此,共享式以太网不能连接太多的主机,使用的总线也不能太长。
    • 10Mb/s以太网把争用期定为512比特发送时间,即51.2μs,因此其总线长度不能超过5120m,但考虑到其他一些信号衰减等,以太网规定总线长度不能超过2500m。

②最小帧长

以太网的帧长不能太短,这是为了防止主机发送完毕后不知道已发送完毕的该帧遭遇了碰撞,不会重发该帧。

==> 最小帧长 = 争用期✖️数据传输速率

  • 以太网规定最小帧长为64字节,即512比特(512比特时间即为争用期);
    • 如果要发送的数据非常少,那么必须加入一些填充字节,使帧长不小于64字节。
  • 以太网的最小帧长确保了主机可在帧发送完成之前就检测到该帧的发送过程中是否遭遇了碰撞;
    • 如果在争用期(共发送64字节)没有检测到碰撞,那么后续发送的数据就一定不会发生碰撞;
    • 如果在争用期内检测到碰撞,就立即中止发送,这时已经发送出去的数据一定小于64字节,因此凡长度小于64字节的帧都是由于碰撞而异常中止的无效帧。

③最长帧长

以太网的帧长不能太长,这是为了防止总线一直被占用。

④截断二进制指数退避算法

退避时间 = 基本退避时间【争用期,2τ】✖️随机数r【离散的整数集合{0, 1,…, 2^k - 1},中的一个数;k = min{重传次数,10}】

  • 若连续多次发生碰撞,就表明可能有较多的主机参与竞争信道。但使用上述退避算法可使重传需要推迟的平均时间随重传次数而增大(这也称为动态退避),因而减小发生碰撞的概率,有利于整个系统的稳定。
  • 当重传达16次仍不能成功时,表明同时打算发送帧的主机太多,以至于连续发生碰撞,则丢弃该帧,并向高层报告。

⑤信道利用率
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R4ZPdQCI-1645883130201)(./assets/信道利用率.png)]

  • 理想情况下:
    • 各主机发送帧都不会产生碰撞;
    • 总线一旦空闲就有某个主机立即发送帧;
    • 发送一帧占用总线的时间为T0+τ,而帧本身的发送时间是T0

==> 极限信道利用率 Smax = T0/(T0 + τ)= 1 /(1 + τ/T0)= 1/(1 + a)

  • 参数a的值尽量小,以提高信道利用率
    • 则τ应当小一点,那么以太网端到端的距离受到限制
    • 则T0应当大一点,那么以太网帧的长度应尽量长些

⑥帧发送流程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FxJAT71L-1645883130202)(./assets/帧发送流程图.png)]

⑦帧接收流程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cOctZCsj-1645883130202)(./assets/帧接收流程.png)]

**注意:**CSMA/CD协议曾经用于各种总线结构以太网和双绞线以太网的早期版本中。现在的以太网基于交换机和全双工连接,不会有碰撞,因此没有必要使用CSMA/CD协议。

CSMA/CA协议

既然CSMA/CD协议已经成功地应用于使用广播信道的有线局域网,那么同样使用广播信道的无线局域网能不能也使用CSMA/CD协议呢?

在无线局域网中,仍然可以使用载波监听多址接入CSMA,即在发送帧之前先对传输媒体进行载波监听。若发现有其他站在发送帧,就推迟发送以免发生碰撞。

在无线局域网中,不能使用碰撞检测CD,原因如下:

由于无线信道的传输条件特殊,其信号强度的动态范围非常大,无线网卡上接收到的信号强度往往会远远小于发送信号的强度(可能相差百万倍)。如果要在无线网卡上实现碰撞检测CD,对硬件的要求非常高。即使能够在硬件上实现无线局域网的碰撞检测功能,但由于无线电波传播的特殊性(存在隐蔽站问题),进行碰撞检测的意义也不大。

  • 802.11无线局域网使用CSMA/CA协议,在CSMA的基础上增加了一个碰撞避免CA功能,而不再实现碰撞检测功能。
  • 由于不可能避免所有的碰撞,并且无线信道误码率较高,802.11标准还使用了数据链路层确认机制(停止-等待协议)来保证数据被正确接收。
  • 802.11的MAC层标准定义了两种不同的媒体接入控制方式:
    • 分布式协调功能DCF(Distributed Coordination Function)。在DCF方式下,没有中心控制站点,每个站点使用CSMA/CA协议通过争用信道来获取发送权,这是802.11定义的默认方式。
    • 点协调功能PCF(Point Coordination Function)。PCF方式使用集中控制的接入算法(一般在接入点AP实现集中控制),是802. 11定义的可选方式,在实际中较少使用。

①帧间间隔【InterFrame Space,IFS】

  • 802.11标准规定,所有的站点必须在持续检测到信道空闲一段指定时间后才能发送帧,这段时间称为帧间间隔
  • 帧间间隔的长短取决于该站点要发送的帧的类型:
    • 高优先级帧需要等待的时间较短,因此可优先获得发送权;
    • 低优先级帧需要等待的时间较长。若某个站的低优先级帧还没来得及发送,而其他站的高优先级帧已发送到信道上,则信道变为忙态,因而低优先级帧就只能再推迟发送了。这样就减少了发生碰撞的机会。
  • 常用的两种帧间间隔如下:
    • 短帧间间隔SIFS(28μs),是最短的帧间间隔,用来分隔开属于一次对话的各帧。一个站点应当能够在这段时间内从发送方式切换到接收方式。使用SIFS的帧类型有ACK帧、CTS帧、由过长的MAC帧分片后的数据帧、以及所有回答AP探询的帧和在PCF方式中接入点AP发送出的任何帧。
    • DCF帧间间隔DIFS(128μs),它比短帧间间隔SIFS要长得多,在DCF方式中用来发送数据帧和管理帧。

②CSMA/CA协议的工作原理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oF3xj8xH-1645883130203)(./assets/CA工作原理.png)]

  • 问题1:源站为什么在检测到信道空闲后还要再等待一段时间DIFS?
    • 就是考虑到可能有其他的站有高优先级的帧要发送。若有,就要让高优先级帧先发送。
  • 问题2:目的站为什么正确接收数据帧后还要等待一段时间SIFS才能发送ACK帧?
    • SIFS是最短的帧间间隔,用来分隔开属于一次对话的各帧。在这段时间内,一个站点应当能够从发送方式切换到接收方式。
  • 问题3:信道由忙转为空闲且经过DFS时间后,为什么还要退避一段随机时间才能使用信道?
    • 防止多个站点同时发送数据而产生碰撞。
  • 问题4:何时使用退避算法?
    • 当站点检测到信道是空闲的,并且所发送的数据帧不是成功发送完上一个数据帧之后立即连续发送的数据帧, 则不使用退避算法。
    • 以下情况必须使用退避算法:
      • 在发送数据帧之前检测到信道处于忙状态时;
      • 在每一次重传一个数据帧时;
      • 在每一次成功发送后要连续发送下一个帧时(这是为了避免一个站点长时间占用信道)

③CSMA/CA协议的退避算法

  • 在执行退避算法时,站点为退避计时器设置一个随机的退避时间:
    • 当退避计时器的时间减小到零时,就开始发送数据;
    • 当退避计时器的时间还未减小到零时而信道又转变为忙状态,这时就冻结退避计时器的数值,重新等待信道变为空闲,再经过时间DFS后,继续启动退避计时器。
  • 在进行第i次退避时,退避时间在时隙编号{0,1,…,2^(2+i)-1}中随机选择一个,然后乘以基本退避时间(也就是一个时隙的长度)就可以得到随机的退避时间。这样做是为了使不同站点选择相同退避时间的概率减少。当时隙编号达到255时(对应于第6次退避)就不再增加了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-esDgjXTm-1645883130203)(./assets/退避算法.png)]

④CSMA/CA协议的信道预约和虚拟载波监听

  • 为了尽可能减少碰撞的概率和降低碰撞的影响,802.11标准允许要发送数据的站点对信道进行预约。
    1. 源站在发送数据帧之前先发送一个短的控制帧,称为请求发送RTS(Request To Send),它包括源地址、目的地址l以及这次通信(包括相应的 确认帧)所需的持续时间。
    2. 若目的站正确收到源站发来的RTS帧,且媒体空闲,就发送一个响应控制帧,称为允许发送CTS(Clear To Send),它也包括这次通信所需的
      持续时间(从RTS帧中将此持续时间复制到CTS帧中)
    3. 源站收到CTS帧后,再等待一段时间SIFS后,就可发送其数据帧。
    4. 若目的站正确收到了源站发来的数据帧,在等待时间SIFS后,就向源站发送确认帧ACK。
  • 除源站和目的站以外的其他各站,在收到CTS帧(或数据帧)后就推迟接入到无线局域网中。这样就保证了源站和目的站之间的通信不会受到其他站的干扰。
  • 如果RTS帧发生碰撞,源站就收不到CTS帧,需执行退避算法重传RTS帧。
  • 由于RTS帧和CTS帧很短,发送碰撞的概率、碰撞产生的开销及本身的开销都很小。而对于一般的数据帧,其发送时延往往大于传播时延(因为是局域网),碰撞的概率很大,且一旦发生碰撞而导致数据帧重发,则浪费的时间就很多,因此用很 小的代价对信道进行预约往往是值得的。802.11标准规定了3种情况供用户选择:
    • 使用RTS帧和CTS帧
    • 不使用RTS帧和CTS帧
    • 只有当数据帧的长度超过某一数值时才使用RTS帧和CTS帧
  • 除RTS帧和CTS帧会携带通信需要持续的时间,数据帧也能携带通信需要持续的时间,这称为802.11的虚拟载波监听机制。
  • 由于利用虚拟载波监听机制,站点只要监听到RTS帧、CTS帧或数据帧中的任何一个,就能知道信道被占用的持续时间,而不需要真正监听到信道上的信号,因此虚拟载波监听机制能减少隐蔽站带来的碰撞问题。

区别:

CSMA是指载波监听多址接入,并不使用确认机制;

CSMA/CD是指载波监听多址接入/碰撞检测,是对CSMA的改进,是早期共享信道以太网使用的信道访问控制协议,并不使用确认机制;

CSMA/CA是指载波监听多址接入/碰撞避免,是802.11局域网采用的无线信道访问控制协议。802.11局域网在使用CSMA/CA的同时,还使用停止-等待协议。这是因为无线信道的通信质量远不如有线信道,因此无线站点每发送完一个数据帧后,要等到收到对方的确认帧后才能继续发送下一帧;

TDMA,FDMA,CDMA是常见的物理层信道复用技术,属于静态划分信道,不属于MAC协议,用于多用户共享信道,不会发生冲突。

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

  • 【数据链路层】MAC地址是以太网的MAC子层所使用的地址
  • 【网际层】IP地址是TCP/IP体系结构网际层所使用的地址
  • 【网际层】ARP协议属于TCP/IP体系结构的网际层,其作用是已知设备所分配到的IP地址
  • 尽管IP地址和ARP协议属于TCP/IP体系结构的网际层(而不属于数据链路层),但是它们与MAC地址存在一定的关系,并且我们日常的网络应用都离不开MAC地址、IP地址以及ARP协议。因此,我们将这三者放在一起讨论。

1 MAC地址

  • 使用点对点信道的数据链路层不需要使用地址;
  • 当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识, 即一个数据链路层地址;
  • 在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制 MAC(Media Access Control),因此这类地址被称为MAC地址;
    • MAC地址一般被固化在网卡(网络适配器)的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址;
    • MAC地址有时也被称为物理地址。请注意:这并不意味着MAC地址属于网络体系结构中的物理层!
  • 一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的MAC地址。综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。

IEEE 802局域网的MAC地址格式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-39lEu4mz-1645883130204)(./assets/MAC地址格式.png)]

  • 标准表示法:【Windows系统】XX-XX-XX-XX-XX-XX
  • 其他表示法
    • 【安卓、苹果系统】XX:XX:XX:XX:XX:XX
    • 【Packet Tracer】XXXX.XXXX.XXXX
  • FF-FF-FF-FF-FF-FF是广播地址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G0SkueVr-1645883130204)(./assets/MAC地址类型.png)]

IEEE 802局域网的MAC地址发送顺序

  • 字节发送顺序:第一字节 -> 第六字节
  • 字节内的比特发送顺序:b0 -> b7

**单播MAC作用:**只能被一个接收并交付上层处理

**广播MAC作用:**能被全部接收并交付上层处理

**多播MAC作用:**能被部分接收并交付上层处理

**注意:**给主机配置多播组列表进行私有应用时,不得使用公有的标准多播地址 具体可在[以下网址查询](http://standards.ieee.org/devel op/regauth/grpmac/public.html)

2 IP地址【网际层】

  • IP地址是因特网(Internet)上的主机和路由器所使用的地址,用于标识两部分信息【IP地址 = 网络编号 + 主机编号】:
    • 网络编号:标识因特网上数以百万计的网络
    • 主机编号:标识同一网络上不同主机(或路由器各接口)
  • 很显然,之前介绍的MAC地址不具备区分不同网络的功能。
    • 如果只是一个单独的网络,不接入因特网,可以只使用MAC地址(这不是一般用户的应用方式)
    • 如果主机所在的网络要接入因特网,则P地址和MAC地址都需要使用。

从网络体系结构看IP地址与MAC地址
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M12ubhzO-1645883130205)(./assets/IP地址和MAC地址.png)]

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

  • 数据包转发过程中源P地址和目的P地址保持不变;
  • 数据包转发过程中源MAC地址和目的MAC地址逐个链路 (或逐个网络)改变。

如何通过IP地址知道MAC地址? ==> 地址解析协议ARP

3 地址解析协议ARP

  • 利用每台主机的ARP高速缓存表
    • 若存有要用的IP地址,则能直接得到其对应的MAC地址
    • 若无,则发送ARP请求报文【广播】
      • 目的主机将请求主机的lP地址与MAC地址记录到自己的ARP高速缓存表中;
      • 然后给请求主机发送ARP响应,以告知自己的MAC地址。
  • ARP高速缓存表中的记录都有其类型
    • 动态类型:记录是主机自动获取的【像上面那样发送广播获取】,生命周期默认为两分钟;生命周期结束后会删除【这是因为网卡这些可能会坏,需要更换,更换了之后MAC地址就会变】
    • 静态类型:手工设置,不同操作系统下的生命周期不同,例如系统重启后不存在或系统重启后依然有效。
  • ARP协议的作用范围:只能在一段链路或一段网络上使用而不能跨网络使用
  • 除ARP请求和响应外,ARP还有其他类型的报文(例如用于检查IP地址冲突的“无故ARP、免费ARP(Gratuitous ARP)”);
  • ARP没有安全验证机制,存在ARP欺骗(攻击)问题。

3.8 集线器与交换机的区别

  • 早期:总线型以太网【粗缆、细缆】
  • 现在:使用双绞线和集线器HUB的星型以太网
    • 使用集线器的以太网在逻辑上仍是一个总线网,各站共享总线资源,使用的还是CSMA/CD协议;【可将集线器看作总线】
    • 集线器只工作在物理层,它的每个接口仅简单地转发 比特,不进行碰撞检测(由各站的网卡检测);
    • 集线器一般都有少量的容错能力和网络管理功能。例如,若网络中某个网卡出了故障,不停地发送帧。此时,集线器可以检测到这个问题,在内部断开与出故障网卡的连线,使整个以太网仍然能正常工作。

使用集线器HUB在物理层扩展以太网

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NSsMVFY2-1645883130205)(./assets/扩展以太网.png)]

以太网交换机SWITCH:选好了之后单播,而集线器就是转发给其他全部

  • 以太网交换机通常都有多个接口。每个接口都可以直接与一台主机或另一个以太网交换机相连。一般都工作在全双工方式。
  • 以太网交换机具有并行性,能同时连通多对接口,使多对主机能同时通信,无碰撞(不使用CSMA/CD协议)
  • 以太网交换机一般都具有多种速率的接口,例如:10Mb/s、100Mb/s、1Gb/s、10Gb/s接口的多种组合。
  • 以太网交换机工作在数据链路层(也包括物理层),它收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧。
  • 以太网交换机是一种即插即用设备,其内部的帧交换表是通过自 学习算法自动地逐渐建立起来的。 帧的两种转发方式:
    1. 存储转发
    2. 直通交换:采用基于硬件的交叉矩阵(交换时延常,但不检查帧是否右差错)

对比总结

集线器HUB交换机SWITCH
1. 早期以太网的互连设备;
2. 工作在OSI体系结构的物理层
3. 对接收到的信号进行放大、转发;
4. 使用集线器作为互连设备的以太网仍然属于共享总线式以太网。集线器互连起来的所有主机共享总线 带宽,属于同一个碰撞域和广播域。
1. 目前以太网中使用最广泛的互连设备;
2. 工作在OSI体系结构的数据链路层(也包括物理层)
3. 根据MAC地址对帧进行转发;
4. 使用交换机作为互连设备的以太网,称为交换式以太网。交换机可以根据MAC地址过滤帧,即隔离碰撞域。;
5. 交换机的每个接口是一个独立的碰撞域;
6. 交换机隔离碰撞域但不隔离广播域(VLAN除外)

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

  1. 接收
  2. 登记【源MAC地址和接口】 ==> 自学习
  3. 转发
    • 盲目转发称为泛洪
    • 明确转发即明确

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

如何提高以太网的可靠性?

可以添加冗余链路。

但是,冗余链路也会带来负面效应,比如:形成网络环路。网络环路会带来以下问题:

  • 广播风暴。大量消耗网络资源,使得网络无法正常转发其他数据帧。
  • 主机收到重复的广播帧。大量消耗主机资源。
  • 交换机的帧交换表震荡 (漂移)
  • 以太网交换机使用生成树协议STP(Spanning Tree rotocol), 可以在增加冗余链路来提高网络可靠性的同时又避免网络环路 带来的各种问题。
    • 不论交换机之间采用怎样的物理连接,交换机都能够自动 计算并构建一个逻辑上没有环路的网络,其逻辑拓扑结构必须是树型的(无逻辑环路)
    • 最终生成的树型逻辑拓扑要确保连通整个网络;
    • 当首次连接交换机或网络物理拓扑发生变化时(有可能是 人为改变或故障),交换机都将进行生成树的重新计算。

3.11 虚拟局域网VLAN

1 虚拟局域网VLAN概述

  • 以太网交换机工作在数据链路层 (也包括物理层)
  • 使用一个或多个以太网交换机互连起来的交换式以 太网,其所有站点都属于同一个广播域。
  • 随着交换式以太网规摸的扩大,广播域相应扩大。
  • 巨大的广播域会带来很多弊端:
    • 广播风暴
    • 难以管理和维护
    • 潜在的安全问题
  • 网络中会频繁出现广播信息
    • TCP/IP协议栈中的很多协议都会使用广播:
      • 地址解析协议ARP(已知IP地址,找出其相应的MAC地址)
      • 路由信息协议RIP(一种小型的内部路由协议)
      • 动态主机配置协议DHCP(用于自动配置IP地址)
    • NetBEUI:Vidnows下使用的广播型协议
    • IPX/SPX:Novellp网络的协议栈
    • Apple Talk:Apple公司的网络协议栈
  • 分割广播域的方法
    1. 使用路由器可以隔离广播域。但路由器的成本较高
    2. 虚拟局域网技术应运而生

虚拟局域网VLAN
虚拟局域网VLAN(Virtual Local Area Network)是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求。【同一个VLAN内部可以广播通信,不同VLAN内部不能广播通信】

2 虚拟局域网VLAN的实现机制

  • 虚拟局域网是在交换机上实现的,需要交换机具有两大功能
    • 能够处理带有VLAN标记的帧【IEEE 802.1Q帧】
    • 交换机的各端口可以支持不同的端口类型,不同类型的端口对帧的处理方式都有所不同

IEEE 802.1Q帧【也称Dot One Q帧】

  • 对以太网的MAC帧格式进行了扩展,插入了4字节的VLAN标记。
  • VLAN标记的最后12比特称为VLAN标识符VID,它唯一地标志了以太网帧属于哪一个VLAN。
    • VID的取值范围是04095(02^12-1)
    • 0和4095都不用来表示VLAN,因此用于表示VLAN的VID的有效取值范围是1~4094。
  • 802.1Q帧是由交换机来处理的,而不是用户主机来处理的。
    • 当交换机收到普通的以太网帧时,会将其插入4字节的VLAN标记转变为802.1Q帧,简称“打标签”。
    • 当交换机转发802.1Q帧时,可能会删除其4字节VLAN标记转变为普通以太网帧,简称“去标签”。

交换机的端口类型

  • 交换机的端口类型有以下三种:
    • Access
    • Trunk
    • Hybrid
  • 交换机各端口的缺省VLAN ID
    • 在思科交换机上称为Native VLAN,即本征VLAN。
    • 在华为交换机上称为Port VLAN ID,即端口VLAN ID,简记为PVID。
    • 交换机的每个端口有且仅有一个PVID

帧中的是VID,端口的是PVID

Access端口

  • Access端口一般用于连接用户计算机
  • Access端口只能属于一个VLAN
  • Access端口的PVID值与端口所属VLAN的ID 相同(默认为1)
  • Access端口接收处理方法:一般只接受“未打标签”的普通以太网MAC帧。根据接收帧的端口的PVD给帧“打标签”,即插入4字节VLAN标记字段,字段中的VID取值与端口的PVID取值相等。
  • Access端口发送处理方法:若帧中的VID与端口的PVID相等,则“去标签”并转发该帧;否则不转发。
  • 交换机上电之后默认类型为Access

Trunk端口

  • Trunk端口一般用于交换机之间或交换机与路由器之间的互连
  • Trunk端口可以属于多个VLAN
  • 用户可以设置Trunk端口的PVID值。默认情况下,Trunk端口的PVID值为1。
  • Trunk端口发送处理方法:
    • 对VID等于PVID的帧,“去标签”再转发;
    • 对VID不等于PVID的帧,不去标签,直接转发;
  • Trunk端口接收处理方法:
    • 接收“未打标签”的帧,根据接收帧的端口的PVID给帧“打标签”,即插入4字节VLAN标记字段,字段中的VID取值与端口的PVID取值相等。
    • 接收“已打标签的帧”;

互连的Trunk端口的PVID值不等,可能会造成转发错误!

Hybrid端口【华为交换机私有】

  • Hybrid端口既可用于交换机之间或交换机与路由器之间的互连(同Trunk端口),也可用于交换机与用户计算机之间的互连(同Access端口)

  • Hybrid端口可以属于多个VLAN(同Trunk端口)

  • 用户可以设置Hybrid端口的PVID值。默认情况下,Hybrid端口的PVID值为1(同Trunk端口)

  • Hybrid端口发送处理方法(与Trunk端口不同):查看帧的VID是否在端口的“去标签” 列表中:

    • 若存在,则“去标签”后再转发;
    • 若不存在,则直接转发;
  • Hybrid端口接收处理方法(同Trunk端口)

    • 接收“未打标签”的帧,根据接收帧的端口的PVID给帧“打标签”,即插入4字节VLAN标记字段,字段中的VID取值与端口的PVID取值相等。
    • 接收“已打标签的帧”;

    举例:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WHUe75Uu-1645883130206)(./assets/Hybrid1.png)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OpbqOPZK-1645883130206)(./assets/Hybrid2.png)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值