MAC地址原理,应用简介
大家都知道在现实的生活中,我们每个人都有属于自己的一个ID号--身份证号码,你可以去派出所把你的姓名改了,但是你的身份证号却不能随着你自己的姓名更改而更改。在网络世界中,我们常常可以听到IP地址的概念,不过MAC地址这个专业术语却很少被人提起,我们往往只知道IP地址,而MAC地址则是幕后英雄。正如我们在日常交流的时候,常常叫别人的姓名而不会去称呼别人的身份证号道理是一样的。
IP地址与MAC地址
在日常的计算机使用过程中,大家都知道IP地址只要规划合理,你可以任意更改IP地址。修改的方法也是比较简单的,只要在对应网卡的TCP/IP协议上双击一下然后修改参数就行了。那么MAC地址与IP地址同为地址,它们之间有什么地方相似又有什么地方不同呢?下面就让我们一起来看看吧,了解它们的差异与类似之处便于我们更好的掌握。在OSI(Open
System Interconnection,开放系统互连)7层网络协议参考模型中(如图1),第二层为数据链路层(Data Link)。MAC地址也叫物理地址、硬件地址或链路地址,由网络设备制造商生产时写在硬件内部。IP地址与MAC地址在计算机里都是以二进制表示的,IP地址是32位的,而MAC地址则是48位的。MAC地址的长度为48位(6个字节),通常表示为12个16进制数,每2个16进制数之间用冒号隔开,如:08:00:20:0A:8C:6D就是一个MAC地址,其中前6位16进制数08:00:20代表网络硬件制造商的编号,它由IEEE(电气与电子工程师协会)分配,而后3位16进制数0A:8C:6D代表该制造商所制造的某个网络产品(如网卡)的系列号。只要你不去更改自己的MAC地址,那么你的MAC地址在世界是惟一的。
MAC地址的作用
IP地址就如同一个职位,而MAC地址则好像是去应聘这个职位的人才,职位可以既可以让甲坐,也可以让乙坐,同样的道理一个节点的IP地址对于网卡是不做要求,基本上什么样的厂家都可以用,也就是说IP地址与MAC地址并不存在着绑定关系。本身有的计算机流动性就比较强,正如同人才可以给不同的单位干活的道理一样的,人才的流动性是比较强的。职位和人才的对应关系就有点像是IP地址与MAC地址的对应关系。比如,如果一个网卡坏了,可以被更换,而无须取得一个新的IP地址。如果一个IP主机从一个网络移到另一个网络,可以给它一个新的IP地址,而无须换一个新的网卡。当然MAC地址除了仅仅只有这个功能还是不够的,就拿人类社会与网络进行类比,通过类比,我们就可以发现其中的类似之处,更好地理解MAC地址的作用。无论是局域网,还是广域网中的计算机之间的通信,最终都表现为将数据包从某种形式的链路上的初始节点出发,从一个节点传递到另一个节点,最终传送到目的节点。数据包在这些节点之间的移动都是由ARP(Address
Resolution
Protocol:地址解析协议)负责将IP地址映射到MAC地址上来完成的。其实人类社会和网络也是类似的,试想在人际关系网络中,甲要捎个口信给丁,就会通过乙和丙中转一下,最后由丙 转告给丁。在网络中,这个口信就好比是一个网络中的一个数据包。数据包在传送过程中会不断询问相邻节点的MAC地址,这个过程就好比是人类社会的口信传送过程。相信通过这两个例子,我们就可以进一步理解MAC地址的作用。
与MAC地址相关的命令与软件
在人类社会社交中,我们认识一个人往往只会知道他的姓名,而身份证号码在一般的人际交往中会被忽略。同样在网络中,我们往往只会知道同事或者网友的IP地址,并不会去过多地关心对方的MAC地址。要成长为网络高手,我们可以使用一些方法去了解对方的MAC地址。在这里介绍两种常用的方法,在Windows
9x 中可用WinIPcfg获得,在Windows 2000/XP中可用IPconfig -all获得(如图2)。
使用命令只能单条获得MAC地址,而且使用起来也是很麻烦的。对于网管人员,更希望有一款简单化操作的软件,我们可以利用“MAC扫描器”远程批量获取MAC地址。它是用于批量获取远程计算机网卡物理地址的一款网络管理软件。该软件运行于网络(局域网、Internet都可以)内的一台机器上,即可监控整个网络的连接情况,实时检测各用户的IP、MAC、主机名、用户名等并记录以供查询(如图3),可以由用户自己加以备注;能进行跨网段扫描,能和数据库中得IP和MAC地址进行比较,有修改IP的或使用虚假MAC地址的,都能报警。
图1 OSI网络协议参考模型

图2 在Windows 2000/XP系统下查看本机网卡物理地址

图3 MAC扫描器可批量获取计算机网卡物理地址

更改MAC地址
一般MAC地址在网卡中是固定的,当然也有网络高手会想办法去修改自己的MAC地址。修改自己的MAC地址有两种方法,一种是硬件修改,另外一种是软件修改。硬件的方法就是直接对网卡进行操作,修改保存在网卡的EPROM里面的MAC地址,通过网卡生产厂家提供的修改程序可以更改存储器里的地址。那么什么叫做EPROM呢?EPROM是电子学中一种存储器的专业术语,它是可擦写的,也就是说一张白纸你用钢笔写了一遍以后就不能再用橡皮擦去了,而EPROM这张白纸用铅笔写后可以再擦去,可以反复改变其中数据的存储器。当然软件修改的方法就相对来说要简单得多了,在Windows中,网卡的MAC保存在注册表中,实际使用也是从注册表中提取的,所以只要修改注册表就可以改变MAC。Windows
9x中修改:打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\
CurrentControlSet\Service\Class\Net\下的0000,0001,0002。
Windows 2000/XP中的修改:同样打开注册表编辑器,HKEY_LOCAL_
MACHINE\SYSTEM\CurrentControlSet\Control\Class\4D36E970-E325-11CE-BFC1-08002BE10318
中的0000,0001,0002中的DriverDesc,如果在0000找到,就在0000下面添加字符串变量,命名为“NetworkAddress”,值为要设置的MAC地址,例如:000102030405
完成上述操作后重启就好了。一般网卡发出的包的源MAC地址并不是网卡本身写上去的,而是应用程序提供的,只是在通常的实现中,应用程序先从网卡上得到MAC地址,每次发送的时候都用这个MAC作为源MAC而已,而注册表中的MAC地址是在Windows安装的时候从网卡中读入的,只要你的操作系统不重新安装应该问题不大。
MAC地址的应用
平日身份证的作用并不是很大,但是到了有的关键时刻,身份证就是用来证明你的身份的。比如你要去银行提取现金,这时就要用到身份证。那么MAC地址与IP地址绑定就如同我们在日常生活中的本人携带自己的身份证去做重要事情一样的道理。有的时候,我们为了防止IP地址被盗用,就通过简单的交换机端口绑定(端口的MAC表使用静态表项),可以在每个交换机端口只连接一台主机的情况下防止修改MAC地址的盗用,如果是三层设备还可以提供:交换机端口/IP/MAC
三者的绑定,防止修改MAC的IP盗用。一般绑定MAC地址都是在交换机和路由器上配置的,是网管人员才能接触到的,对于一般电脑用户来说只要了解了绑定的作用就行了。比如你在校园网中把自己的笔记本电脑换到另外一个宿舍就无法上网了,这个就是因为MAC地址与IP地址(端口)绑定引起的。
一、简单的修改方法
其实不论 98 还是 2000 ,自身都已经提供了更改网卡地址的功能,只是平时大家都没上这方面想,因此没有注意到而以,很简单的哦 .....
现在我们先来看看 WIN2000
。在桌面上的网上邻居图标上单击右键,选择“属性”,在弹出的“网络和拨号连接”窗口中一般有两个图标,一个是“新建连接”图标,一个是“我的连接”图标。当然了,如果你的机器上有两个网卡的话,那就有三个图标了。现在假设你只有一个网卡,那就在“我的连接”图标上单击右键,选择“属性”,这时会弹出一个“我的连接属性”的窗口。在窗口下面有一个“配置”按钮,点击该按钮后就进入了网卡的属性对话框了,这个对话框中有五个属性页,点击第二项“高级”页,在“属性”标识下有两项或多项,现在你应该能看到一个叫“
Network Address ”的属性项了吧,点击该项,在对话框右边的“值”标识下有两个单选项,默认是“不存在”
,现在你只要选中上面一个单选项,然后在右边的框中输入你想改的网卡 MAC 地址(注意要连续输入,不要带“-”),如“ 00E0404000A0 ”,点“确定”,
OK !你已经大功告成了!
在 98 下面的修改和 WIN2000
下差不多。在“网上邻居”图标上单击右键,选择“属性”,弹出一个“网络”对话框,在“配置”框中,双击你要修改的网卡,出来一个网卡属性对话框。在“高级”选项中,也是点击“属性”标识下的“
Network Address ”项,在右边的两个单选项中选择上面一个,再在框中输入你要修改的网卡 MAC
地址,点“确定”后,系统会提示你重新启动。接下来就不用我说了吧!:)(重启后你可以用“ winipcfg ”看看修改的结果)
如果你想把网卡的 MAC 地址恢复原样,只要选择“ Network Address ”项右边的“没有显示”再重新启动即可。在 WIN2000
下面是选择“不存在”,当然也不用重新启动了。 二、注册表修改的方法
由于驱动或网卡的关系,有的机器中没有“ Network Address ”项,那我们只有通过修改注册表来进行修改了。
◆ Windows2000 的修改
1 、在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0000
、 0001 、 0002 等主键下,查找 DriverDesc ,内容为你要修改的网卡的描述,如“ Realtek RTL8029(AS)-based PCI
Ethernet Adapter ”。
2 、在其下,添加一个字符串,命名为 NetworkAddress ,其值设为你要的 MAC 地址(注意地址还是连续写)。如: 00E0DDE0E0E0 。
3 、然后到其下 Ndi\params 中添加一项名为 NetworkAddress 的主键,在该主键下添加名为 default 的字符串,其值是你要设的
MAC 地址,要连续写,如: 000000000000 。(实际上这只是设置在后面提到的高级属性中的“初始值”,实际使用的 MAC 地址还是取决于在第 2
点中提到的 NetworkAddress 参数,这个参数一旦设置后,以后高级属性中的值就是 NetworkAddress 给出的值而非 default
给出的了。)
4 、在 NetworkAddress 的主键下继续添加名为 ParamDesc 的字符串,其作用为指定 NetworkAddress
主键的描述,其值可自己命名,如“ Network Address ”,这样在网卡的高级属性中就会出现 Network Address
选项,就是你刚在注册表中加的新项 NetworkAddress ,以后只要在此修改 MAC 地址就可以了。继续添加名为 Optional 的字符串,其值设为“
1 ”,则以后当你在网卡的高级属性中选择 Network Address 项时,右边会出现“不存在”选项。
5 、重新启动你的计算机,打开网络邻居的属性,双击相应网卡项会发现有一个 Network Address 的高级设置项,可以用来直接修改 MAC
地址或恢复原来的地址。
◆ Win9x 的修改
1 、在 HKEY_LOCAL_MACHINE\system\Currentcontrolset\services\class\net\0000 、
0001 、 0002 等下,找到 DriverDesc 字符串。
2 、在其下,添加一个字符串,名字为 NetworkAddress ,其值设为你要的 MAC 地址,注意要连续写。如: 00E0DDE0E0E0 。
3 、然后到其下 Ndi\params 中添加一项名为 NetworkAddress 的主键,在该主键下添加名为 default 的字符串,其值写你要设的
MAC 地址,注意要连续的写,如 00E0DDE0E0E0 。
4 、继续添加名为 ParamDesc 的字符串,其作用为指定 NettworkAddress 主键的描述,其值可自己命名,如“ Network
Address ”,这样以后打开网络邻居的属性,这样在网卡的高级属性中就会出现 Network Address 选项,就是你刚在注册表中加的新项
NetworkAddress ,以后只要在此修改 MAC 地址就可以了。
继续添加名为 Optional 的字符串,其值设为“ 1 ”,则以后当你在网卡的高级属性中选择 Network Address
项时,右边会出现“没有显示”选项。
◆ WinNT 下改网卡地址的方法:
1 、打开注册表,定位到 HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->Services
2 、找到网卡的键值,在 Parameters 项里添加字串值 NetworkAddress ,其值设为你要修改的 MAC 地址,如:“
00E0DDE0E0E0 ”。