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)
相关推荐
木子n116 小时前
车载以太网与SOME/IP服务化通信实战-01.从字节到服务:SOME/IP报文解析与四通道开销账
网络·网络协议·tcp/ip·车载以太网·some/ip
Escalating_xu17 小时前
【C 语言】数据在内存中的存储:补码、大小端、整型陷阱与 IEEE 754 全解析
java·c语言·网络
爱跳舞的烤冷面18 小时前
Linux篇——网络编程
网络
Knight_AL19 小时前
基于 Netty 实现的 WebSocket 服务端
网络·websocket·网络协议
wuyk55520 小时前
《WiFi 嵌入式物联网开发全套实战》| 第 31 章 休眠唤醒 WiFi 断连、时间同步、网络恢复机制
网络·物联网·php
沫璃染墨21 小时前
从零入门计算机网络系列(一):计算机网络初识——从网络发展史到TCP/IP协议》
linux·网络·网络协议·tcp/ip·计算机网络
王大傻092821 小时前
堆叠注入(Stacked Queries Injection)详解:原理、利用与防御
服务器·网络·数据库·web安全·网络安全
艾芯微科技21 小时前
钰泰 ETA5055V330DD1E|SOT-223 3.3V LDO,低压差、大电流线性稳压选型分享
网络·单片机·嵌入式硬件·集成测试·51单片机
bigcarp21 小时前
安卓模拟器MUMU+tcpdump抓包Socket协议流量
服务器·网络·tcpdump
懂点Tech1 天前
ctfshow MISC入门图片篇(信息附加):misc11解题思路
网络