不同网卡厂商之间是怎么保证 MAC 地址不重复的

前言

MAC 地址存在于网卡中,由网卡生产厂家预先写入到网卡里,用来标识每一个网络设备,好让数据传送到正确的设备上。

在网络七层协议中,MAC 地址的作用位于数据链链路层(第二层),在局域网中,想正常通信,每一个网卡的 MAC 地址都要不一样。

查看本机电脑的 MAC 地址:控制面板\网络和 Internet\网络连接\网络连接详细信息\MAC 地址(物理地址),类似于:C0-B6-F9-88-48-B3。

一共 6 byte,即 48 bit,

生产网卡的厂商有很多,他们是怎么保证各自生产的网卡 MAC 地址不重复的呢?

原来如此

MAC 地址一共 48 bit

前 24 bit 叫做组织唯一标志符(Organizationally Unique Identifier,即 OUI),是由 IEEE 的注册管理委员会给不同厂家分配的代码,区分了不同的厂家。

后 24 bit 是由厂家自己分配的,称为扩展标识符。同一个厂家生产的网卡中 MAC 地址后 24 位是不同的。

网卡生产厂家想生产正规的网卡,都要向 IEEE 注册管理委员会申请 MAC 地址的 OUI 。

所以厂家只要自己不跟自己重复,就不会和世界上任何的网卡重复。

OUI 申请参考文档:https://wenku.baidu.com/view/980a79ffd0d233d4b04e6913.html

修改 MAC 地址

MAC 地址能修改吗?如果允许用户随意修改,那还怎么保证 MAC 地址不重复呢?

有些厂商把 MAC 地址等数据写在只读存储器(ROM)里,数据一旦写入就无法再修改或删除。

有些厂商把 MAC 地址等数据写在带电可擦可编程只读存储器(EEPROM)里,可写可读,但是需要专门的设备,对普通用户来说,还是相当于“只读”。

既然不能修改,那为啥网上“修改 MAC 地址”的教程还满天飞呢?

其实他们所谓的“修改 MAC 地址”,并不是真的修改了网卡的 MAC 地址。

Windows 安装的时候,会自动从网卡中读取 MAC 地址,把它存放在注册表中以备后用。

当数据在网络中传输时,从网卡发出的数据包中要求有一个源 MAC 地址,这个 MAC 地址就是从注册表中读取的(并非从网卡中读取的),因此只要修改了注册表中的 MAC 地址,就相当于改了网卡 MAC 地址,两者实际效果是完全相同的!

所以 MAC 地址可以变相的修改,以达到某些目的,但是一般情况下不要也不用修改它。

“修改 MAC 地址” 参考教程:https://jingyan.baidu.com/article/49711c619e1b20fa451b7c4b.html

发表评论