4、以太网帧与MAC地址:帧结构、MAC地址解析、广播与单播、ARP协议基础

各位好,咱们今天聊聊网络世界里最基础、也最容易被忽略的东西——以太网帧和MAC地址。

说实话,我刚开始做运维那会儿,总觉得抓包就是看看IP、看看端口。直到有一次,一个诡异的丢包问题查了我整整两天,最后发现是MAC地址表刷错了。从那以后,我养成了一个习惯:遇到网络问题,先看二层,再看三层。你想想看,二层都走不通,三层再花哨也没用。

4.1 以太网帧长什么样?

以太网帧,说白了就是数据在网线上跑的时候穿的“衣服”。这件衣服有固定的款式,咱们来看看它的结构。

字段 长度(字节) 说明
前导码 7 用于同步时钟,实际抓包时通常看不到
帧起始定界符 1 标志帧的开始
目的MAC地址 6 谁该收这个包
源MAC地址 6 谁发的这个包
类型/长度 2 0x0800表示IPv4,0x0806表示ARP
数据载荷 46-1500 上层协议的数据,比如IP包
帧校验序列 4 CRC校验,检查数据是否损坏

这里有个细节我提醒一下:前导码和帧起始定界符在Wireshark里是看不到的。我第一次用Wireshark抓包时,找了半天没找到这8个字节,还以为软件坏了。其实它们是物理层的东西,网卡在接收时会自动剥离掉。

核心要点:以太网帧的最小长度是64字节(从目的MAC到FCS)。如果数据不够,会填充到46字节。为什么是64?因为要确保在冲突检测机制下,发送方能在发送完之前检测到冲突。

4.2 MAC地址解析

MAC地址,就是网卡的“身份证”。它由48位二进制组成,通常写成12个十六进制数,比如 00:1A:2B:3C:4D:5E

我个人习惯把MAC地址分成两部分来看:

  • 前24位(OUI):厂商代码。比如00:1A:2B是华为的,00:0C:29是VMware的。
  • 后24位:由厂商自行分配,理论上全球唯一。

这里有个坑,我曾经踩过:MAC地址是可以修改的。很多操作系统允许你手动设置MAC地址,这叫“MAC地址欺骗”。有一次客户说网络里有IP冲突,我查了半天,发现是有人故意改了MAC地址在搞破坏。所以,别太迷信MAC地址的唯一性。

小技巧:在Wireshark里,如果看到MAC地址以 01:00:5E 开头,那是组播地址。以 FF:FF:FF:FF:FF:FF 开头,那是广播地址。一眼就能认出来。

4.3 广播与单播

网络通信就两种模式:一对一一对多

  • 单播:目的MAC地址是某个特定设备的地址。交换机看到这个帧,只会转发给对应的端口。
  • 广播:目的MAC地址是 FF:FF:FF:FF:FF:FF。交换机看到这个帧,会复制一份发给所有端口(除了接收端口)。
  • 组播:目的MAC地址以 01:00:5E 开头。只有加入了这个组播组的设备才会接收。

你想想看,如果网络里全是广播,那会是什么场景?所有设备都得停下来处理这些广播帧,CPU占用飙升。这就是所谓的广播风暴。我在一个大型园区网里遇到过,一个环路导致广播帧无限循环,整个网络直接瘫痪。嗯,那场面,真是“一帧发,万机卡”。

避坑指南:我曾经在配置VLAN时,忘了把两个交换机的Trunk端口做修剪,结果广播帧跨VLAN传播,导致部分业务中断。记住:VLAN是广播域的边界,别让广播帧跑出它该待的地方。

4.4 ARP协议基础

ARP,全称是地址解析协议。它的作用很简单:已知IP地址,问MAC地址

过程是这样的:

  1. 主机A想和主机B通信,但只知道B的IP,不知道B的MAC。
  2. A发送一个ARP请求广播帧,问:“谁的IP是192.168.1.2?请告诉我你的MAC地址。”
  3. 所有设备都收到这个广播,但只有B会回应。
  4. B发送一个ARP应答单播帧,说:“我是192.168.1.2,我的MAC是00:1A:2B:3C:4D:5E。”
  5. A收到后,把IP和MAC的对应关系缓存起来,下次直接用。

ARP请求的帧结构是这样的:

以太网帧头:
    目的MAC: FF:FF:FF:FF:FF:FF  (广播)
    源MAC: 00:1A:2B:3C:4D:5E
    类型: 0x0806 (ARP)

ARP数据:
    硬件类型: 1 (以太网)
    协议类型: 0x0800 (IPv4)
    硬件地址长度: 6
    协议地址长度: 4
    操作码: 1 (请求) 或 2 (应答)
    发送方MAC: 00:1A:2B:3C:4D:5E
    发送方IP: 192.168.1.1
    目标MAC: 00:00:00:00:00:00 (请求时为0)
    目标IP: 192.168.1.2

这里有个经典问题:ARP欺骗。攻击者可以伪造ARP应答,告诉别人“192.168.1.1的MAC地址是我的”。这样一来,所有发往网关的流量都会经过攻击者的机器。我在一次渗透测试中就用过这个手法,成功截获了管理员的口令。所以,在关键网络里,建议配置静态ARP或者使用DAI(动态ARP检测)

实战经验:ARP缓存是有时效的,默认一般是2分钟。如果网络拓扑变化频繁(比如虚拟机迁移),你会发现ARP缓存经常过期,导致通信中断。我建议在服务器上把关键IP的ARP条目设为静态,避免这种问题。

4.5 本章知识体系

下面这张图,是我自己梳理的以太网与MAC地址的核心逻辑。你看一眼,基本就能把今天的内容串起来。

以太网帧与MAC地址知识体系 以太网帧结构 MAC地址解析 广播与单播 ARP协议基础 OUI厂商识别 MAC地址欺骗 广播风暴风险 VLAN隔离广播域 请求/应答过程 ARP欺骗防御 核心:二层通信是网络稳定的基石

这张图把今天的内容分成了三大块:帧结构是基础,MAC地址是身份标识,ARP是IP到MAC的桥梁。三者缺一不可。

好了,关于以太网帧和MAC地址,咱们就聊到这儿。记住一句话:网络问题,从二层开始查。下次你遇到网络不通,先看看MAC地址对不对,ARP缓存有没有问题,往往能省下不少时间。

专注资料整理