1.数据链路层概述

链路(Link)是指从一个节点到相邻节点的一段物理线路(有线或无线),而中间没有任何其他的交换节点。
image.png

  • 数据链路(Data Link)是基于链路的。当在一条链路上传送数据时,除需要链路本身,还需要一些必要的通信协议来控制这些数据的传输,把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
  • 不同类型的数据链路,所用的通信协议可能是不同的
    • 广播信道:CSMA/CD协议(比如同轴电缆、集线器等组成的网络)
    • 点对点信道:PPP协议(比如2个路由器之间的信道)
  • 计算机中的网络适配器(俗称网卡)和其相应的软件驱动程序就实现了这些协议。一般的网络适配 器都包含了物理层和数据链路层这两层的功能

    2. 数据链路层的三个问题

    2.1. 封装成帧

  • 帧(Frame)的数据部分,就是网络层传递下来的数据包(IP数据包,Packet)

image.png

  • 最⼤传输单元MTU(Maximum Transfer Unit)
    • 每一种数据链路层协议都规定了所能传送的帧数据长度上限
    • 以太网的MTU为1500字节
  • 以太网V2的MAC帧

image.png

  • PPP帧

image.png

  • 封装成帧是指数据链路层给上层交付下来的协议数据单元PDU添加一个首部和一个尾部,使之成为帧。
    • 帧的首部和尾部中包含有一些重要的控制信息。
    • 帧首部和尾部的作用之一就是帧定界。
    • 并不是每一种数据链路层协议的帧都包含有帧定界标志。

image.png

2.2. 透明传输

  • 透明传输是指数据链路层对上层交付下来的协议数据单元PDU没有任何限制,就好像数据链路层不存在一样。
    • 面向字节的物理链路使用字节填充的方法实现透明传输。

image.png

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

image.png

2.3. 差错检测

image.png

  • FCS是根据数据部分 + 首部计算得出的

2.4. CRC循环冗余校验

  • 数据链路层广泛使用漏检率极低的循环冗余校验(Cyclic Redundancy Check,CRC)检错技术。
  • 基本思想:
    • 收发双方约定好一个生成多项式G(X)。
    • 发送方基于待发送的数据和生成多项式G(X),计算出差错检测码(冗余码),将冗余码添加到 待发送数据的后面一起传输。
    • 接收方收到数据和冗余码后,通过生成多项式G(X)来计算收到的数据和冗余码是否产生了误 码。
  • 发送方CRC操作

image.png

  • 接收方CRC操作

image.png
image.png

3. Ethernet V2标准

  • 以太网帧的格式有
    • Ethernet V2标准 (使用最多)
    • IEEE的802.3标准
  • 为了能够检测正在发送的帧是否产生了冲突,以太网的帧至少要64字节
  • 用交换机组建的网络,已经支持全双工通信,不需要再使用CSMA/CD协议,它传输的帧依然是以太网帧

3.1. Ethernet V2帧格式

image.png

  • 格式说明

    • 首部:目标MAC + 源MAC + 网络类型
    • 以太网帧:首部 + 数据 + FCS
    • 数据的长度至少是:64 - 6 - 6 - 2 - 4 = 46字节

      3.2. Ethernet V2帧长度标准

  • 当数据部分的长度小于46字节时

    • 数据链路层会在数据的后面加⼊一些字节填充
    • 接收端会将添加的字节去掉
  • 长度总结
    • 以太网帧的数据长度:46 ~ 1500字节
    • 以太网帧的长度:64 ~ 1518字节

3.3. 以太网MAC帧协议

  • 接收方可能收到的无效MAC帧包括以下几种:
    • MAC帧的长度不是整数个字节
    • 通过MAC帧的FCS字段的值检测出帧有误码
    • MAC帧的长度不在64 ~ 1518字节之间
  • 接收方收到无效的MAC帧时,就简单将其丢弃,以太网的数据链路层没有重传机制。

4. PPP协议

image.png

  • 标志(Flag)字段:PPP帧的定界符,取值为0x7E。
  • 地址(Address)字段:取值为0xFF,预留(目前没有什么作用)。
  • 控制(Control)字段:取值为0x03,预留(目前没有什么作用)。
  • 协议(Protocol)字段:其值用来指明帧的数据载荷应向上交付给哪个协议处理。

image.png