模块五 · 链路层和局域网
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 地址的来历
Get-NetAdapter | Where-Object Status -eq 'Up' | Select-Object Name, MacAddress, InterfaceDescriptionName : 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-E8 | Intel | Intel(R) Wi-Fi 6E AX211 | ✅ 对得上 |
00-15-5D | Microsoft | Hyper-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 | 计算出的 MAC | ARP 表里实际是 |
|---|---|---|
224.0.0.22 | 01-00-5e-00-00-16 | ✅ 一致 |
224.0.0.251 | 01-00-5e-00-00-fb | ✅ 一致 |
224.0.0.252 | 01-00-5e-00-00-fc | ✅ 一致 |
239.255.255.250 | 01-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 题 · 先自己答,再展开对照
MAC 地址
02-1A-2B-3C-4D-5E的第一字节是02。它是单播还是多播?U/L表示哪种管理格式,能否确定地址生成方式?02=00000010,I/G=0表示单播,U/L=1表示本地管理。不能仅凭此确认它如何生成。局域网里看到一台设备的 MAC 是
F6-E3-97-52-2A-56。你能从中知道它的厂商吗?不能可靠判断。F6的U/L=1,本地管理地址前三字节不应当作厂商OUI;它可能是随机、虚拟或人工配置地址。为什么不用 MAC 地址直接做互联网路由,而要另外发明 IP 地址?
IP按网络前缀组织路由,有利于聚合;通常MAC不提供同样的网络位置层级。192.168.31.0/24包含256个地址,常规可用主机数254。多播 IP
224.0.0.251对应的 MAC 地址是什么?怎么算出来的?01:00:5E:00:00:FB。固定前25位,再嵌入IPv4多播地址低23位;该映射不是一一对应。某公司用"只允许登记的 MAC 地址上网"来做安全管控。这种做法能挡住什么、挡不住什么?
能挡住:员工随手把未登记的笔记本、手机插到公司网口上(防误连)。
挡不住:任何稍微懂技术的人 —— 因为 MAC 地址在软件里就能改,照着一台已登记设备的 MAC 抄一份就能绕过。所以这种做法只能当"减少误操作"的管理手段,不能当作安全边界。真正的准入控制需要证书、802.1X 之类有密钥的机制。为什么
FlClash网卡没有 MAC 地址?因为它是 TUN 虚拟网卡,工作在 IP 层,不处理以太网帧。 没有二层协议就不需要 MAC 地址。这从反面说明了分层:一层可以只实现自己的职责,不必实现下面所有的层。
参考资料与适用范围
修订核对日期:2026-10-13。规则按所列协议与实现范围理解;文中的原始命令输出是历史观察,不表示本次重新实测。跨版本、代理/隧道及不同捕获位置需要另行核对。