图说以太网协议:数据链路层中的MAC子层和LLC子层

数据链路层

根据 IEEE 802.3 标准,数据链路层可分为 MAC 层与 LLC 层:

1.png
MAC 与 LLC 子层的功能划分及协议栈架构

  • LLC逻辑链路控制​​子层(Logical Link Control​​)​:位于数据链路层的上层,负责数据帧的同步、流量控制和错误检测等功能,向上层提供统一的数据链路服务接口
  • ​MAC​媒体访问控制子层(​​Media Access Control)​:位于数据链路层的下层,负责解决多设备共享单个信道的媒体访问问题,实现 CSMA/CD、CSMA/CA 等媒体访问机制同时提供数据帧的寻址和差错校验功能

在实际网络设备中,PC 端网卡负责实现 MAC 层和物理层的功能,操作系统的协议栈则实现了 LLC 层及更高层协议,在嵌入式设备中,MAC 层和物理层也可能集成在单个芯片中。

1. MAC 媒体访问控制子层

MAC 子层是数据链路层的一个组成部分,主要负责在网络节点间传输数据帧,并处理物理层传输过来的原始比特流。它提供了数据帧的封装/解封装、错误检测、流量控制以及物理地址寻址等功能,确保了数据链路层的稳定运行和高效数据传输。

MAC 数据包(也称为 MAC 帧)是数据链路层用于传输数据的基本单位。典型的 MAC 帧由以下几个部分组成:

2.PNG

  • 前导码(Preamble​​​:用于帧的同步
  • ​帧开始​定界符(​SFD​,​​Start Frame Delimiter)​:指示帧开始的位置
  • 目标地址(Destination ​MAC​​​ Address)​:接收数据帧的设备的 MAC 地址
  • ​源地址​(Source​ ​​​MAC​ Address)​:发送数据帧的设备的 MAC 地址
  • 长度/类型字段(Length/Type Field)​:指示数据字段的长度或表示上层协议类型
  • 数据和填充(Data and Padding)​:数据字段包含实际传输的数据,填充字段确保帧的最小长度
  • 帧校验序列(FCS,Frame Check Sequence)​:用于错误检测

假设我们有一个简单的 MAC 帧,其各字段内容如下:

  • 前导码:10101010 重复 7 次
  • SFD:10101011
  • 目标地址:00:14:22:01:23:45
  • 源地址:00:16:36:29:48:01
  • 类型字段:0x0800(表示 IPv4)
  • 数据:实际数据内容
  • 填充:如果需要填充,则添加 0 字节
  • FCS:计算得到的 CRC 值

此 MAC 帧的结构将如下所示:

+-----------+---------+-----------------+---------------+------------+---------------------+-----+
| 10101010  | 10101011| 00:14:22:01:23:45| 00:16:36:29:48:01| 0x0800   | 实际数据            | CRC |
| 10101010  |         |                 |               |           | (以及填充,如果需要)|     |
| ... (7 times)       |                 |               |           |                     |     |
+-----------+---------+-----------------+---------------+------------+---------------------+-----+

除去标准 MAC 数据包外,还有用于支持虚拟局域网(VLAN)的扩展 MAC 数据包(也称为带 VLAN 标签的 MAC 数据包或 IEEE 802.1Q 帧),它是在标准的 MAC 数据包的基础上添加了一个 4 字节的 QTag 前缀字段,QTag 字段位于源 MAC 地址(SA)和数据包类型之间。

3.png
QTag 前缀字段包括以下部分:

  1. Tag Protocol Identifier (TPID) - 2 字节​:为固定值:0x8100,用于标识该帧包含一个 QTag 前缀。

  2. Tag​ Control Information (TCI) - 2 字节​:
    包括以下内容:

    1. 用户优先级(Priority) - 3 位:定义帧的优先级。
    2. 标准格式指示符(CFI,Canonical Format Indicator) - 1 位:通常设置为 0(用于以太网)。
    3. VLAN 标识符(VLAN ID) - 12 位:标识帧所属的 VLAN。

QTag 前缀字段包括以下部分:

  1. Tag Protocol Identifier (TPID) - 2 字节​:为固定值:0x8100,用于标识该帧包含一个 QTag 前缀。

  2. Tag​ Control Information (TCI) - 2 字节​:
    包括以下内容:

    1. 用户优先级(Priority) - 3 位:定义帧的优先级。
    2. 标准格式指示符(CFI,Canonical Format Indicator) - 1 位:通常设置为 0(用于以太网)。
    3. VLAN 标识符(VLAN ID) - 12 位:标识帧所属的 VLAN。

2. LLC 逻辑链路控制子层

LLC 子层位于数据链路层的上层,提供统一的数据链路服务接口,它屏蔽了下层 MAC 子层的差异,向上层协议提供标准化的服务。其主要作用包括提供数据帧的封装/解封装、流量控制、错误恢复和链路管理等功能,确保链路的高效、稳定运行,支持上层协议(如 IP 层)的数据传输。

LLC 帧位于 MAC 帧的头部部分,并包含以下字段:

4.png
LLC 帧结构解析:逻辑链路控制子层的协议数据单元(PDU)格式与字段功能

  • DSAP (Destination ​Service Access Point​​)​:目标服务访问点地址,用于指示数据包的目标协议
  • SSAP (Source​​​ ​Service Access Point​​)​:源服务访问点地址,用于指示数据包的来源协议
  • Control Field​:控制字段,定义了数据包的类型和控制信息。例如,LLC 层支持的数据包类型包括信息(I 帧)、确认(S 帧)和无序(U 帧)等
  • information 信息字段​:承载实际的数据负载
posted @ 2026-09-02 11:54  FreakStudio  阅读(12)  评论(0)    收藏  举报