网卡物理地址和MAC地址的几点感想

来源:互联网 发布:excel删除部分重复数据 编辑:程序博客网 时间:2024/04/26 05:50

    网卡物理地址指的是网卡存放在存储器里的地址,而MAC地址是网卡工作的时候用的地址,当然一般情况下这两个地址是一样的。

    这里要说的是存储器通常是指EEPROM,我想只要你乐意将网卡物理地址其他存储器也是可以的。 

    事实上存放在EEPROM内的物理地址是什么并不非常重要。因为网卡工作的时,只会加入CRC和前导码(这个到底是网片的逻辑加的,还是电路设计加入,不是很清楚)。通常的数据链路层所看到的源地址和目的地址都是驱动程序加的。因此我们可以将任意一个网卡使用任意的MAC地址。

    例如:在Windows系统,在初次安装网卡和使用网卡时(具体的实现细节可能会有出入,应该是可以检测出有变化和注册表值无效都会重新读入),Windows操作系统会将网卡物理地址读入,并写入注册表。以后需要发送报文时将在注册表中读入。

    在我工作使用的嵌入式系统内部实现有这样几种情况:

    1、每次初始化网口,读取EEPROM内部物理地址至内存,以后使用内存读取到的MAC地址通讯

    2、每次初始化网口,不读取EEPROM内部物理地址,而是按照一定规则计算得出MAC地址通讯

    3、是1和2的综合,在操作系统初始化阶段采用1,而当应用层初始化时候,再次初始化网口,重新计算并使用新的MAC地址通讯。

    2和3计算法得出的MAC地址又存在2种处理,1、写入EEPROM,2、不写入仅使用。推荐使用不写入的方法,因写入后多次测试更换后将可能出现使用的MAC地址冲突情况,这个已经见过很多次了。

总结

    1、驱动在填入源地址和目的地址时,使用的都是内存中的MAC地址,一般情况不会再去读取真实的物理地址。

    2、使用的MAC地址可以是从EEPROM读取得,也可以是设置的,计算的,只要你所想都是可以的,但注意最好不要将数据写入到EEPROM。

原创粉丝点击