Mac地址会不会重复?怎么做到全球唯一的?
Mac地址会不会重复?怎么做到全球唯一的?
MAC地址是网络设备的唯一标识符,由厂商向IEEE申请并写入设备BIOS中。虽然理论上每个MAC地址都是全球唯一的,但在实际应用中,由于技术限制和人为因素,MAC地址的唯一性可能会受到挑战。本文将深入探讨MAC地址的分配机制、其在局域网中的作用以及可能存在的重复问题。
MAC 地址(物理地址、硬件地址)是实实在在的网络设备出身地址,它是由厂商写入网络设备的 BIOS 中。
网络设备厂商也并不能随意的使用 Mac 地址,需要向 IEEE 申请,当然厂商申请需要付费。
Mac 地址通常表示为 12 个 16 进制数,每 2 个 16 进制数之间用冒号隔开,前 6 位 16 进制数代表了网络硬件制造商的编号,由 IEEE 分配,而后 3 位 16 进制数是由网络产品制造产商自行分配。这样就可以保证世界上每个网络设备具有唯一的 MAC 地址,比如一台电脑的网卡坏掉了之后,更换一块网卡之后 MAC 地址就会变。
IP 地址是出于拓扑设计出来的,它为互联网上每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。对于路由器、电脑等网络设备,只要 IP 地址不重复情况下,IP 地址是可以随意的修改。
网络的变迁
早期的以太网只有集线器(Hub)、没有交换机(Switch),所以发出去的包能被以太网内所有的机器监听到,所以数据包就需要带上源 mac 地址和目的 mac 地址,每个机器只需要接受和自己的 MAC 地址相匹配的数据包。
局域网数据传输并不是通过网络层的 IP 地址进行路由和转发,想要在局域网中发送数据,还需要知道设备的 mac 地址。比如我们的电脑向其他局域网中的其他电脑发送数据时,它会先通过 ARP(地址解析协议)在局域网中获取目的 IP 地址所对应的 MAC 地址。
ARP协议的工作流程
- 源主机首先会向局域网中发送 ARP 的广播请求,只要目标 mac 地址是 FF:FF:FF:FF:FF:FF,局域网内的所有设备都会受到这个请求。
- 接收到 ARP 请求的设备会检查目的 IP 地址和自己的 IP 地址是否一致,不一致就会忽略当前的 ARP 请求,一致就会向源主机发送 ARP 响应。
- 源主机接收到 ARP 响应后就会更新本地缓存表并继续向目的主机发送数据。
在局域网中如果采用集线器来连接不同的网络设备,相同的 MAC 地址一般不会出现太多的问题,因为在集线器连接的局域网中所有的数据帧都会被广播给局域网内的全部主机,而如果通过交换机连接不同的网络设备就会受到影响,因为交换机需要学习局域网中不同设备的 Mac 地址并将数据帧转发给特定的主机。
所以 Mac 地址其实是可以重复使用的,只是不能在同一个局域网中使用相同的 MAC 地址,而跨局域网的网络传输则需要通过网络层的 IP 协议,所以在不同的局域网使用相同的 Mac 地址就不存在类似的问题。
Mac 地址的重复问题
按照 IEEE 的协定每个网络设备出厂都会有全球唯一的 Mac 地址,并且使用过的也不会再重复使用。但不意味着 Mac 地址就不会出现重复了,很多用户都曾手动修改过 Mac 地址,有的直接可以通过系统进行修改。