外观
世界上那么多网卡,怎么保证每个“身份证号”都不重样?
阶段 2 · 数据链路层 · 第 9 课
在第 8 课中,我们看到以太网帧头最醒目的就是 6 字节的目的 MAC 和 6 字节的源 MAC。日常生活中你可能在手机“关于本机”或电脑网卡属性里见过类似 54-89-98-1A-2B-3C 这样一串由连字符或冒号隔开的十六进制数字。
全球有上百亿台联网设备,为什么两块网卡出厂时绝不会撞号?如果一台主机想把一个文件发给全寝室所有人,难道要逐个填每个人的 MAC 连发四遍吗?
学完本课后,你将能够:
- 辨别 MAC 地址 的 48 位二进制与 12 位十六进制表示,说出前 24 位 OUI 与后 24 位的分工。
- 通过查看第 1 字节的最低位(I/G 位),瞬间判断一个 MAC 地址属于单播(Unicast)、组播(Multicast)还是广播(Broadcast)。
- 解释当全网广播帧(
FF-FF-FF-FF-FF-FF)到来时,普通网卡硬件为何必须强制接收。
1. 先看图:MAC 地址的 48 位是怎么分配的?
MAC 地址(媒体访问控制地址,又称局域网物理地址或烧录地址 BIA)全长 48 个比特(6 个字节)。为了人类方便阅读,通常按每 8 位(1 个字节)转换成 2 位十六进制数,以连字符-(如 Windows:54-89-98-1A-2B-3C)或冒号 :(如 Linux / macOS:54:89:98:1a:2b:3c)或者点分四位(如华为交换机:5489-981a-2b3c)呈现。这 48 个比特被整齐地切分成两半(如上图):
① 前 24 个比特:组织唯一标识符(OUI)
- 由国际标准组织 IEEE 统筹管理。任何生产网卡、交换机、手机或 Wi-Fi 芯片的厂商(如华为、Intel、Apple),都必须向 IEEE 申请付费注册专属的代码,称为 OUI(Organizationally Unique Identifier)。
- 例如:
54-89-98是华为常用的 OUI 代码之一;00-1A-A0属于戴尔;00-50-56属于 VMware 虚拟机网卡。 - 只要看到一个 MAC 的前 3 个字节,就能在 IEEE 官方数据库中查出这是哪家厂商造的设备!
② 后 24 个比特:扩展标识符(接口序列号)
- 由获得 OUI 的厂商自主管理分配。厂商给每块刚走下流水线的网卡、光模块或手机无线芯片烧录一个互不重复的序列号。
:每个 OUI 可以支持厂商生产超过一千六百万块独一无二的网卡!用完后厂商再向 IEEE 申请新的 OUI 代码即可。 - 全球唯一性保障:前 24 位厂商唯一 + 后 24 位产品唯一 = 全球每张以太网网卡拥有世界上独一无二的物理身份证号!
2. 三种寻址类型:单播、组播与广播
以太网帧头里的目的 MAC 地址,决定了这一帧在局域网里的递送范围。按照接收对象的不同,通信分为三种模式:
| 寻址类型 | 日常生活类比 | 目的 MAC 地址的二进制与十六进制特征 | 典型应用场景 |
|---|---|---|---|
| 单播(Unicast)(点对点) | 像寄私人快递:包裹上写着具体的门牌号,只有收件人拆件 | 第 1 字节的最低位(I/G 位)为 0(例: 54-89-98-xx-xx-xx,因 0x54 二进制为 01010100) | 两个人微信私聊、电脑下载文件、网页浏览 |
| 组播(Multicast)(点对多点) | 像订阅特定电台:只有调到该频道的收音机才会出声 | 第 1 字节的最低位(I/G 位)为 1(例:IPv4 组播固定为 01-00-5E-xx-xx-xx,0x01 最低位为 1) | OSPF 路由协议交换路由、IPTV 电视直播流、视频会议 |
| 广播(Broadcast)(点对全网) | 像村口大喇叭广播:全村所有人都会听到喇叭里放的内容 | 所有 48 个比特全部为 1即十六进制固定的 FF-FF-FF-FF-FF-FF | ARP 询问局域网谁有某个 IP、DHCP 电脑刚开机申请 IP |
核心考点:I/G 位与 G/L 位
观察 MAC 地址第 1 个字节的 8 个比特(记为
- 最低位
:I/G 位(Individual / Group,单播/组播位) :单播地址(Individual),代表单张物理网卡。 :组播/广播地址(Group),代表一组设备或全网设备。
- 次低位
:U/L 位(Universal / Local,全局/本地位) :全局唯一地址(Universal),由 IEEE 官方注册分配。 :本地管理地址(Locally Administered),管理员手工在系统里随意改写的 MAC 地址。
一秒速算法:怎么一眼看出是不是单播?
看 MAC 地址第 1 字节的第 2 个十六进制字符(例如 54-xx-xx 中的 4,或 01-xx-xx 中的 1):
- 如果该字符转换为二进制后末尾是
0(即字符为0, 2, 4, 6, 8, A, C, E):必定是单播 MAC! - 如果该字符末尾是
1(即字符为1, 3, 5, 7, 9, B, D, F):必定是组播或广播 MAC!
3. 网卡硬件是怎样过滤数据帧的?
当网线上的电信号被还原成一个以太网帧后,网卡芯片的 MAC 控制器硬件会立即抓取帧头的 6 字节“目的 MAC”,执行极速的三道门禁过滤:
- 第一道门:匹配自己的物理 MAC?
- 目的 MAC 与本机网卡烧录的单播 MAC 完全相同
放行!
- 目的 MAC 与本机网卡烧录的单播 MAC 完全相同
- 第二道门:匹配全网广播
FF-FF-FF-FF-FF-FF?- 目的 MAC 全是 F
放行!因为这是局域网全体通知,本机有义务听取。
- 目的 MAC 全是 F
- 第三道门:匹配本机加入的组播组 MAC?
- 本机操作系统配置了加入某组播组(如 OSPF 路由器加入
01-00-5E-00-00-05)且匹配命中放行!
- 本机操作系统配置了加入某组播组(如 OSPF 路由器加入
- 以上皆不匹配:
- 硬件直接静默扔进废纸篓!
- 这一步完全在网卡硬件芯片内以纳秒级完成,不需要惊动主机的 CPU 和内存,极大地节省了系统性能。
黑客与抓包神器(混杂模式 Promiscuous Mode): 为什么你在电脑上打开 Wireshark 可以抓到局域网里别人的通信?因为 Wireshark 会通知操作系统把网卡设为“混杂模式”。在这种模式下,网卡故意关闭了上述三道门禁过滤,把线上经过的每一个帧统统呈报给操作系统,供网络分析人员诊断排障。
4. 小结与下一步
- MAC 结构:48 位二进制,前 24 位为厂商 MAC 地址(OUI),后 24 位由厂商分配,确保全球唯一。
- 三种类型:看第 1 字节最低位,
0为单播(Unicast),1为组播(Multicast);48 位全1(FF-FF-FF-FF-FF-FF)为全网广播(Broadcast)。 - 硬件过滤:网卡只接收目标是自己、广播或已加入组播的帧,其余无关帧在硬件层丢弃。
现在我们有了目的 MAC 地址,但如果一个办公室里有 20 台电脑同时插在同一台以太网交换机上,交换机内部到底根据什么表项,才能把电脑 A 发往电脑 B 的帧,精准地只送给电脑 B,而不干扰其他人?下一课我们拆开现代局域网的心脏——以太网交换机的工作原理。