一、网卡、MAC控制器和MAC地址 提到MAC不得不涉及网卡的工作原理,网卡工作在OSI参考模型的数据链路层和网络层。这里又出现了一个概念“OSI参考模型”,在这个模型中定义了网络通讯是分层的,分别是物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。以太网数据链路层其实包含MAC(介质访问控制)子层和LLC(逻辑链路控制)子层。
物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。以太网卡中数据链路层的芯片一般简称之为MAC控制器,物理层的芯片简称之为PHY。许多网卡的芯片把MAC和PHY的功能做到了一颗芯片中,比如Intel 82559网卡的和3COM3C905网卡。但是MAC和PHY的机制还是单独存在的,只是外观的表现形式是一颗单芯片。当然也有很多网卡的MAC和PHY是分开做的,比如D-LINK的DFE-530TX等,原文中说“MAC地址对应物理层”是不确切的。
通常提到的MAC指狭义的MAC地址,其实在网卡中,一块以太网卡MAC芯片的作用不但要实现MAC子层和LLC子层的功能,还要提供符合规范的PCI界面以实现和主机的数据。 以太网MAC芯片的一端接计算机PCI总线,另外一端就接到PHY芯片上。MAC从PCI总线收到IP数据包(或者其他网络层的数据包)后,将之拆分并重新打包成最大1518Byte,最小64Byte的帧。这个帧里面包括了目标MAC地址、自己的源MAC地址和数据包里面的类型(比如IP数据包的类型用80表示)。最后还有一个DWORD(4Byte)的CRC码。
网卡上有一颗EEPROM芯片,通常是一颗93C46。里面记录了网卡芯片的供应商ID、子系统供应商ID、网卡的MAC地址、网卡的一些配置,如SMI总线上PHY的地址,BOOTROM的容量,是否启用BOOTROM引导系统等东西。
MAC和PHY集成在一颗芯片的以太网卡(点击放大)
①RJ-45接口②Transformer(隔离变压器)③PHY芯片
④MAC芯片⑤EEPROM⑥BOOTROM插槽
⑦WOL接头⑧晶振⑨电压转换芯片
⑩LED指示灯
二、机、MAC地址表和MAC地址学习 对于网络交换机来说,MAC地址表是其能否正确转发数据包的关键,为此,标准RFC2285和RFC2889中都对以太网交换机的MAC地址表深度和MAC地址学习速度进行专门的描述。 MAC地址表显示了主机的MAC地址与以太网交换机端口映射关系,指出数据帧去往目的主机的方向。当以太网交换机收到一个数据帧时,将收到数据帧的目的MAC地址与MAC地址表进行查找匹配。如果在MAC地址表中没有相应的匹配项,则向除接收端口外的所有端口广播该数据帧,有人将这种操作翻译为泛洪(Flood,泛洪操作广播的是普通数据帧而不是广播帧)。在我们测试过的交换机中,有的除了能够对广播帧的转发进行限制之外,也能对泛洪这种操作进行限制。
而当MAC地址表中有匹配项时,该匹配项指定的交换机端口与接收端口相同则表明该数据帧的目的主机和源主机在同一广播域中,不通过交换机可以完成通信,交换机将丢弃该数据帧。否则,交换机将把该数据帧转发到相应的端口。 交换机还将检查收到数据帧的源MAC地址,并查找MAC地址表中与之相匹配的项。如果没有,交换机将记录该MAC地址和接收该数据帧的端口,并激活一个定时器。这个过程被称作地址学习。这个定时器一般就是我们在配置交换机时的AgeTime选项,一般我们都可以配置这一定时器的时间长度。在定时器到时的时候,该项记录将从MAC地址表中删除。而如果接收的数据帧的源MAC地址在MAC地址表中有匹配项,交换机将复位该地址的定时器。
三、IP地址、MAC地址和三层交换技术 一台计算机想要接入到网络中,必须要有两个地址。一个是网卡的地址,也就是MAC地址。在以太网中,我们通过MAC地址来进行数据传送和数据交换。在以太网环境中,数据会分帧传送,每一个数据帧都会包含自己的MAC和目的MAC地址信息; 另外一个地址是平时所说的IP地址,定义在网络层,每一台网络计算机都会有一个或者多个IP地址,这是一个虚拟的数据,并且可以随时更改。在硬件层次上进行的数据帧交换必须有正确的接口地址。但是,TCP/IP有自己的地址: 32 bit的IP地址。知道主机的IP地址并不能让内核发送一帧数据给主机。内核(如以太网驱动程序)必须知道目的端的硬件地址才能发送数据。ARP的功能是在32 bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射。点对点链路不使用ARP。当设置这些链路时(一般在引导过程进行),必须告知内核链路每一端的IP地址。像以太网地址这样的硬件地址并不涉及。
IP地址和MAC地址是同时使用的,在数据传送过程中,一个完整的TCP/IP包需要由以太网进行数据封装,数据分帧,最后再通过物理层传输到目标计算机。在以太网封装上层的TCP/IP包的时候,它需要知道源MAC地址和目的MAC地址,但是我们只能给出一个对方的IP地址,这个时候就需要一个协议来支持IP到MAC的转换,这就是ARP,Address Resolution Protocol. ARP协议是介乎于网络层和数据链路层的一个协议。第一次传送某个目的IP地址的数据的时候,先会发出一个ARP包,其MAC的目标地址是广播地址,里面说到:"谁是xxx.xxx.xxx.xxx这个IP地址的主人?"因为是广播包,所有这个局域网的主机都收到了这个ARP请求。
收到请求的主机将这个IP地址和自己的相比较,如果不相同就不予理会,如果相同就发出ARP响应包。这个IP地址的主机收到这个ARP请求包后回复的ARP响应里说到:"我是这个IP地址的主人"。这个包里面就包括了他的MAC地址。以后的给这个IP地址的帧的目标MAC地址就被确定了。其它的协议如IPX/SPX也有相应的协议完成这些操作。
IP地址和MAC地址之间的关联关系保存在主机系统里面,叫做ARP表,由驱动程序和操作系统完成。在Microsoft的系统里面可以用 arp -a 的命令查看ARP表。收到数据帧的时候也是一样,做完CRC以后,如果没有CRC效验错误,就把帧头去掉,把数据包拿出来通过标准的借口传递给驱动和上层的协议客栈,最终正确的达到我们的应用程序。还有一些控制帧,例如流控帧也需要MAC直接识别并执行相应的行为。
三层交换机工作过程的简单概括:如果目的IP地址显示不是同一网段的,那么A要实现和B的通讯,在流缓存条目中没有对应MAC地址条目,就将第一个正常数据包发送向一个缺省网关,这个缺省网关一般在操作系统中已经设好,对应第三层模块,所以可见对于不是同一子网的数据,最先在MAC表中放的是缺省网关的MAC地址;然后就由三层模块接收到此数据包,查询路由表以确定到达B的路由,将构造一个新的帧头,其中以缺省网关的MAC地址为源MAC地址,以主机B的MAC地址为目的MAC地址。通过一定的识别触发机制,确立主机A与B的MAC地址及转发端口的对应关系,并记录进流缓存条目表,以后的A到B的数据,就直接交由二层交换模块完成。这就通常所说的一次路由多次转发。
四、真实MAC地址、注册表MAC地址和MAC地址的修改 MAC地址固化在网卡中的BIOS中,可以通过命令取得,但是,通过命令取得的MAC地址不一定是真实的MAC地址,因为在网卡初始化过程中,操作系统确实读取了网卡中MAC地址,但是在以后通讯过程中使用的MAC地址却是从初始化过程结束后建立的缓冲区中读取,而缓冲区中MAC地址可能是注册表定义的MAC地址,而不是真实的MAC地址,这个过程由网卡驱动程序完成。这也是WIN操作系统的MAC地址可以被轻易修改的原因。
WIN98/ME/2k/XP/2003用户都可以使用ipconfig/all命令获取MAC地址,XP/2003用户有更简单的方法:右键本地连接图标、选择状态然后点击支持选项卡,这里“详细信息”中包含有MAC和其它重要网络参数。
大部分的网卡都可以通过在控制面板中修改网卡属性来更改其MAC地址。在“设备管理器中”,右键点击需要修改MAC地址的网卡图标,并选择“属性/高级”选项卡。在“属性”区,就可以看到一个称作“Network Address”或其他相类似名字的的项目,点击它,在右侧“值”的下方,输入要指定的MAC地址值。要连续输入12个十六进制数字或字母,不要在其间输入“-”。
重新启动系统后设置就会生效了。参考上面发的图比较有明显的变化,显然图中显示的是修改过的MAC地址。
五、MAC地址的捆绑、ARP命令缺陷和MAC地址重复 MAC地址绑定与IP地址绑定类似,MAC地址绑定也分为有关MAC地址绑定、无关MAC地址绑定、MAC地址静态绑定和MAC地址动态绑定。服务器有关MAC地址绑定在政务网或园区网中的应用较多,可将用户的使用权限和机器的MAC地址绑定起来,限制用户只能在固定的机器上网,保障,防止帐号盗用。由于MAC地址可以修改,因此这个方法可以起到一定的作用,但仍有漏洞。
关于在WINDOWS 2000 SERVER 下用ARP -S捆绑MAC和IP的方法需要具体分析,否则可能起不到绑定定作用。以WINDOWS 2000server为例,WIN主机用IP+MAC的方式限制上网,很容易被用户突破。这里需要说明的是有3种情况:
1、 服务器用ARP -S 做IP+MAC捆绑后,如果用户自己改IP,保持MAC不变,这种情况下,ARP -S的捆绑被用户轻
【责编:admin】
--------------------next---------------------