Mac地址会不会重复?怎么做到全球唯一的?

4,242 阅读4分钟

问大家一个计算机的基础知识:IP 地址和 Mac 地址为什么会产生?相信很多小伙伴都知道:IP 地址和 Mac 地址产生的目的是方便别人找到自己

Mac 地址有点像身份证号码,而 IP 地址就像门牌号码。在茫茫大海中仅凭一个身份证号码找到一颗别样的沙粒很难,但如果先找到具体的沙滩,沙滩划分很小的网格片区,就很容易通过身份证找到这颗别样的沙粒了。

图片

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 地址。

step1:源主机首先会向局域网中发送 ARP 的广播请求,只要目标 mac 地址是 FF:FF:FF:FF:FF:FF,局域网内的所有设备都会受到这个请求。

step2:接收到 ARP 请求的设备会检查目的 IP 地址和自己的 IP 地址是否一致,不一致就会忽略当前的 ARP 请求,一致就会向源主机发送 ARP 响应。

step3:源主机接收到 ARP 响应后就会更新本地缓存表并继续向目的主机发送数据。

图片

在局域网中如果采用集线器来连接不同的网络设备,相同的 MAC 地址一般不会出现太多的问题,因为在集线器连接的局域网中所有的数据帧都会被广播给局域网内的全部主机,而如果通过交换机连接不同的网络设备就会受到影响,因为交换机需要学习局域网中不同设备的 Mac 地址并将数据帧转发给特定的主机。

图片

所以 Mac 地址其实是可以重复使用的,只是不能在同一个局域网中使用相同的 MAC 地址,而跨局域网的网络传输则需要通过网络层的 IP 协议,所以在不同的局域网使用相同的 Mac 地址就不存在类似的问题。

Mac 地址会有重复

按照 IEEE 的协定每个网络设备出厂都会有全球唯一的 Mac 地址,并且使用过的也不会再重复使用。但不意味着 Mac 地址就不会出现重复了,很多小伙伴们都改过 Mac 地址,有的直接可以通过系统进行修改。

图片

有的网络设备允许你在管理后台手动的修改 mac 地址。

图片

以上这些都是通过虚拟的方式覆盖原有的 Mac 地址,并没有更改掉设备出身时烙印的 Mac 地址。出身时烙印的 Mac 地址也并不是不能修改,通过硬件写入的方式同样的可以修改 Mac 地址,本质上 Mac 地址就是一串二进制数,存放在了 bios 的某个存储区域内。

图片