查看: 23166|回复: 5

关于LAN上有两个相同MAC地址的问题(附:经典回复)

[复制链接]
发表于 2008-10-29 12:12:15 | 显示全部楼层 |阅读模式
PS:另一论坛转过来的,把问题和答案同时复制过来以便大家学习!

问题原文:

关于LAN上有两个相同MAC地址的问题

目的: 验证发往目的IP的数据包是通过目的MAC来传递

linux server  的MAC是 aa:aa:aa:aa:aa:aa

windows 98    的MAC是 BB:BB:BB:BB:BB:BB

windos 2000   的MAC是 cc:cc:cc:cc:cc:cc

将linux MAC改为与win98的MAC相同,那么LAN上有两个相同的MAC  BB:BB:BB:BB:BB:BB

此时win2000还能正常和linux , windows 98通信,  Why???????????

回复:
首先HUB是广播的,每一台接入HUB的主机都能受到所有的数据帧,然后对帧中的目的MAC地址进行检查,如果是本机的MAC地址就会将数据帧传给网络层处理。
网络层查看PACKET的目的IP地址,如果是本机的IP地址就分析是什么协议的数据包,然后传给相应协议处理。

即便主机受到了目的MAC地址与本机MAC地址相同的情况也会进一步发现目的IP地址不同而丢弃该PACKET.

关于ARP:  ARP request 是IP--->;MAC的查询,因此会在一个广播域中进行广播查询,目的MAC地址是FFFFFF
每一台主机都会接收并将该帧传给网络层处理,如果目的(即查询)IP地址是自己的IP,才会返回一个ARP REPLY,否则就丢弃该包!只要LINUX与win98主机的IP地址不同,只会由一台主机对该包进行回应!

关于ARP CACHE:  每台主机都会有一个ARP的CACHE 默认是空的(当然windows的主机开机是会PING网关以确认其MAC地址,因此开机后会有一条记录)。ARP CACHE中的内容一般都是通过发送ARP request得到的,是动态的,若干分钟后会清空(是具体OS而定),除非你使用静态的记录。
主机在通讯前都会先通过ARP CACHE查询目的ip对应的mac,如果没有就发送ARP request查询,网络中只有与目的IP相应的主机才会返回其mac地址。接着源就能与目的进行通讯了!在一个ARP CACHE存在一个MAC对应不同IP是允许的,这也是在SWITCH环境中IP包截获的基础。

因此,如果LINUX与win98的主机用了相同的MAC主机,他们都能很好的HUB的环境下和外界进行通讯。当然SWITCH的环境就不同了,可能会造成这两天主机都无法与外界联系的情况!

有兴趣的朋友可以拜读一下W.Richard Stevens 的 TCP/IP Illustrated Volume 1---The Protocols  这本传世宝典!
回复

使用道具 举报

发表于 2008-10-29 12:23:48 | 显示全部楼层
"即便主机受到了目的MAC地址与本机MAC地址相同的情况也会进一步发现目的IP地址不同而丢弃该PACKET.",说的好!
因为switch有mac地址表

[ 本帖最后由 oldjiang 于 2008-10-29 12:25 编辑 ]
回复

使用道具 举报

发表于 2008-10-29 15:08:19 | 显示全部楼层
在HUB环境下应该没问题,但在SWICH环境下就可能通讯,哪现在网上为什么好多人说破解电信共享上网就用改MAC的方式?这岂不是不行了吗?

[ 本帖最后由 飞雪 于 2008-10-29 15:09 编辑 ]
回复

使用道具 举报

发表于 2008-10-30 09:53:15 | 显示全部楼层
目的: 验证发往目的IP的数据包是通过目的MAC来传递
  看数据帧的帧格式就知道了啊。。
     oldjiang版主说得对 因为交换机有CAM表。。。没目的mac的帧就看成是未知单波帧。。处理方式是 flooding
回复

使用道具 举报

发表于 2010-2-24 00:14:04 | 显示全部楼层
理解中,学习了,希望以后可以很牛叉
回复

使用道具 举报

您需要登录后才可以回帖 登录 | CSNA会员注册

本版积分规则

快速回复 返回顶部 返回列表