图说以太网协议:数据链路层中的MAC子层和LLC子层
数据链路层
根据 IEEE 802.3 标准,数据链路层可分为 MAC 层与 LLC 层:

MAC 与 LLC 子层的功能划分及协议栈架构
- LLC逻辑链路控制子层(Logical Link Control):位于数据链路层的上层,负责数据帧的同步、流量控制和错误检测等功能,向上层提供统一的数据链路服务接口
- MAC媒体访问控制子层(Media Access Control):位于数据链路层的下层,负责解决多设备共享单个信道的媒体访问问题,实现 CSMA/CD、CSMA/CA 等媒体访问机制同时提供数据帧的寻址和差错校验功能
在实际网络设备中,PC 端网卡负责实现 MAC 层和物理层的功能,操作系统的协议栈则实现了 LLC 层及更高层协议,在嵌入式设备中,MAC 层和物理层也可能集成在单个芯片中。
1. MAC 媒体访问控制子层
MAC 子层是数据链路层的一个组成部分,主要负责在网络节点间传输数据帧,并处理物理层传输过来的原始比特流。它提供了数据帧的封装/解封装、错误检测、流量控制以及物理地址寻址等功能,确保了数据链路层的稳定运行和高效数据传输。
MAC 数据包(也称为 MAC 帧)是数据链路层用于传输数据的基本单位。典型的 MAC 帧由以下几个部分组成:

- 前导码(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)和数据包类型之间。

QTag 前缀字段包括以下部分:
-
Tag Protocol Identifier (TPID) - 2 字节:为固定值:
0x8100,用于标识该帧包含一个 QTag 前缀。 -
Tag Control Information (TCI) - 2 字节:
包括以下内容:- 用户优先级(Priority) - 3 位:定义帧的优先级。
- 标准格式指示符(CFI,Canonical Format Indicator) - 1 位:通常设置为 0(用于以太网)。
- VLAN 标识符(VLAN ID) - 12 位:标识帧所属的 VLAN。
QTag 前缀字段包括以下部分:
-
Tag Protocol Identifier (TPID) - 2 字节:为固定值:
0x8100,用于标识该帧包含一个 QTag 前缀。 -
Tag Control Information (TCI) - 2 字节:
包括以下内容:- 用户优先级(Priority) - 3 位:定义帧的优先级。
- 标准格式指示符(CFI,Canonical Format Indicator) - 1 位:通常设置为 0(用于以太网)。
- VLAN 标识符(VLAN ID) - 12 位:标识帧所属的 VLAN。
2. LLC 逻辑链路控制子层
LLC 子层位于数据链路层的上层,提供统一的数据链路服务接口,它屏蔽了下层 MAC 子层的差异,向上层协议提供标准化的服务。其主要作用包括提供数据帧的封装/解封装、流量控制、错误恢复和链路管理等功能,确保链路的高效、稳定运行,支持上层协议(如 IP 层)的数据传输。
LLC 帧位于 MAC 帧的头部部分,并包含以下字段:

LLC 帧结构解析:逻辑链路控制子层的协议数据单元(PDU)格式与字段功能
- DSAP (Destination Service Access Point):目标服务访问点地址,用于指示数据包的目标协议
- SSAP (Source Service Access Point):源服务访问点地址,用于指示数据包的来源协议
- Control Field:控制字段,定义了数据包的类型和控制信息。例如,LLC 层支持的数据包类型包括信息(I 帧)、确认(S 帧)和无序(U 帧)等
- information 信息字段:承载实际的数据负载

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