理论课40分钟

13课:MAC地址与以太网帧

数据链路层基础

教学目标

1理解MAC地址的格式和作用
2掌握以太网帧的结构
3了解帧的发送和接收过程

📖 课前导入

物理层负责传输比特流(0和1),但仅仅传输比特是不够的——你怎么知道一串比特从哪里开始、到哪里结束?传输过程中出了错怎么办?

这些问题由数据链路层来解决。它把原始比特流组织成有结构的帧(Frame),就像把散乱的文字装入信封一样。

今天我们来学习数据链路层的两个核心概念:MAC地址以太网帧

📚 一、MAC地址详解 ⭐核心概念

什么是MAC地址?

MAC地址(Media Access Control Address),也叫物理地址硬件地址,是网卡出厂时由厂商烧录在硬件中的全球唯一标识

就像每个人都有唯一的身份证号,每个网卡也有唯一的MAC地址。

MAC地址的格式

00:1A:2B:3C:4D:5E

00:1A:2B

OUI(厂商标识)

由IEEE分配

3C:4D:5E

设备序列号

由厂商分配

长度:48位(6字节),通常用12个十六进制数表示

分隔符:冒号(00:1A:2B:3C:4D:5E)或连字符(00-1A-2B-3C-4D-5E)

前3字节(OUI):组织唯一标识符,标识网卡厂商

后3字节:厂商自行分配的设备序列号

唯一性:理论上全球不会有两个相同的MAC地址

单播地址

第一字节最低位为0,表示发送给单个设备

如:00:1A:2B:3C:4D:5E

广播地址

全F:FF:FF:FF:FF:FF:FF,表示发送给所有设备

交换机收到广播帧会转发到所有端口

组播地址

第一字节最低位为1(但不全F),发送给一组设备

如:01:00:5E:xx:xx:xx

小贴士

查看你的MAC地址

Windows中使用以下命令查看:

查看本机MAC地址
// 模拟终端 - 点击"执行下一条"或按回车运行命令
// 共 2 条命令,已执行 0
C:\>

📚 二、以太网帧结构 ⭐核心内容

以太网(Ethernet)

以太网是目前最主流的局域网技术,由Xerox、DEC和Intel联合开发,后被IEEE标准化为802.3标准。我们日常使用的有线局域网几乎都是以太网。

以太网帧(Ethernet II)结构

前导码

7字节

SFD

1字节

目的MAC

6字节

源MAC

6字节

类型

2字节

数据(有效载荷)

46~1500字节

FCS

4字节

前导码(Preamble)+ SFD —— 8字节

7字节前导码(10101010重复)用于时钟同步,1字节帧起始定界符SFD(10101011)标记帧的开始。接收方据此知道"正式数据来了"。

目的MAC地址 —— 6字节

接收方的MAC地址。交换机根据这个字段决定转发到哪个端口。

源MAC地址 —— 6字节

发送方的MAC地址。交换机根据这个字段学习MAC地址表。

类型(Type)—— 2字节

标识上层协议类型。常见值:0x0800=IPv4,0x0806=ARP,0x86DD=IPv6。

数据(Data / Payload)—— 46~1500字节

上层协议的数据(如IP数据包)。最小46字节(不足需填充),最大1500字节(即MTU,最大传输单元)。

帧校验序列(FCS)—— 4字节

使用CRC-32循环冗余校验算法计算,用于检测帧在传输过程中是否发生了错误。接收方重新计算CRC并与FCS对比,不一致则丢弃该帧。

注意

重要数值记忆

• 以太网帧最小长度:64字节(不含前导码和SFD)

• 以太网帧最大长度:1518字节(不含前导码和SFD)

• MTU(最大传输单元):1500字节(数据字段最大值)

• MAC地址长度:48位 = 6字节

• 广播MAC地址:FF:FF:FF:FF:FF:FF

以太网帧结构Wireshark实战分析

使用Wireshark抓包,展开Ethernet II层,逐字段分析目的MAC、源MAC、类型、数据和FCS

8:00
以太网帧结构Wireshark实战分析推荐视频8:00

使用Wireshark抓包,展开Ethernet II层,逐字段分析目的MAC、源MAC、类型、数据和FCS

📚 三、ARP协议——IP到MAC的桥梁

为什么需要ARP?

网络层使用IP地址标识主机,数据链路层使用MAC地址转发帧。当你要发送数据给192.168.1.20时,你知道对方的IP,但不知道对方的MAC地址——怎么填帧头?

ARP(Address Resolution Protocol,地址解析协议)就是用来解决这个问题的:通过IP地址查找对应的MAC地址。

ARP工作过程

第1步:发送ARP请求(广播)

PC-A想知道192.168.1.20的MAC地址,于是广播一个ARP请求帧:

"我是192.168.1.10(MAC:AA:AA:AA:AA:AA:AA),谁是192.168.1.20?请把你的MAC地址告诉我!"

目的MAC填 FF:FF:FF:FF:FF:FF(广播),网内所有设备都能收到。

第2步:目标回复ARP应答(单播)

IP为192.168.1.20的PC-B收到后,单播回复:

"我是192.168.1.20,我的MAC地址是BB:BB:BB:BB:BB:BB。"

其他设备发现不是问自己的,直接忽略。

第3步:缓存到ARP表

PC-A收到回复后,将 192.168.1.20→BB:BB:BB:BB:BB:BB 的映射缓存到ARP表中。下次再给192.168.1.20发数据时,直接查ARP表就行,不用再广播了。

ARP缓存有有效期,过期后会删除(Windows默认约2分钟)。

ARP相关命令
// 模拟终端 - 点击"执行下一条"或按回车运行命令
// 共 2 条命令,已执行 0
C:\>
知识点

ARP欺骗攻击(了解)

由于ARP协议没有认证机制,攻击者可以发送伪造的ARP应答,让受害者将网关的IP映射到攻击者的MAC地址上,从而截获所有流量。这就是ARP欺骗(ARP Spoofing),也叫中间人攻击的一种形式。

防范方法:使用静态ARP绑定、部署ARP防护软件、启用交换机的DAI(动态ARP检测)功能。

✅ 课堂小测

随堂测验

1/6

MAC地址的长度是多少?

📋 本课小结

1

MAC地址:48位物理地址,全球唯一,前3字节标识厂商,后3字节标识设备。

2

以太网帧:目的MAC + 源MAC + 类型 + 数据 + FCS,最小64字节,MTU=1500字节。

3

ARP协议:通过广播请求和单播应答实现IP→MAC地址解析,结果缓存在ARP表中。

4

CRC校验:FCS字段用CRC-32检测传输错误,错误帧直接丢弃。

🤔 课后思考

  1. 用 Wireshark 抓包,找到一个以太网帧,查看其目的MAC、源MAC和类型字段的值。
  2. 执行 arp -d * 清除ARP缓存,然后 ping 某台设备,再用 arp -a 查看新学到的ARP条目。
  3. 如果以太网帧传输中出现了1个比特的错误,CRC校验能检测到吗?(提示:CRC-32可以检测所有单比特和双比特错误)