MAC 发出的一个帧(MAC Frame)及其完整的帧格式

内容以 IEEE 802.3 以太网 MAC 帧 为例:

MAC 帧是什么?

MAC 帧(MAC Frame)是 数据链路层(Layer 2) 的基本传输单元,由 MAC 子层负责收发。

无论是交换机、车载以太网、最后实际发出的都是标准 MAC 帧。

MAC 帧负责:

  • 标识源/目的 MAC 地址
  • 识别协议类型(IP、ARP、TSN、AVB 等)
  • 提供最基本的差错校验(FCS)
  • 进行负载封装

MAC 帧格式(802.3 Ethernet II)

复制代码
+------------+----------------+----------------+------------+-----------+
| 前导码     | SFD 起始帧定界符 | MAC 目的地址    | MAC 源地址  | EtherType |
| 7 字节     | 1 字节          | 6 字节          | 6 字节      | 2 字节    |
+------------+----------------+----------------+------------+-----------+
|                          Payload 数据(46 ~ 1500 字节)                |
+---------------------------------------------------------------------------+
|                                  FCS 校验(4 字节)                      |
+---------------------------------------------------------------------------+

下面逐字段解释。


1)Preamble 前导码(7 字节)

复制代码
10101010 10101010 ... (重复 7 次)

作用:

  • 时钟同步(MAC 收发器之间的时钟恢复)
  • 让接收端知道帧即将开始

2)SFD --- Start Frame Delimiter(1 字节)

复制代码
10101011

这是标志"真正的 MAC 帧从下一字节开始"。

MAC 不会把 Preamble 和 SFD 上交给上层,但会在物理层自动加上。


3)Destination MAC Address(6 字节)

可以是:

  • 单播 MAC(如:00:1A:2B:3C:4D:5E)
  • 组播(01-00-5E-xx-xx-xx)
  • 广播(FF:FF:FF:FF:FF:FF)

硬件先根据目的 MAC 决定该帧的流向。


4)Source MAC Address(6 字节)

发送方的 MAC 地址,由 MAC 控制器自动填充。


5)EtherType / Length(2 字节)

802.3 Ethernet II(常用)

表示协议类型,例如:

EtherType 协议
0x0800 IPv4
0x86DD IPv6
0x0806 ARP
0x8100 VLAN Tag(表示下一个字段是 VLAN)
0x88F7 TSN / AVB(一些场景)

(可选)802.1Q VLAN Tag(4 字节)

有 VLAN 的帧结构会变成:

复制代码
Dest MAC | Src MAC | 0x8100 | Tag | EtherType | Payload | FCS

VLAN Tag 内容:

  • PCP(优先级,TSN 用到)
  • DEI
  • VLAN ID(12 bit)

S32G/S32Z 的 TSN 交换机、ENETC 都会处理 VLAN/PCP。


6)Payload 数据区(46~1500 字节)

最小长度必须是 46 字节 ,若不足,MAC 会自动填充(Padding)。

常见封装的协议:

  • IPv4/IPv6
  • TCP/UDP
  • TSN/AVB 负载
  • SOME/IP
  • PTP(1588)
  • ARP

最大 MTU = 1500 Bytes(不含头部和 FCS)。

如果启用了 Jumbo Frame,例如 9000 bytes,需要双方 MAC 都支持。


7)FCS --- Frame Check Sequence(4 字节)

CRC-32 校验,用于保证数据完整性。

MAC 硬件自动计算并在接收时验证。

RTD 的驱动不需要软件处理 CRC,否则会导致帧错误。


🔄 MAC 帧的最小 / 最大长度

最小帧长 = 64 字节

包含:

  • Dest(6) + Src(6) + EtherType(2) + Payload(46) + FCS(4)

如果 Payload < 46,MAC 自动补齐 Padding。

最大帧长 = 1518 字节(无 VLAN)

复制代码
6 + 6 + 2 + 1500 + 4 = 1518

最大帧长(带 VLAN) = 1522 字节


📡 MAC 在发送帧时的具体过程(硬件视角)

以 S32G/S32Z ENET/ENETC 为例:

  1. CPU 或 DMA 将帧填入 TX Buffer
  2. 填写 Buffer Descriptor(BD 或 QBMan FD)
  3. 提交到 MAC / ENETC 发送队列
  4. MAC 自动添加:
    • Preamble
    • SFD
    • CRC(FCS)
  5. 将完整帧发送到 PHY
  6. PHY 发送到链路(MII/RGMII/SGMII)

注意:驱动提交的帧不包含 Preamble/SFD/FCS


📘 举个完整的 MAC 帧例子(十六进制)

复制代码
FF FF FF FF FF FF   ← Destination MAC (广播)
00 1A 2B 3C 4D 5E   ← Source MAC
08 00               ← EtherType (IPv4)

45 00 00 54 ...     ← Payload 数据 (IP+UDP+Data)

DE AD BE EF         ← FCS (CRC32)
相关推荐
液态不合群16 小时前
卡死在生产流程?AI破解制造业数字化落地顽疾
网络·人工智能·低代码·重构
技术不好的崎鸣同学17 小时前
Windows 命令提示符(CMD)恶意脚本分析篇
网络·windows·安全·系统安全
m0_7156744317 小时前
2026年医疗行业数据库风险监测产品综合能力排名分析
网络·数据库
阿米亚波19 小时前
【EVE-NG 实战】防火墙基础(VLAN · VRRP · NAT · ACL · 静态路由)
运维·网络·笔记·网络协议·计算机网络·网络安全·运维开发
零意@19 小时前
海光平台debian11的系统,打开pstore功能和验证功能
网络
blueman888819 小时前
qt5-serialbus详细解析
开发语言·网络·qt
greasyfork19 小时前
多种数据库管理混乱?Navicat Premium 17 for Mac 统一解决
数据库·mysql·macos·mac
学究天人20 小时前
数学公理体系大全:Comprehensive Collection of Mathematical Axiom Systems(卷6)
网络·算法·数学建模·动态规划·几何学·图论·拓扑学
tiantianuser20 小时前
NVME-oF IP 设计2 :设计之前的调研!
网络·网络协议·rdma·roce v2·nvme of
星恒讯工业路由器20 小时前
工业无线通信选型常见问题解答
网络·信息与通信·无线ap·设备选型·工业无线通信·防爆无线设备·4g/5g路由器