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)
相关推荐
云安全干货局2 小时前
游戏服务器遭DDoS瘫痪?高防IP部署全流程+效果复盘
网络·人工智能·高防ip
一颗青果2 小时前
TCP全连接队列与抓包
网络·tcp/ip·github
上海云盾-高防顾问2 小时前
CC攻击的分类与演进:从代理攻击到僵尸网络的技术剖析
网络·安全
首席拯救HMI官3 小时前
【拯救HMI】HMI容错设计:如何减少操作失误并快速纠错?
大数据·运维·前端·javascript·网络·学习
zbtlink3 小时前
一楼到四楼,如何实现Wi-Fi信号全覆盖?不同方案详解
网络·智能路由器
Ro Jace3 小时前
传统雷达信号分选方法之SDIF:Improved algorithm for the deinterleaving of radar pulses
网络·人工智能·算法
qq_448011163 小时前
Mac手动删除应用
macos
8K超高清3 小时前
CES 2026科技看点
网络·人工智能·科技·数码相机·计算机视觉
zbtlink3 小时前
怎么知道自己家里适合什么样的路由器?
网络·智能路由器