组播、单播和广播
MAC地址分成三类,分别是广播地址、组播地址和单播地址。
首先,FF:FF:FF:FF:FF:FF毫无疑问是广播地址。每个网卡出厂时被分配唯一一个单播地址,头24位是设备制造厂商的编号,由IEEE(电气与电子工程师协会)分配,后24位是设备厂商为网卡制定的唯一编号。例如20-89-84-F2-C7-9F是单播地址的例子,其中20-89-84是厂商的编号。单播地址的特征是头8位的最低位为0,于是单播地址共有47位的地址空间。最后一类地址是组播地址。MAC组播地址的特征是头8位的最低位是1,于是MAC组播地址空间相当巨大——除去全1的47位地址空间。例如01-80-C2-00-00-00是一个组播地址,表示802.1d网桥多播组。网桥就是使用这个地址,相互之间交换配置信息,运行分布式生成树算法,消除网络拓扑结构中的环路。
IP层也有单播、组播和广播的概念。IP组播的目的地址是一组地址——D类地址。D类地址是从224.0.0.0到239.255.255.255之间的IP地址,其中224.0.0.0到224.0.0.255是被保留的地址:
224.0.0.1表示子网中所有的组播组
224.0.0.2表示子网中的所有路由器
224.0.0.5表示OSPF(Open Shortest Path First)路由器
224.0.0.6表示OSPF指定路由器
224.0.0.12表示DHCP(Dynamic Host Configuration Protocol)服务器.
由上可知,MAC组播的地址范围(47位)要远远多于IP组播地址范围(28位),这是因为MAC是二层协议,其对应的上层协议除IP协议外,还有其他协议。
通常用于IP组播的以太网的组播MAC地址以01.00.5E开头,后23位对应IP地址后23位。如:
IP地址: 1110yyyy.yxxxxxxx.xxxxxxx.xxxxxxxx
MAC地址: 00000001.00000000.01011110.0xxxxxxx.xxxxxxx.xxxxxxxx
给定一个IP组播地址,将其低23位与01:00:5E:00:00:00的低位取“与”运算,即可的到一个 MAC组播地址。但IP组播地址有28位地址空间,对应的MAC组播地址却只有23位,这样每32个IP组播地址被映射到同一MAC地址上。MAC组播地址空间远远大于IP组播地址空间。如果网络层仅有IP协议,那么完全能将IP组播地址一对一地映射到MAC组播地址!但MAC地址是一个数据链路层的概念,其上层的网络层远远不只有IP。
LINUX下修改网卡MAC地址
设置mac地址时,会检查它的类型,如果是广播或组播地址或全0的MAC,就会判断它无效。
方法一:
1.关闭网卡设备
ifconfig eth0 down
2.修改MAC地址
ifconfig eth0 hw ether MAC地址
3.重启网卡
ifconfig eth0 up
方法二:
以上方法一修改后linux重启后MAC又恢复为原来的,为了下次启动时修改后的MAC仍有效,我们可以修改文件file:/etc/rc.d/rc.sysinit(RedFlag Linux为这个文件,其他版本的linux应该不同)的内容,在该文件末尾加以下内容:
ifconfig eth0 down
ifconfig eth0 hw ether MAC地址
ifconfig eth0 up
方法三:
很简单的,在./etc/sysconfig/network-scripts/ifcfg-eth0中加入下面一句话:
MACADDR=00:AA:BB:CC:DD:EE
WINDOWS下修改MAC地址
1、 右击本地连接,选择属性;
2、 在弹出的属性对话框中选择配置;
3、 在弹出的对话框中,点击“高级”标签,选择“本地管理的地址”,选择“值”,然后在对话框中输入新的MAC地址即可,此操作重新启动不会失效。注意输入MAC地址连续输入即可,不需要填加间隔横线。