数据链路层与 MAC 寻址
基于 HTTP 现代标准 · 核于 2026-06
速查
- 数据链路层(Data Link Layer)= OSI 第 2 层,夹在物理层(第 1 层,收发裸比特)与网络层(第 3 层,跨网路由)之间,只管相邻两个直连节点之间的事。
- 它干三件核心活:成帧(把物理层的比特流划分出帧的起止,组织成「帧 Frame」)、单跳投递(把帧从一个节点送到同一链路上直连的下一个节点)、差错检测(用 CRC / FCS 校验帧在传输中有没有出错)。
- 「单跳」是关键词:链路层只负责「一段链路」上的传输,不负责跨网络送到最终目的地——后者是网络层(IP)的职责。
- MAC 地址(Media Access Control address)= 链路层的物理地址,长 48 位(6 字节,EUI-48),写成十六进制如
00:1A:2B:3C:4D:5E。 - 三种写法等价:冒号
00:1A:2B:3C:4D:5E、连字符00-1A-2B-3C-4D-5E、点分001A.2B3C.4D5E。 - 前 24 位(前 3 字节)是 OUI(Organizationally Unique Identifier,组织唯一标识符),由 IEEE 分配给网卡厂商,可反查厂商;后 24 位由厂商自行分配,二者合起来力求全球唯一。
- 第一个字节的最低位是 I/G 位:
0=单播(发给某一台设备)、1=组播(发给一组设备);次低位是 U/L 位:0=全球管理(厂商烧录)、1=本地管理(软件改写)。 - 广播 MAC =
FF:FF:FF:FF:FF:FF(全 1),本网段所有设备都会收下——ARP 找人、DHCP 发现都靠它。 - MAC vs IP:MAC 是物理 / 烧录地址、二层、单跳、随设备走;IP 是逻辑 / 可变地址、三层、端到端、随网络变。两者协同工作、各管一段。
- 链路层再分两个子层:**LLC(逻辑链路控制,IEEE 802.2)**对上复用网络层协议、可选流控与差错通知;**MAC(介质访问控制)**对下决定「谁能用介质」并做物理寻址。
- **局域网(LAN)**是这一层的舞台:一栋楼、一个办公室、一个家庭内由交换机 / Wi-Fi 连起来的网络,设备靠 MAC 直接互相通信。
- 帧的具体字段见以太网帧结构;交换机如何按 MAC 转发见交换机工作原理;IP↔MAC 怎么映射见ARP 协议与 ARP 欺骗。
一、数据链路层是什么:把比特组织成帧、送过「一段链路」
回顾网络分层:物理层只会「收发一串 0 和 1」,它不知道哪几个比特属于一个数据单元、也不管对错。数据链路层(第 2 层)就是给这堆裸比特赋予「结构」和「秩序」的那一层——它位于物理层之上、网络层之下,专注做相邻两个直连节点之间的可靠单跳传输。
把数据从北京送到纽约,要穿过几十段链路(你的网卡 → 家用路由器 → 运营商交换机 → …)。每一段链路上的传输,都由链路层负责;而「整段旅程怎么规划、下一跳该交给谁」,是网络层(IP)的事。这就是常说的「链路层管单跳,网络层管端到端」。
链路层的三大职责:
- 成帧(Framing):物理层送上来的是连续比特流,链路层把它划分成一个个「帧(Frame)」——确定每个帧从哪开始、到哪结束,并在帧里塞入源 / 目的 MAC、校验码等控制信息。Wikipedia 对此的定性是它提供 “frame synchronization, which determines the start and end of each frame”。
- 单跳投递(Node-to-Node Delivery):把帧从一个节点送到同一链路上直连的下一个节点。OSI 模型原文:数据链路层 “provides node-to-node data transfer — a link between two directly connected nodes”。
- 差错检测(Error Detection):链路在传输中可能因电磁干扰翻转比特。链路层在帧尾附上一段校验码(如 CRC,循环冗余校验),接收方重新计算并比对,发现出错的帧就丢弃。注意:以太网只「检错」不「纠错」——纠错(重传)交给更上层。
一句话抓住本质
物理层负责「比特怎么在线缆 / 电波上跑」,链路层负责「这些比特怎么打包成帧、安全地跨过一段链路送到隔壁节点」。 它的视野只有「相邻一跳」,不关心数据最终要去地球哪个角落。
1.1 为什么需要「帧」这个概念
如果没有成帧,接收方面对的就是一条永不停歇的比特流——根本分不清「一个数据单元」的边界,也无从校验对错、无从知道这段数据是发给谁的。帧 = 比特流的「信封」:信封上写明寄件 / 收件地址(源 / 目的 MAC)、装着内容(上层的 IP 包),封口处盖个防伪章(校验码)。有了帧,链路层才能做寻址和检错。本页只立「帧」的概念,帧内部的字段布局(前导码、类型、FCS 等)留给以太网帧结构。
二、MAC 地址:网卡的「物理身份证」
要在一段链路上把帧送给「正确的那台设备」,就得有一套这一层自己的寻址系统——这就是 MAC 地址。
MDN 的定性很清楚:
A MAC address (medium access control address) is a unique identifier assigned to a network interface controller (NIC) for use as a network address in communications within a network segment. —— MDN, MAC address
要点拆解:
- 绑定在网卡(NIC)上:每块网卡(有线网卡、Wi-Fi 模块、蓝牙模块……)出厂时被写入一个 MAC 地址,作为它在「网段内通信」时的地址。
- 长度 = 48 位 = 6 字节(EUI-48):这是当今最通用的格式。
- 十六进制书写:6 个字节各写成两位十六进制,常见三种等价写法:
| 写法 | 示例 | 常见于 |
|---|---|---|
| 冒号分隔 | 00:1A:2B:3C:4D:5E | Linux / macOS、抓包工具 |
| 连字符分隔 | 00-1A-2B-3C-4D-5E | Windows |
| 点分(每 4 位一组) | 001A.2B3C.4D5E | Cisco 设备 |
- 力求全球唯一:通过「厂商前缀 + 厂商自编号」的机制,让世界上每块网卡的 MAC 原则上都不重复(详见下一节)。
2.1 MAC 地址的结构:OUI + 厂商自分配
48 位被从中一分为二:
00:1A:2B : 3C:4D:5E
└───┬───┘ └───┬───┘
前 24 位 后 24 位
OUI(厂商) 厂商自分配(设备序号)- 前 24 位(前 3 字节)= OUI(Organizationally Unique Identifier,组织唯一标识符):由 IEEE 统一分配给各网卡厂商。拿到 OUI,就能反查这块网卡是哪家厂商造的(如某段 OUI 属于苹果、某段属于英特尔)。
- 后 24 位 = 厂商在自己的 OUI 空间内自由分配,给每块网卡一个唯一序号。
OUI(厂商,2²⁴ 个组织)+ 后 24 位(每厂商 2²⁴ 块网卡)共同保证全球唯一性。
OUI 的第一个字节里还藏着两个「控制位」
MAC 第一个字节(最左那对十六进制)的最低两位有特殊含义,且优先于 OUI 解读:
- I/G 位(最低位,bit 0):
0= 单播(Individual),发给某一台设备;1= 组播(Group),发给一组设备。 - U/L 位(次低位,bit 1):
0= 全球管理(Universally administered),即厂商烧录的真实地址;1= 本地管理(Locally administered),被软件改写过的地址。
这正是「MAC 地址可以被软件修改 / 随机化」的原理——把 U/L 位置 1 即可。手机 Wi-Fi 的「随机 MAC」隐私功能就用了它。单播 / 组播 / 广播的细节见下一节。
三、单播、组播、广播:一个帧发给「谁」
根据目的 MAC 地址的不同,链路层的帧有三种投递范围:
| 类型 | 目的 MAC 特征 | 含义 | 典型场景 |
|---|---|---|---|
| 单播 Unicast | 第一字节最低位(I/G)= 0 | 发给某一台特定设备 | 绝大多数正常通信(你 ↔ 网关) |
| 组播 Multicast | 第一字节最低位(I/G)= 1 | 发给订阅了某组的一批设备 | 视频流分发、某些发现协议 |
| 广播 Broadcast | 全 1:FF:FF:FF:FF:FF:FF | 发给本网段所有设备 | ARP 找人、DHCP 发现 |
广播地址 FF:FF:FF:FF:FF:FF 要记牢
全 1 的 MAC 地址是广播地址——MDN 原文称它 “is received by all stations on a local area network”(本局域网内所有站点都会收下)。它是局域网里很多「先喊一嗓子找人」的协议的基础:比如一台主机知道对方 IP 却不知道对方 MAC 时,就广播一句「谁是 192.168.1.1?」——这正是 ARP 的工作方式(详见ARP 协议与 ARP 欺骗)。广播只在本网段内有效,路由器默认不会把它转发到别的网络。
四、MAC vs IP:两套地址,各管一段
初学者最容易混淆的就是「有了 IP 为什么还要 MAC」。答案是:它们工作在不同层、解决不同问题,缺一不可。
| 维度 | MAC 地址 | IP 地址 |
|---|---|---|
| 所在层 | 数据链路层(第 2 层) | 网络层(第 3 层) |
| 地址性质 | 物理 / 烧录地址(绑定网卡硬件) | 逻辑 / 可变地址(按网络分配) |
| 长度 | 48 位(6 字节,十六进制) | IPv4 32 位(点分十进制)/ IPv6 128 位 |
| 寻址范围 | 单跳——同一链路 / 网段内 | 端到端——跨越多个网络送达最终目的 |
| 是否随网络变 | 不变,跟着设备走(换网不变) | 跟着网络变(接入哪个网就拿哪段 IP) |
| 唯一性 | 力求全球唯一(OUI + 厂商分配) | 公网全球唯一;私网可复用 |
| 由谁分配 | 厂商出厂烧录(IEEE 管 OUI) | 网络管理员 / DHCP / 运营商 |
一个绝佳的类比:
「身份证号」vs「收货地址」
MAC 像身份证号——一出生(出厂)就定了,绑定「你这个人(这块网卡)」,走到哪都不变。 IP 像收货地址——你搬家(换网络)了,地址就变;它描述的是「你现在在网络拓扑的哪个位置」,路由器据此把包一跳跳送过来。
寄快递时(数据传输)两者配合:IP 决定「最终送到哪个城市哪栋楼」(端到端路由),MAC 决定「这一段路由车开到了哪,下一个直连的中转站是谁」(单跳交付)。 数据每经过一跳,目的 IP 始终不变(最终目的地),但帧里的目的 MAC 会换成「下一跳」的 MAC。
IP 怎么找到对应的 MAC?——这是 ARP 的活
既然发帧需要目的 MAC,而上层只给了目的 IP,就需要一个「IP → MAC」的查询机制。这正是 ARP(地址解析协议)做的事,本页不展开,详见ARP 协议与 ARP 欺骗。这里只需理解:IP 与 MAC 是两套独立编址,靠 ARP 把它们「对接」起来。
五、链路层的两个子层:LLC 与 MAC
IEEE 802 标准把数据链路层进一步切成上下两个子层,分工明确:
LLC(Logical Link Control,逻辑链路控制,IEEE 802.2)= 上子层 对接网络层。它复用上层协议(标明这个帧里装的是 IP 还是别的协议,好让接收方交给正确的上层处理),并可选地提供流量控制、确认与差错通知。Wikipedia 原文:LLC “multiplexes protocols running at the top of the data link layer, and optionally provides flow control, acknowledgment, and error notification”。
MAC(Media Access Control,介质访问控制)= 下子层 对接物理层。它解决两个问题:① 介质访问仲裁——「现在谁能往共享介质上发数据」(避免大家同时发造成冲突);② 物理寻址——也就是用上面讲的 MAC 地址做收发寻址。
别把「MAC 子层」和「MAC 地址」当成一回事
MAC 地址是一串 48 位标识;MAC 子层是链路层下半部分这个功能模块。MAC 地址只是 MAC 子层用来做物理寻址的工具之一。日常口语里「MAC」两种含义都用,靠上下文区分。802.3(以太网)、802.11(Wi-Fi)这些都是工作在数据链路层(含 MAC 子层)的具体标准——以太网细节见以太网帧结构,Wi-Fi 见Wi-Fi / 802.11 无线局域网。
六、局域网(LAN):链路层施展的舞台
局域网(LAN,Local Area Network)是地理范围有限的网络——一个家庭、一间办公室、一栋楼里,由交换机和 Wi-Fi 接入点把设备连成的网络。它正是数据链路层大显身手的地方:
- 在同一个局域网内,设备之间靠 MAC 地址直接通信,一跳即达,无需路由器参与转发(交换机按 MAC 转发,原理见交换机工作原理)。
- 跨出局域网(比如访问外网网站)时,数据先在本地链路层送到网关(路由器),再由网络层接管做跨网路由。
- 局域网范围内还可以用 VLAN 做逻辑隔离,把一个物理网络切成多个互不干扰的广播域(见VLAN 与局域网隔离)。
所以理解链路层,本质上就是理解「一个局域网 / 一段链路内部,比特如何成帧、设备如何用 MAC 互相找到对方、一跳如何安全送达」。
小结
- 数据链路层(第 2 层) 夹在物理层与网络层之间,干三件事:成帧、单跳投递、差错检测(CRC);它的视野只有「相邻一跳」。
- MAC 地址 = 48 位(6 字节)十六进制物理地址,前 24 位是 IEEE 分配的厂商 OUI,后 24 位厂商自分配,力求全球唯一;第一字节藏着 I/G 位(单 / 组播)与 U/L 位(全球 / 本地管理)。
- 单播 / 组播 / 广播 由目的 MAC 区分,广播地址是全 1 的
FF:FF:FF:FF:FF:FF。 - MAC vs IP:物理 / 烧录 vs 逻辑 / 可变、二层 vs 三层、单跳 vs 端到端——身份证号 vs 收货地址,协同完成投递。
- 链路层分 LLC(802.2,对上复用与流控)+ MAC(对下仲裁介质 + 物理寻址) 两子层;局域网(LAN) 是它的舞台,网段内靠 MAC 一跳直达。
理解了「帧」与「MAC 寻址」这两个核心概念后,下一页我们钻进帧的内部,看看一个以太网帧到底由哪些字段组成、各字段干什么用 —— 以太网帧结构。