1、基本介绍
连接在信道上的主机只有它们两个
一个数据链路层地址:
- 当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个
唯一的标识
,
在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制 MAC
(Media Access Control),因此这类地址被称为 MAC
地址;
若主机 C
要发送给主机 D
的帧。
- 在帧首部中的目的地址字段添加主机
D
的MAC
地址 - 在源地址字段应填入主机
C
自己的MAC
地址
这样,总线上其他主机收到该帧后,就可以根据帧首部的目的地址字段的值是否与自己的 MAC
地址匹配
- 进而丢弃或接受该帧
MAC
地址一般被固化在网卡( 网络适配器 )
的电可擦可编程只读存储器EEPROM
中,因此MAC
地址也
被称为硬件地址;
-
MAC
地址有时也被称为物理地址
。- 注意: 这 并 不 意 味 着 M A C 地 址 属 于 网 络 体 系 结 构 中 的 物 理 层 ! \color{red}这并不意味着 MAC 地址属于网络体系结构中的物理层! 这并不意味着MAC地址属于网络体系结构中的物理层!
一般情况下,用户主机会包含两个网络适配器:
- 有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。
每个网络适配器
都有一个全球唯一的 MAC
地址。而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的 MAC
地址。
综上所述, 严 格 来 说 , M A C 地 址 是 对 网 络 上 各 接 口 的 唯 一 标 识 , 而 不 是 对 网 络 上 各 设 备 的 唯 一 标 识 。 \color{red}严格来说,MAC 地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。 严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
2、IEEE 802 局域网的 MAC 地址格式
IP
地址(网络标识), MAC
地址(硬件设备的地址)
我们可以在 IEEE 的官网查看已分配的组织唯一标识符 OUI
例如:
30
−
F
B
−
B
8
30-FB-B8
30−FB−B8 这个 OUI
已经被分配给华为科技有限公司
若我们直到设备的 MAC
地址,而不知道设备的厂商信息,可以通过设备的 MAC
地址查询
MAC
地址第一字节的 b0
位取
0
0
0 时,表示该地址是单播地址
MAC
地址第一字节的 b0
位取
1
1
1 时,表示该地址是多播地址(组播地址)
MAC
地址第一字节的 b1
位取
0
0
0 时,表示该地址是全球管理的(全球唯一)
MAC
地址第一字节的 b1
位取
1
1
1 时,表示该地址是本地管理的
全球管理 单播地址:厂商生产网络设备(网卡,交换机,路由器)时固化
全球管理 多播地址:标准网络设备所支持的多播地址,用于特定功能
- 例如:交换机生成树协议所需要的多播地址
本地管理 单播地址:由网络管理员分配,覆盖网络接口的全球管理单播地址
本地管理 多播地址:用户对主机进行软件配置,以表明其属于哪些多播组
- 注意:剩余
46
位全为 1 1 1 时,就是广播地址 F F − F F − F F − F F − F F − F F FF-FF-FF-FF-FF-FF FF−FF−FF−FF−FF−FF
-
台式机、笔记本电脑、平板电脑、智能手机等设备上的以太网接口、Wi-Fi 接口、蓝牙接口都分配有
全球单播
的MAC
地址 -
而每台交换机和路由器都拥有多个网络接口,也就拥有多个全球单播的
MAC
地址
3、IEEE 802 局域网的 MAC 地址发送顺序
字节发送顺序:第一字节 ⟶ \longrightarrow ⟶ 第六字节(从左至右)
字节内的比特发送顺序: b 0 ⟶ b 7 b_0 \longrightarrow b_7 b0⟶b7(从右至左)
4、单播 MAC 地址作用
若主机 B
要给主机 C
发送单播帧
-
主机
B
首先要构建单播帧- 在帧首部的目的地址字段填入主机 C 的
MAC
地址 - 源地址字段填入自己 的
MAC
地址 - 再加上帧首部中的其他字段,数据载荷以及帧尾部
- 在帧首部的目的地址字段填入主机 C 的
-
就构成了单播帧
主机 B
将该单播帧发送出去,主机 A
和 C
都会收到该单播帧
-
主机
A
的网卡发现该单播帧的目的MAC
地址与自己的MAC
地址不匹配- 于是丢弃该帧
-
主机
C
的网卡发现该单播帧的目的MAC
地址与自己的MAC
地址匹配- 于是接受该帧,并将该帧交给上层处理
5、广播 MAC 地址作用
若主机 B
要发送一个广播帧
-
主机
B
首先要构建广播帧- 在帧首部中的目的地址字段填入广播地址(十六进制的全 F F F)
- 源地址字段填入自己 的
MAC
地址 - 再加上帧首部中的其他字段,数据载荷以及帧尾部
-
就构成了广播帧
主机 B
将该广播帧发送出去,主机 A
和 C
都会收到该广播帧
- 发现该帧首部中的
目的地址字段
的内容是广播地址,就知道该帧是广播帧 - 接受该帧,并将该帧交给上层处理
6、多播 MAC 地址作用
若主机 A
要发送多播帧给该多播地址。
-
将该多播地址的左起第一个字节写成 8 8 8 个比特,下述可以看到最低比特位是 1 1 1
- ( 07 07 07 的 二进制为 00000111 00000111 00000111 )
-
这就表明该地址是多播地址
假设主机 B、C、D 支持 MAC 多播,各用户给自己的主机配置的多播组列表如下所示
- 可以看出,主机 B、C 属于两个多播组,主机 D 不属于任何多播组
主机 A
首先要构建该多播帧
- 在帧首部中的目的地址字段填入多播地址( 07 − E 0 − 12 − F 6 − 2 A − D 8 07-E0-12-F6-2A-D8 07−E0−12−F6−2A−D8)
- 源地址字段填入自己 的
MAC
地址 - 再加上帧首部中的其他字段,数据载荷以及帧尾部
就构成了多播帧
主机 B
、C
、D
都会收到该多播帧
- 主机
B
、C
发现该多播帧的目的MAC
地址在自己的多播组列表中- 因此,主机
B
和C
都会接受该帧,并上交上层处理
- 因此,主机
- 主机
D
发现该多播帧的目的MAC
地址不在自己的多播组列表中- 主机
D
丢弃该多播帧
- 主机
注意:
-
给 主 机 配 置 多 播 组 列 表 进 行 私 有 应 用 时 , 不 得 使 用 公 有 的 标 准 多 播 地 址 , 具 体 可 在 以 下 网 址 查 询 \color{blue}给主机配置多播组列表进行私有应用时,不得使用公有的标准多播地址,具体可在以下网址查询 给主机配置多播组列表进行私有应用时,不得使用公有的标准多播地址,具体可在以下网址查询
-
http://standards.ieee.org/develop/regauth/grpmac/public.html
7、随机 MAC 地址
据斯洛登爆料,美国国家安全局有一套系统,通过监视电子设备的 MAC
地址,来跟踪城市中每个人的行动
- 因此,苹果率先在
iOS
系列设备扫描网络时采用随机MAC
地址技术 - 随后,
Windows 10
,安卓 6.0 6.0 6.0,以及内核版本为 3.18 3.18 3.18 的Linux
系统也开始提供随机 MAC 地址功能
目前,大多数移动设备以及采用了随机 MAC
地址技术
说明:随机 MAC
地址可以防止被监听但是连接 WiFi
时真实的 MAC
地址还是可以看到的(比如校园网)
8、一句话
单播唯一,广播全部,组播列表