以太网基础知识:从帧格式、MAC地址到交换机转发


1 前言

        以太网(Ethernet)是现代局域网、数据中心网络、嵌入式网络和工业网络中最基础、最常见的二层通信技术。无论是普通 PC 通过网线接入路由器,服务器通过 ToR Switch 接入数据中心网络,还是 FPGA/SoC 通过 MAC + PHY 接口实现网络通信,底层都离不开以太网。

        对初学者来说,以太网容易被 TCP/IP、路由器、交换机、网卡、MAC 地址、IP 地址、ARP、VLAN 等概念混在一起。实际上,可以先建立一个清晰的学习主线:

网络分层
  -> 以太网帧格式
  -> MAC 地址
  -> ARP
  -> 交换机转发
  -> VLAN
  -> STP / LACP / QoS
  -> Wireshark 抓包
  -> MAC / PHY 硬件结构
  -> Switch 芯片架构

        本文按照这个顺序系统介绍以太网基础知识。目标不是一次性覆盖所有 IEEE 802.3 的细节,而是帮助读者建立一套可继续深入学习网络协议、交换机系统、网卡驱动、FPGA Ethernet MAC 或 Switch ASIC 的基础框架。

以太网学习路线图


2 以太网是什么

        以太网是一组用于局域网通信的技术标准,主要由 IEEE 802.3 系列标准定义。它规定了设备如何在物理介质上传输 bit,也规定了二层数据帧的基本格式和访问方式。

        在实际网络中,我们常见的“插网线即可上网”背后通常包含如下组件:

组件 作用
网卡 NIC 主机侧网络接口,负责收发以太网帧
MAC Media Access Control,负责二层帧收发、FCS、地址过滤等
PHY 物理层收发器,负责电信号/光信号的编码、恢复和传输
网线/光纤 物理传输介质
交换机 Switch 根据 MAC 地址转发以太网帧
路由器 Router 根据 IP 地址完成三层转发
协议栈 操作系统中的 TCP/IP 网络协议实现

        以太网经过多年发展,速率从早期的 10 Mb/s 提升到今天数据中心常见的 100G、200G、400G,甚至 800G 级别。

名称 常见速率 说明
Ethernet 10 Mb/s 早期以太网
Fast Ethernet 100 Mb/s 百兆以太网
Gigabit Ethernet 1 Gb/s 千兆以太网
10 Gigabit Ethernet 10 Gb/s 万兆以太网
25G / 40G / 50G 25 ~ 50 Gb/s 服务器和数据中心常用
100G / 200G / 400G 100 ~ 400 Gb/s 数据中心交换机常用
800G Ethernet 800 Gb/s 高端数据中心和 AI 集群网络方向

3 网络分层视角下的以太网

        学习以太网时,首先要把它放到网络分层模型中理解。常见的模型有 OSI 七层模型和 TCP/IP 四层模型。

OSI 层级 名称 典型协议或技术
L7 应用层 HTTP、DNS、SSH
L6 表示层 编码、加密、压缩
L5 会话层 会话管理
L4 传输层 TCP、UDP
L3 网络层 IPv4、IPv6、ICMP
L2 数据链路层 Ethernet、VLAN、ARP 相关二层封装
L1 物理层 双绞线、光纤、SerDes、PHY

        以太网主要覆盖 物理层 L1数据链路层 L2。其中:

OSI模型与以太网位置

        以一次浏览网页为例,数据在发送时会被逐层封装:

HTTP 数据
  -> TCP Segment
  -> IP Packet
  -> Ethernet Frame
  -> 物理信号

        接收端则反向解封装:

物理信号
  -> Ethernet Frame
  -> IP Packet
  -> TCP Segment
  -> HTTP 数据

4 以太网物理层基础

        物理层决定数据如何在真实介质上传输。常见以太网介质包括双绞线、光纤和高速板级 SerDes 链路。

4.1 常见传输介质

介质 常见场景 特点
双绞线 家庭、办公、普通服务器 成本低、部署方便
光纤 数据中心、长距离传输 距离长、带宽高、抗干扰强
PCB 高速差分线 芯片到光模块、芯片间连接 距离短、速率高、信号完整性要求高
背板 Backplane 机框设备、交换设备 多板卡互连

4.2 网线类型

类型 常见用途
Cat5e 千兆以太网
Cat6 千兆/部分万兆短距离
Cat6A 10GBASE-T
Cat7 / Cat8 更高速率和更好屏蔽场景

        家用或办公网络中常见的是 RJ45 接口和双绞线,而数据中心高端交换机更多使用光模块和高速 SerDes。

4.3 PHY 的作用

        PHY 是 Physical Layer Transceiver 的简称,负责把 MAC 侧的数字信号转换为适合物理介质传输的信号,也负责从物理介质中恢复数据。

主机/芯片内部
  MAC
   |
   | GMII / RGMII / SGMII / XGMII
   |
  PHY
   |
   | 电信号 / 光信号
   |
  网线 / 光纤

MAC与PHY关系

4.4 全双工、半双工和自协商

        早期以太网中,多个设备共享同一介质,可能发生冲突,因此有 CSMA/CD 和半双工概念。现代交换式以太网基本都工作在全双工模式,收发可以同时进行,不再需要传统意义上的碰撞检测。

概念 含义
半双工 同一时间只能发送或接收
全双工 发送和接收可以同时进行
Auto-Negotiation 双方自动协商速率、双工模式、流控能力
MDI/MDI-X 与网线收发线序相关,现代设备通常支持自动翻转

5 MAC 地址基础

        MAC 地址是以太网二层寻址的核心。每个网络接口通常都有一个 48 bit 的 MAC 地址,例如:

00:1A:2B:3C:4D:5E

        这个地址可以分成两部分:

前 24 bit:OUI,厂商标识
后 24 bit:厂商自行分配

5.1 单播、组播和广播

类型 目的 MAC 示例 含义
单播 Unicast 00:1A:2B:3C:4D:5E 发给一个具体设备
组播 Multicast 01:00:5E:xx:xx:xx 发给一组设备
广播 Broadcast FF:FF:FF:FF:FF:FF 发给同一二层网络内所有设备

        交换机转发以太网帧时,主要依据目的 MAC 地址和 VLAN 信息进行查表。

5.2 MAC 地址和 IP 地址的区别

项目 MAC 地址 IP 地址
所属层级 数据链路层 L2 网络层 L3
长度 通常 48 bit IPv4 为 32 bit,IPv6 为 128 bit
作用范围 同一二层链路或广播域内 跨网络寻址
分配方式 通常固化在网卡,也可软件修改 DHCP、静态配置、SLAAC 等
转发设备 交换机 路由器或三层交换机

        一个常见误区是:既然有 IP 地址,为什么还需要 MAC 地址?原因是 IP 负责跨网络的逻辑寻址,而在每一跳实际链路上传输时,仍然需要二层 MAC 地址完成本地交付。


6 以太网帧格式

        以太网帧是二层传输的基本单位。最常见的是 Ethernet II 帧格式。

+----------+-----+-----------------+-----------------+-----------+---------+-----+
| Preamble | SFD | Destination MAC | Source MAC      | EtherType | Payload | FCS |
| 7 Bytes  | 1 B | 6 Bytes         | 6 Bytes         | 2 Bytes   | 46~1500 | 4 B |
+----------+-----+-----------------+-----------------+-----------+---------+-----+

Ethernet II帧格式

6.1 字段说明

字段 长度 作用
Preamble 7 Bytes 用于接收端时钟同步
SFD 1 Byte Start Frame Delimiter,表示帧正式开始
Destination MAC 6 Bytes 目的 MAC 地址
Source MAC 6 Bytes 源 MAC 地址
EtherType 2 Bytes 指示 Payload 中承载的上层协议
Payload 46 ~ 1500 Bytes 实际数据
FCS 4 Bytes Frame Check Sequence,通常为 CRC32

6.2 常见 EtherType

EtherType 协议
0x0800 IPv4
0x0806 ARP
0x86DD IPv6
0x8100 802.1Q VLAN
0x88CC LLDP
0x8808 MAC Control,例如 Pause Frame

6.3 最小帧长和最大帧长

        标准以太网帧从 Destination MAC 到 FCS 的长度最小为 64 Bytes,最大通常为 1518 Bytes。如果带 VLAN Tag,则常见最大长度为 1522 Bytes。

类型 长度
最小标准帧 64 Bytes
最大标准 Ethernet II 帧 1518 Bytes
带 VLAN Tag 的帧 1522 Bytes
Jumbo Frame 常见约 9000 Bytes,具体取决于设备配置

        如果 Payload 太短,需要通过 Padding 填充到最小帧长。FCS 用于检测传输过程中是否发生 bit 错误。


7 ARP:IP 地址如何找到 MAC 地址

        在 IPv4 网络中,主机通常知道目标 IP 地址,但真正发送以太网帧时必须知道下一跳的 MAC 地址。ARP(Address Resolution Protocol)就是用来完成 IPv4 地址到 MAC 地址映射的协议。

7.1 ARP 的基本过程

        假设主机 A 要访问同一局域网中的主机 B:

主机 A IP: 192.168.1.10
主机 A MAC: AA:AA:AA:AA:AA:AA

主机 B IP: 192.168.1.20
主机 B MAC: BB:BB:BB:BB:BB:BB

        如果主机 A 不知道主机 B 的 MAC 地址,会先发送 ARP Request:

Who has 192.168.1.20? Tell 192.168.1.10

        这个 ARP Request 的目的 MAC 是广播地址:

FF:FF:FF:FF:FF:FF

        主机 B 收到后回复 ARP Reply:

192.168.1.20 is at BB:BB:BB:BB:BB:BB

        主机 A 收到后会把映射关系记录到 ARP 表中。

ARP请求与响应流程

7.2 ARP 表

        操作系统会维护 ARP 缓存表,例如:

IP 地址 MAC 地址 接口
192.168.1.1 11:22:33:44:55:66 eth0
192.168.1.20 BB:BB:BB:BB:BB:BB eth0

        ARP 表项通常有老化时间,长时间不用会被删除。

7.3 Gratuitous ARP

        Gratuitous ARP 是一种特殊 ARP,用于主动宣告自己的 IP 和 MAC 映射关系。常见用途包括:


8 交换机如何转发以太网帧

        交换机是二层网络的核心设备。它根据 MAC 地址表决定以太网帧应该从哪个端口发出。

8.1 Hub、Switch 和 Router 的区别

设备 工作层级 转发依据 特点
Hub L1 不理解帧内容 收到信号后向所有端口重复
Switch L2 MAC 地址/VLAN 根据 MAC 表进行二层转发
Router L3 IP 地址/路由表 连接不同 IP 网络

8.2 MAC 地址学习

        交换机收到一个以太网帧时,会先查看源 MAC 地址,并记录:

源 MAC 地址 -> 入端口

        例如交换机从 Port 1 收到源 MAC 为 AA:AA:AA:AA:AA:AA 的帧,就会学习:

AA:AA:AA:AA:AA:AA -> Port 1

8.3 转发、泛洪和过滤

        学习完源 MAC 后,交换机会查找目的 MAC:

情况 行为
目的 MAC 在表中,且出口端口不同于入口端口 Forwarding,转发到对应端口
目的 MAC 在表中,但出口端口等于入口端口 Filtering,过滤,不转发
目的 MAC 不在表中 Flooding,向除入口外的同 VLAN 端口泛洪
目的 MAC 是广播地址 向同 VLAN 广播域内泛洪
目的 MAC 是组播地址 根据组播表或策略转发/泛洪

交换机MAC学习与转发

8.4 MAC 表老化

        MAC 地址表不是永久不变的。交换机会对表项设置 Aging Timer。如果一段时间内没有再看到某个源 MAC,表项会被删除。这样可以适应设备移动、网线切换、拓扑变化等情况。


9 VLAN:把一个二层网络切成多个逻辑网络

        VLAN(Virtual LAN)用于在同一物理交换网络中划分多个逻辑二层网络。不同 VLAN 默认彼此隔离,不能直接二层互通。

9.1 为什么需要 VLAN

        如果一个交换机上的所有端口都在同一个广播域中,会带来一些问题:

        VLAN 可以把一个物理交换机划分成多个逻辑交换机。

VLAN 10:研发网络
VLAN 20:办公网络
VLAN 30:访客网络

9.2 Access Port 和 Trunk Port

端口类型 作用
Access Port 通常连接终端设备,只属于一个 VLAN
Trunk Port 通常连接交换机或路由器,可承载多个 VLAN

        Access Port 收发的帧通常不带 VLAN Tag;Trunk Port 上传输多个 VLAN 的流量,需要通过 802.1Q Tag 标识 VLAN。

9.3 802.1Q VLAN Tag

        802.1Q 会在 Source MAC 和 EtherType 之间插入 4 Bytes VLAN Tag:

Destination MAC
Source MAC
802.1Q Tag
EtherType
Payload
FCS

        VLAN Tag 内部包含:

字段 位宽 含义
TPID 16 bit 通常为 0x8100
PCP 3 bit 优先级
DEI 1 bit Drop Eligible Indicator
VID 12 bit VLAN ID,范围 0 ~ 4095

802.1Q VLAN Tag格式

9.4 VLAN 间通信

        不同 VLAN 是不同广播域,默认不能直接通信。如果 VLAN 10 的主机要访问 VLAN 20 的主机,需要经过三层设备,例如路由器或三层交换机。

VLAN 10 主机
  -> 默认网关
  -> 三层转发
  -> VLAN 20 主机

10 STP:防止二层环路

        二层交换网络中,如果存在物理环路,广播帧和未知单播帧可能在网络中无限循环,形成广播风暴。由于以太网帧本身没有类似 IP TTL 的字段,二层环路会非常危险。

10.1 二层环路的危害

10.2 STP 的作用

        STP(Spanning Tree Protocol)通过阻塞部分冗余链路,把有环拓扑裁剪成无环树形拓扑。当主链路故障时,再重新计算拓扑,启用备份链路。

STP阻塞冗余链路

10.3 STP 基本角色

概念 含义
Root Bridge 生成树根桥
Root Port 非根交换机到 Root Bridge 的最佳端口
Designated Port 一个网段上负责转发的端口
Blocking Port 被阻塞的冗余端口
BPDU 交换机之间用于计算生成树的控制报文

        RSTP(Rapid Spanning Tree Protocol)是 STP 的快速版本,收敛速度更快。


11 链路聚合 LACP

        链路聚合用于把多条物理链路组合成一条逻辑链路,实现带宽扩展和链路冗余。

Switch A ====== Switch B
         Link1
         Link2
         Link3
         Link4

        IEEE 802.1AX 定义了链路聚合相关标准,LACP(Link Aggregation Control Protocol)用于动态协商聚合链路。

11.1 链路聚合的作用

作用 说明
增加总带宽 多条链路共同承载流量
提高可靠性 单条链路故障后,其余链路继续工作
简化拓扑 多条物理链路表现为一条逻辑链路
避免 STP 阻塞多条并行链路 聚合后作为一个逻辑端口参与二层拓扑

11.2 负载均衡方式

        链路聚合通常不是把一个 packet 拆到多条链路上,而是基于流进行 Hash,保证同一条流尽量走同一条物理链路,避免乱序。

常见 Hash 字段包括:


12 以太网流控和 QoS

        当接收端处理不过来时,如果发送端继续发送,可能导致 buffer 溢出和丢包。以太网中有多种流控和 QoS 机制用于缓解拥塞。

12.1 Pause Frame

        IEEE 802.3x 定义了 MAC Control Pause Frame。接收端可以发送 Pause Frame,请求对端暂停发送一段时间。

Receiver buffer almost full
  -> Send Pause Frame
  -> Sender pauses transmission
  -> Receiver drains buffer
  -> Sender resumes

12.2 PFC

        PFC(Priority-based Flow Control)可以按优先级暂停流量,而不是暂停整个链路。它常用于数据中心无损网络场景,例如 RoCE。

12.3 QoS

        QoS(Quality of Service)用于决定拥塞时不同流量的处理优先级。

机制 作用
PCP VLAN Tag 中的 3 bit 优先级字段
Queue 不同优先级或业务进入不同队列
Scheduler 决定哪个队列先发送
Shaper 限制输出速率
Policer 检测并处理超速流量
WRED 拥塞前随机丢弃部分流量

QoS队列与调度


13 常见以太网相关协议

        以太网本身是二层技术,但在实际网络中会与大量协议配合使用。

协议 层级 作用
ARP L2/L3 之间 IPv4 地址解析到 MAC 地址
IPv4 L3 网络层寻址和转发
IPv6 L3 下一代网络层协议
ICMP L3 Ping、错误报告等
TCP L4 可靠传输
UDP L4 无连接传输
DHCP 应用层/基于 UDP 自动分配 IP 地址
DNS 应用层 域名解析
LLDP L2 邻居发现
STP/RSTP L2 防止二层环路
LACP L2 链路聚合
PTP L2/L3 可承载 精密时间同步

        当我们用 Wireshark 抓包时,会看到这些协议层层封装在以太网帧中。


14 从硬件角度理解以太网

        如果从芯片或 FPGA 的角度看,以太网系统可以拆成 MAC、PHY、PCS、PMA、SerDes 等模块。

14.1 MAC 与 PHY

模块 主要职责
MAC TX 发送以太网帧、插入 Preamble/SFD、计算 FCS、控制 IFG
MAC RX 接收帧、检查 FCS、过滤错误帧、提取 Payload
PHY 编码/解码、均衡、时钟恢复、物理信号转换
PCS Physical Coding Sublayer,负责编码、对齐、FEC 等
PMA/PMD 更接近模拟和物理介质的子层
SerDes 高速串并转换

14.2 常见 MAC-PHY 接口

接口 常见场景
MII 10/100M
RMII 简化版 MII
GMII 1G
RGMII 1G,减少引脚数量
SGMII 串行千兆接口
XGMII 10G
XLGMII / CGMII 40G / 100G 等高速接口

14.3 Switch ASIC 的基本数据通路

        一个简化的交换芯片数据通路可以表示为:

RX SerDes
  -> PCS
  -> MAC RX
  -> Parser
  -> VLAN / L2 Lookup / ACL / QoS
  -> Packet Buffer
  -> Queue
  -> Scheduler
  -> Egress Modification
  -> MAC TX
  -> PCS
  -> TX SerDes

Switch ASIC数据通路


15 Wireshark 抓包实践

        学习以太网最有效的方法之一是抓包。Wireshark 可以直接显示以太网帧头、ARP、IP、TCP、UDP、VLAN Tag 等字段。

15.1 推荐抓包实验

实验 观察内容
查看本机 MAC 地址 理解网卡二层地址
抓取 ARP 理解广播请求和单播响应
Ping 网关 观察 ARP + ICMP
访问网页 观察 Ethernet + IP + TCP + HTTP/HTTPS
配置 VLAN 后抓包 观察 802.1Q Tag
制造未知单播 观察交换机 flooding 行为
观察 LLDP 理解交换机邻居发现

15.2 常用过滤表达式

过滤表达式 含义
eth.addr == xx:xx:xx:xx:xx:xx 匹配源或目的 MAC
eth.src == xx:xx:xx:xx:xx:xx 匹配源 MAC
eth.dst == ff:ff:ff:ff:ff:ff 匹配广播帧
eth.type == 0x0806 匹配 ARP
arp 只看 ARP
ip 只看 IPv4
ipv6 只看 IPv6
icmp 只看 ICMP
tcp 只看 TCP
udp 只看 UDP
vlan 只看带 VLAN Tag 的帧

Wireshark以太网帧解析


16 常见问题与排障思路

        以太网问题可以从物理层、链路层、网络层逐层排查。

16.1 物理层问题

问题 可能原因
链路不亮 网线故障、模块故障、端口关闭、速率不匹配
速率协商失败 自协商配置不一致、线缆质量不足
CRC Error 信号质量差、线缆问题、PHY 问题
Link Flap 接触不良、电源问题、信号裕量不足

16.2 二层问题

问题 可能原因
MAC 地址学习不到 VLAN 错误、端口未 up、报文未到达
广播风暴 二层环路、STP 未启用或配置错误
VLAN 不通 Access/Trunk 配置错误、VLAN 未创建
单向通信 MAC 表异常、ACL、端口安全策略
ARP 异常 IP 冲突、ARP 欺骗、网关错误

16.3 排障顺序

1. 看物理链路是否 up
2. 看速率和双工是否正确
3. 看端口是否有收发计数
4. 看是否有 CRC/FCS 错误
5. 看 VLAN 是否正确
6. 看 MAC 地址表是否学习到
7. 看 ARP 表是否正确
8. 看 IP 路由和默认网关
9. 用 Wireshark 抓包确认真实报文

17 建议学习路径

        如果是从零开始,可以按四个阶段学习。

17.1 第一阶段:理解基本概念

学习内容:

目标:

能够解释一台电脑 ping 另一台电脑时,以太网帧如何被发送出去。

17.2 第二阶段:掌握核心二层协议

学习内容:

目标:

能够理解交换机常见配置背后的协议原理。

17.3 第三阶段:结合工具实践

学习内容:

目标:

能够通过抓包定位常见网络问题。

17.4 第四阶段:深入硬件和芯片实现

学习内容:

目标:

能够从硬件角度理解一个以太网帧如何进入芯片、被解析、被缓存、被调度并从另一个端口发出。

以太网分阶段学习路径


18 总结

        以太网是现代网络系统的基础。它看似只是“插网线通信”,但背后包含物理层信号传输、MAC 地址寻址、帧格式、ARP 地址解析、交换机 MAC 学习、VLAN 隔离、STP 防环、LACP 聚合、QoS 调度以及 MAC/PHY 硬件实现等多个层次。

        对软件工程师来说,理解以太网有助于分析网络故障、抓包定位问题和理解 TCP/IP 协议栈。对硬件工程师来说,理解以太网是学习 Ethernet MAC、PHY 接口、FPGA 网络通信和 Switch ASIC 架构的基础。对网络工程师来说,以太网则是 VLAN、二层交换、数据中心网络和园区网络设计的起点。

        最推荐的学习方式是:

先理解帧格式和 MAC 地址
  -> 再通过 ARP 和 Ping 抓包建立直观认识
  -> 再学习交换机 MAC 学习和 VLAN
  -> 最后深入 STP、LACP、QoS 和硬件架构

        只要能把“一帧数据从主机 A 到主机 B 的全过程”讲清楚,以太网基础就已经建立起来了。


19 参考资料

  1. IEEE 802.3 Ethernet Working Group
    https://www.ieee802.org/3/

  2. IEEE 802.1 Working Group
    https://www.ieee802.org/1/

  3. IEEE 802.1Q - Bridges and Bridged Networks
    https://standards.ieee.org/standard/802_1Q-2022.html

  4. IEEE 802.1AX - Link Aggregation
    https://standards.ieee.org/standard/802_1AX-2020.html

  5. RFC 826 - An Ethernet Address Resolution Protocol
    https://www.rfc-editor.org/rfc/rfc826

  6. RFC 894 - A Standard for the Transmission of IP Datagrams over Ethernet Networks
    https://www.rfc-editor.org/rfc/rfc894

  7. RFC 791 - Internet Protocol
    https://www.rfc-editor.org/rfc/rfc791

  8. RFC 8200 - Internet Protocol, Version 6 Specification
    https://www.rfc-editor.org/rfc/rfc8200

  9. Wireshark User’s Guide
    https://www.wireshark.org/docs/wsug_html_chunked/

  10. Wireshark Display Filter Reference: Ethernet
    https://www.wireshark.org/docs/dfref/e/eth.html

  11. Cisco - Ethernet Technologies
    https://www.cisco.com/c/en/us/tech/lan-switching/ethernet/index.html

  12. Cisco - Understanding and Configuring VLANs
    https://www.cisco.com/c/en/us/support/docs/lan-switching/vlan/10023-3.html

  13. Juniper Networks - Understanding Ethernet Switching
    https://www.juniper.net/documentation/us/en/software/junos/multicast-l2/topics/topic-map/ethernet-switching-overview.html

  14. The TCP/IP Guide - Ethernet
    http://www.tcpipguide.com/free/t_Ethernet.htm

  15. Wikipedia - Ethernet
    https://en.wikipedia.org/wiki/Ethernet

  16. Wikipedia - Ethernet frame
    https://en.wikipedia.org/wiki/Ethernet_frame

  17. Wikipedia - Address Resolution Protocol
    https://en.wikipedia.org/wiki/Address_Resolution_Protocol

  18. Wikipedia - Virtual LAN
    https://en.wikipedia.org/wiki/VLAN

  19. Wikipedia - Spanning Tree Protocol
    https://en.wikipedia.org/wiki/Spanning_Tree_Protocol

  20. Wikipedia - Link Aggregation
    https://en.wikipedia.org/wiki/Link_aggregation

Back to Archive
WeChat QR Code

Scan to connect