3 数据链路层

发布时间 2023-07-24 16:15:37作者: mobbu

3 数据链路层

3.1 数据链路层概述

3.1.1数据链路层在网络体系中的地位

传输的数据包为帧frame

3.1.2 使用点对点信道的数据链路层

  • 封装成帧:帧头➕数据单元➕帧尾
  • 差错检测
  • 可靠传输

3.1.3 使用广播信道的数据链路层

  • 共享式以太网的媒体接入控制协议CSMA/CD
  • 802.11局域网的媒体接入控制协议CSMA/CA

3.1.4 数据链路层的互联设备

  • 网桥和交换机的工作原理
  • 集线器(物理层互连设备)与交换机的区别

3.2 封装成帧

3.2.1 封装成帧

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

  • 帧头和帧尾中包含有重要的控制信息。
  • 帧头和帧尾的作用之一就是帧定界。
    1)PPP帧的帧头和帧尾各有一个标志字节,作用是帧定界。

2)并不是每一种数据链路层协议的帧都包含帧定界标志。 例如,以太网MAC帧。而且以太网V2的MAC帧还有帧间间隔,规定为 96 比特时间。

3.2.2 透明传输

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

3.3 差错检测

3.3.1奇偶校验

  • 奇/偶校验:在待发送的数据后面 添加1位奇偶校验位,使整个数据(包括所添加的校验位在内)中 “1”的个数 为奇数(奇校验)或偶数(偶校验)。

奇偶校验法的漏检率较高,数据链路层一般不采用这种方法。

3.3.2 循环冗余检验CRC(Cyclic Redundancy Check)

1)CRC

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

2)生成多项式

  • 生成多项式举例

\[G(x)=x^4+x^2+x+1=1\cdot x^4+0\cdot x^3+1\cdot x^2+1\cdot x^1+1\cdot x^0 \]

此时生成多项式各项系数构成比特串为:10111

  • 常用的生成多项式

\[CRC-16=x^{16}+x^{15}+x^2+1\\ CRC-CCITT=x^{16}+x^{12}+x^5+1\\ CRC-32=x^{32}+x^{26}+x^{23}+x^{22}+x^{16}+x^{12}+x^{11}+x^{10}+x^8+x^7+x^5+x^4+x^2+x^1+1 \]

3.4 可靠传输

3.4.1 可靠传输的基本概念

3.4.2 三种可靠传输实现机制

  • 停止等待协议SW
  • 回退N帧协议GBN
  • 选择重传协议SR

3.4.3停止等待协议

  1. 停止-等待协议SW(Stop and Wait):发送方每发送一个分组,就停止发送并等待接收方的确认分组。当收到接收方的确认分组后,才能发送下一个数据分组,如此反复进行。

    • DATA:发送分组
    • ACK:确认接受分组
    • NAK:未接受,否定应答分组
  2. 超时重传机制

  3. 避免分组重复
    分组重复:接收方发送的 ACK 数据包丢失,发送方启动超时重传机制,发送重复分组。
    解决机制:为 避免分组重复这种传输错误,必须给 每个分组带上序号。对于停止-等待协议,由于每发送一个数据分组就停止等待,只要保证每发送一个新的数据分组,其发送序号与上次发送的数据分组的序号不同就可以了,因此用 一个比特来编号就够了

  4. 确认分组ACK迟到:确认分组也需要编号
    对于PPP信道的数据链路层实现停止-等待协议,往返时间固定,不需要给确认分组编号。

  5. 停止-等待协议的注意事项

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

计算举例

  • 当往返时延RTT远大于数据帧发送时延Tp时(例如使用卫星链路),信道利用率非常低。若出现重传,则对于传送有用的数据信息来说,信道利用率还要降低
  • 为了克服停止-等待协议信道利用率很低的缺点,就产生了另外两种协议,即后退N帧协议GBN和选择重传协议SR

3.4.4 回退N帧协议GBN

  1. 停止-等待协议SW的缺点及优化
  • 缺点:停止-等待协议SW的信道利用率很低,若出现超时重传,利用率更低。
  • 优化:采用流水线传输可以提高信道利用率。
  1. 回退N帧协议总结
  • 回退N帧协议在流水线传输的基础上利用发送窗口来限制发送方连续发送数据分组的数量,是一种连续ARQ协议。
  • 在协议的工作过程中发送窗回和接收窗口不断向前滑动,因此这类协议叉称为滑动窗回协议。
  • 由于回退N帧协议的特性,当通信线路质量不好时,其信道利用率并不比停止-等待协议高。

3.4.5 选择重传协议SR

SR协议总结

3.5 点对点协议PPP

3.5.1 PPP协议的组成

  • 点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的 点对点数据链路层协议
  • PPPoE:Point-to-Point Protocol over Ethernet
  • PPP协议是因特网工程任务组IETF在1992年制定的。经过1993年和1994年的修订,现在的PPP协议已成为因特网的正式标准[RFC1661,RFC1662]。

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

3.5.2 点对点协议PPP的帧格式

3.5.3 点对点协议PPP透明传输

点多点协议PPP实现透明传输的两种方法:

  • 面向字节的异步链路采用插入转义字符的字节填充法
  • 面向比特的同步链路采用插入比特 0 的比特填充法
  1. 字节填充法

  2. 比特填充法

3.5.4 差错检测

3.5.5 工作状态

3.6 媒体接入控制

3.6.1 媒体接入控制基本概念

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

3.6.2 媒体接入技术分类

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

3.6.3 媒体接入控制:静态划分信道

信道复用

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

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

  1. 时分复用 TDM
    时分复用的所有用户在 不同的时间占用同样的频带宽度

  1. 波分复用 WDM

  1. 码分复用 CDM

3.6.4 随机接入:CSMA/CD 协议

  1. 背景
    对于使用广播信道的总线型以太网,就会出现各种 碰撞(冲突)现象。

  2. 基本概念
    媒体接入控制-动态接入控制-随机接入方式:
    CSMA/CD 协议
    (载波监听多址接入/碰撞检测)
    (Carrier Sense Multiple Access/Collision Detection)\

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

  • 载波监听(CS):每一个站在发送帧之前先要检测一下总线上是否有其他站点在发送帧(“先听后说”

    • 若检测到 总线空闲 96 比特时间,则发送这个帧
    • 若检测到总线忙,则继续检测并等待总线转为 空闲 96 比特时间,然后发送这个帧。
  • 碰撞检测(CD):每一个正在发送帧的站边发送 边检测碰撞(“边说边听”)
    一旦发现总线,上出现碰撞,则立即停止发送,退避一段随机时间后再次发送(“一旦冲突,立即停说,等待时机,重新再说” )。

  • 强化碰撞
    以太网还采取一种叫做 强化碰撞 的措施。当发送帧的站点一旦检测到碰撞,除了 立即停止发送帧 外,还要再继续发送32比特或48比特的 人为干扰信号(Jamming Signal),以便有 足够多的碰撞信号 使所有站点都能检测出碰撞

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

A站 发送一个帧 完毕后,不再针对该帧进行碰撞检测,不知道已发送完毕的帧是否遭遇碰撞,不进行重传。而这时候C站 检测到信道空闲时间 96 bit,发送帧,将 产生碰撞
5. 最大帧长
6. 截断二进制指数退避算法
7. 信道利用率
8. 帧发送/接收流程

3.7. MAC 地址

3.7.1 MAC 地址

MAC 地址是以太网的 MAC 子层所使用的地址,属于数据链路层。

  • 对于点对点信道的数据链路层不需要地址。

  • 使用广播信道的数据链路层则需要使用 MAC 地址。

  • 当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识, 即一个数据链路层地址;

  • 在每个主机发送的帧中必须携带标识发送主机和接收主机的地址
    。由于这类地址是用于媒体接入控制 MAC(Media Access Control),因此这类地址被称为 MAC地址

    • MAC 地址一般被固化在网卡(网络适配器)的电可擦可编程只读存储器EEPROM中,因此MAC地址也 被称为硬件地址
    • MAC 地址有时也被称为 物理地址
    • 请注意:这并不意味着MAC地址属于网络体系结构中的物理层!
  • 般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球唯一的 MAC 地址。 而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的MAC地址。综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。

3.7.2 IEEE 802局域网的MAC地址格式

IEEE 802 局域网 MAC 地址格式:(共 6 字节,48位)
前 3 位字节(OUI) + 后 3 位(扩展标识符)

第 1 位字节的低位为 1、3、5、7、9、B、D,则为多播地址,48 位全为 1 时,则为广播地址。

提问:EU1-48地址空间会耗尽吗?

答:对于使用EUI-48空间的应用程序,IEEE的目标寿命为100年(直到2080),但是鼓励采用EUI-64作为替代。

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

3.7.4 单播/多播/广播地址举例

(1)单播地址
主机B将本主机地址填入单播帧源地址,主机C地址填入目的地址,形成该单播帧。

(2)广播地址
主机B将本机地址填入源地址,将 FF-FF-FF-FF-FF-FF 广播地址填入目的地址,构成广播帧。

(3)多播地址
主机A发送含有多播地址的多播帧,其他主机根据自己的多播组列表,判断是否接收帧。

3.8 IP地址

  • IP地址是因特网(Internet)上的 主机和路由器 所使用的地址, 用于标识两部分信息:
    • 网络编号:标识因特网上数以百万计的网络
    • 主机编号:标识同一网络上不同主机(或路由器各接口)
  • 很显然, 之前介绍的MAC地址不具备区分不同网络的功能
    • 如果只是一个单独的网络,不接入因特网,可以只使用MAC地址(这不是一般用户的应用方式)
      如果主机所在的网络要接入因特网,则IP地址和MAC地址都需要使用
  • IP 地址属于网络层,MAC 地址属于数据链路层
  • 数据包转发过程中源IP地址和目的IP地址保持不变
  • 数据包转发过程中源MAC地址和目的MAC地址逐个链路(逐个网络)改变

暂且认为:H1知道应该把数据包传给R1,由R1帮其把数据包转发出去。H1知道R1相应接口的IP地址为IP3,但不知道其对应的MAC地址是什么!

3.9 ARP地址转移协议

  • ARP只能在同一段链路间使用
  • 高速缓存表:IP地址与MAC地址的对应关系表,并且包含类型(动态、静态)
  • ARP协议:由IP地址获取MAC地址的一种协议
  • ARP原理:同一链路间发送广播MAC地址广播帧,以获取制定IP地址的固化MAC地址。
  • 分类:
    • 动态:自动获取,生命周期默认为两分钟;
    • 静态:手工设置,不同操作系统下的生命周期不同,例如系统重启后不存在或系统重启后依然有效。

3.10 集线器和交换机的区别

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

3.11 以太网交换机自学习和转发帧的过程

假设各主机知道网络中其他各主机的MAC地址(无需进行ARP)

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

自学习过程

  1. 收到帧后进行 登记。登记的内容为帧的源MAC地址及进入交换机的 接口号
  2. 根据 帧的目的MAC地址 和交换机的 帧交换表 对帧进行 转发,有以下三种情况:
    • 明确转发:交换机知道应当从哪个(或哪些)接口转发该帧(单播,多播,广播)
    • 盲目转发:交换机不知道 应当从哪个端口转发帧,只能将其通过除进入交换机的接口外的其他所有接口转发(也称为泛洪)。
    • 明确丢弃:交换机知道不应该转发该帧,将其丢弃。

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

3.12.1 背景

3.12.2 生成树协议STP

3.13 虚拟局域网VLAN