← 网络基础学习第 35 / 55 章基础30 分钟

模块五 · 链路层和局域网

MAC 地址

MAC 地址是"设备身份",但它到底是哪来的、为什么有时会变、为什么一台机器上会有好几个?这一章把 48 位拆开看,并且用本机抓到的真实 MAC 逐条验证。

本章要解决的问题:MAC 地址是"设备身份",但它到底是哪来的、为什么有时会变、为什么一台机器上会有好几个?这一章把 48 位拆开看,并且用本机抓到的真实 MAC 逐条验证。

本章的证据来源:历史实测记录(各网卡 MAC、ARP 表中的邻居 MAC,并用程序逐位分析)。地址结构出自 IEEE 802(OUI 分配规则);多播 MAC 映射出自 RFC 1112。

先从一个例子理解概念

局部线路上要把数据送到一个通信接口,需要一个链路标识。先理解这个标识的用途,再拆它的位和厂商登记。

本地接口标识:MAC地址

MAC地址是以太网等链路使用的标识,常见写法为六组十六进制字节。它指向通信接口,不等于人的身份,也不保证永远不变。

怎么写数字:十六进制与位

十六进制用0–9、A–F共16个符号写数字,一位十六进制对应4个二进制位。MAC里的44是一个字节的写法,不是十进制44。

发给谁:单播、组播与广播

发给一个指定接收接口叫单播;发给某个组叫组播或多播;发给本广播范围内所有接收者叫广播。这是接收范围的区别。

地址来自什么规则:OUI与本地管理

OUI是组织标识的一类登记前缀;本地管理地址按本地规则分配,可用于随机化或虚拟接口。地址位值能说明格式,不能认证具体厂商、生成方式或安全性。

下面再用这些概念看原理、命令和结果。规范与官方资料列在本章末尾,类比只帮助理解,不代替协议规则。

MAC 地址是什么:48 位数字

本章讨论以太网常见的48位MAC地址,通常写成六组十六进制字节,如 44:38:E8:0A:55:23。

对传统OUI型通用管理地址,可以用24位组织前缀加24位扩展标识解释,但这不是所有MAC地址的生成规则。IEEE还有MA-M、MA-S等分配规模;本地管理地址也不必携带厂商OUI。单个24位扩展空间有2²⁴种值,不等于某厂商一生只能生产这些网卡。IEEE 地址分配说明

实测:三段 MAC 地址的来历

示例powershell
Get-NetAdapter | Where-Object Status -eq 'Up' | Select-Object Name, MacAddress, InterfaceDescription
Name                  : WLAN
MacAddress            : 44-38-E8-0A-55-23
InterfaceDescription  : Intel(R) Wi-Fi 6E AX211 160MHz

Name                  : vEthernet (WSL (Hyper-V firewall))
MacAddress            : 00-15-5D-FB-2D-8A
InterfaceDescription  : Hyper-V Virtual Ethernet Adapter

把它们和网卡型号对照,是一个很好的自我验证:

MAC 前缀推断厂商网卡型号说的是对得上吗
44-38-E8IntelIntel(R) Wi-Fi 6E AX211✅ 对得上
00-15-5DMicrosoftHyper-V Virtual Ethernet Adapter✅ 对得上

第一个字节里藏着两个开关

MAC 地址的第一个字节的最低两位有特殊含义。这是 IEEE 802 标准规定的,也是本章最实用的知识点。

位名称含义
第 0 位(最低位)I/G 位0 = 单播(发给一块网卡),1 = 多播(发给一组网卡)
第 1 位U/L 位0 = 通用管理,1 = 本地管理;不直接证明烧录或生成方式

判读方法:把第一个字节写成 8 位二进制,看最后两位。

44 = 0100010[0]    第 0 位 = 0(单播)   第 1 位 = 0(通用管理)
FA = 1111101[0]    第 0 位 = 0(单播)   第 1 位 = 1(本地管理!)
01 = 0000000[1]    第 0 位 = 1(多播)

实测:把本机所有 MAC 逐位分析一遍

历史记录中,44的二进制是01000100,I/G=0、U/L=0;FA是11111010,I/G=0、U/L=1;01是00000001,I/G=1、U/L=0。

首字节可从位值确认什么不能仅由位值确认什么
44、00、A4单播、通用管理格式实际地址是否出厂烧录、设备真实身份
FA、F6、02单播、本地管理格式是否随机化、是否虚拟机、是否恶意设备
01组地址、通用管理格式不能误读为U/L=1
FF全FF地址表示广播不能把U/L位用于推断设备厂商

本地管理地址可来自隐私随机化、虚拟接口或管理员配置。Windows的随机地址功能还依赖硬件及设置;不能从这两个邻居地址断言它们是手机或排除攻击。Microsoft 随机硬件地址

三类 MAC 地址

类型第一字节特征用途例子
单播第 0 位 = 0发给一块网卡44-38-E8-...
多播第 0 位 = 1发给一组网卡01-00-5E-...
广播全 FF发给同一网段所有网卡FF-FF-FF-FF-FF-FF

多播 MAC 的映射规则(历史实测记录验证)

IPv4 多播地址(224.0.0.0 ~ 239.255.255.255)要映射成 MAC 地址,规则是:

01-00-5E + 多播 IP 的低 23 位

本机 ARP 表里的多播条目,四条全部吻合:

多播 IP计算出的 MACARP 表里实际是
224.0.0.2201-00-5e-00-00-16✅ 一致
224.0.0.25101-00-5e-00-00-fb✅ 一致
224.0.0.25201-00-5e-00-00-fc✅ 一致
239.255.255.25001-00-5e-7f-ff-fa✅ 一致

为什么只取低23位? RFC 1112把IPv4多播映射范围限定为01:00:5E:00:00:00到01:00:5E:7F:FF:FF:24位前缀之后还有一位固定为0,余下23位取自多播IP。因此32个IPv4多播组可能共享一个MAC。代价是不同的多播 IP 可能映射到同一个 MAC —— 接收方收到帧后再按 IP 层过滤就行了,这在二层可以接受。

MAC 地址能改吗

能。 大多数网卡驱动都提供"网络地址"属性,可以直接指定一个新的 MAC。Windows 上在设备管理器的网卡属性 → 高级 → 网络地址里就能改。

这件事有个重要推论:

为什么需要 MAC 和 IP 两个地址

初学者最常见的疑问之一:既然 IP 地址能定位设备,为什么还要 MAC 地址?

反过来问也一样:既然 MAC 全球唯一,为什么不用 MAC 直接通信?

两个方向都有明确答案:

如果只用 MAC,不要 IP:

MAC 地址虽然全球唯一,但它是没有规律的——44-38-E8-... 和 F6-E3-97-... 之间看不出任何地理位置关系。这意味着路由器无法把地址聚合成规则,要为地球上每一块网卡都存一条路由记录。路由表会大到无法处理。

IP 地址是有结构的:192.168.31.0/24 表示256个地址,其中常规/24子网一般有254个主机地址。路由器只需要记住"192.168.31.x 这个段往那边走",而不用记住每一台设备。

如果只用 IP,不要 MAC:

IP 地址是分层的逻辑标识,跟网卡没有绑定关系。而链路层要把数据发到具体的某块网卡上,需要的是硬件标识。而且 IP地址可随网络配置变化,如果拿它当硬件标识,二层仍需要适合该介质的寻址规则;点到点或TUN接口则不一定需要MAC。

所以:MAC 负责"这一段路上给哪块网卡",IP 负责"全程送到哪个位置"。 这正是《全景与基础》模块"分层"思想的具体体现 —— 不同层用不同的地址来解决不同范围的问题。

常见误解

误解一:通用管理地址一定来自硬件烧录。 位值只表示地址管理格式,Hyper-V也可软件分配这种格式的地址。

误解二:本地管理地址一定是手机随机化,也一定安全。 它有多种合法和恶意来源,不能单独做身份与安全判断。

误解三:MAC与IP必须一一对应。 一个接口可配置多个IP,一个设备可有多个接口;故障转移也会改变对应关系。

误解四:所有IP链路都需要MAC。 以太网需要二层MAC;TUN交付IP包,其他链路可使用不同标识。

本章小结

结论性质
以太网MAC通常为48位;OUI型格式不是全部地址的唯一生成规则IEEE分配规则
第0位为I/G,第1位为U/L,0通用管理、1本地管理位定义
位值不证明烧录方式、随机化、厂商身份或安全性推断边界
IPv4多播映射使用固定25位与IP低23位RFC 1112
MAC可被配置,不可单独作为身份认证依据安全边界

自测题

6 题 · 先自己答,再展开对照

  1. MAC 地址 02-1A-2B-3C-4D-5E 的第一字节是 02。它是单播还是多播?U/L表示哪种管理格式,能否确定地址生成方式?
    02=00000010,I/G=0表示单播,U/L=1表示本地管理。不能仅凭此确认它如何生成。
  2. 局域网里看到一台设备的 MAC 是 F6-E3-97-52-2A-56。你能从中知道它的厂商吗?
    不能可靠判断。F6的U/L=1,本地管理地址前三字节不应当作厂商OUI;它可能是随机、虚拟或人工配置地址。
  3. 为什么不用 MAC 地址直接做互联网路由,而要另外发明 IP 地址?
    IP按网络前缀组织路由,有利于聚合;通常MAC不提供同样的网络位置层级。192.168.31.0/24包含256个地址,常规可用主机数254。
  4. 多播 IP 224.0.0.251 对应的 MAC 地址是什么?怎么算出来的?
    01:00:5E:00:00:FB。固定前25位,再嵌入IPv4多播地址低23位;该映射不是一一对应。
  5. 某公司用"只允许登记的 MAC 地址上网"来做安全管控。这种做法能挡住什么、挡不住什么?
    能挡住:员工随手把未登记的笔记本、手机插到公司网口上(防误连)。
    挡不住:任何稍微懂技术的人 —— 因为 MAC 地址在软件里就能改,照着一台已登记设备的 MAC 抄一份就能绕过。所以这种做法只能当"减少误操作"的管理手段,不能当作安全边界。真正的准入控制需要证书、802.1X 之类有密钥的机制。
  6. 为什么 FlClash 网卡没有 MAC 地址?
    因为它是 TUN 虚拟网卡,工作在 IP 层,不处理以太网帧。 没有二层协议就不需要 MAC 地址。这从反面说明了分层:一层可以只实现自己的职责,不必实现下面所有的层。

参考资料与适用范围

修订核对日期:2026-10-13。规则按所列协议与实现范围理解;文中的原始命令输出是历史观察,不表示本次重新实测。跨版本、代理/隧道及不同捕获位置需要另行核对。

正文源自 m5-02-MAC地址.md · 共 12 节 · 6 道自测题