查看: 3732|回复: 18

网络知识小问答

[复制链接]
发表于 2007-4-13 17:14:47 | 显示全部楼层 |阅读模式
1.我在一台接入三层交换机的PC上运行科来物理地址扫描器,为什么只扫描出了本机以及交换机端口的MAC地址呢?

2.我们知道,数据包被三层设备转发后,其源MAC地址将被改为三层设备转发端口的MAC地址。下面我们来讨论一下,为什么三层设备会改变数据包中的源MAC地址呢?
回复

使用道具 举报

发表于 2007-4-13 18:02:25 | 显示全部楼层

呵呵~~

1.三层设备不转发ff-ff-ff-ff-ff-ff吧~
2.因为主机发送包的时候先运算自己的ip和mask,如果不在一个网段,就会发给网关,而路由器此时会认为此数据包是从网关发出的,故重新封装,源mac为路由端口mac,另外再经过别的路由时,mac地址也会如上原理改变,但ip始终不会变

表达的不怎么好,有问题的话请大家指出

[ 本帖最后由 zealotcc 于 2007-4-13 22:53 编辑 ]

评分

1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2007-4-17 14:09:50 | 显示全部楼层
原帖由 zealotcc 于 2007-4-13 18:02 发表
1.三层设备不转发ff-ff-ff-ff-ff-ff吧~
2.因为主机发送包的时候先运算自己的ip和mask,如果不在一个网段,就会发给网关,而路由器此时会认为此数据包是从网关发出的,故重新封装,源mac为路由端口mac,另外再经过别的 ...


LZ两个问题都算答到要点上了,就是不够详细!

加分鼓励!

朋友们来补充补充啊!
回复

使用道具 举报

发表于 2007-4-17 19:55:44 | 显示全部楼层
2.我们知道,数据包被三层设备转发后,其源MAC地址将被改为三层设备转发端口的MAC地址。下面我们来讨论一下,为什么三层设备会改变数据包中的源MAC地址呢?

应该是因为内部路由的问题吧
回复

使用道具 举报

发表于 2007-4-17 21:09:42 | 显示全部楼层
呵呵。。不错,学习到东西了
回复

使用道具 举报

发表于 2007-4-24 13:31:34 | 显示全部楼层
1.我在一台接入三层交换机的PC上运行科来物理地址扫描器,为什么只扫描出了本机以及交换机端口的MAC地址呢?

看到这个问题后,我特意使用科来的物理地址扫描器进行扫描,并同时用科来抓包。
从抓包的结果来看,科来物理地址扫描器,在扫描时发出的是ARP广播数据包,由于三层机在默认情况下不转发广播数据包,所以科来物理地址扫描器发出的数据包不能到达其他端口,从而出现了KelvinFu版主所说的情况。

2.我们知道,数据包被三层设备转发后,其源MAC地址将被改为三层设备转发端口的MAC地址。下面我们来讨论一下,为什么三层设备会改变数据包中的源MAC地址呢?

三层设备转发数据包前,必须要知道数据包的目的地?由于拿到数据包后,最外层是以太网帧头,而不是三层设备需要的IP信息,所以三层设备会首先将数据包解封,然后查找路由表,找到相应的接口,再将数据包转发到相应接口的缓存,这时出口再加上自己的MAC地址并发送此数据包。所以三层设备转发数据包时,将源MAC改为了自己的MAC地址。

评分

1

查看全部评分

回复

使用道具 举报

发表于 2007-4-24 14:22:49 | 显示全部楼层
第一个问题,我同意楼上的说话
第二个问题,就是所谓的arp代理吧,如果把arp代理去掉,应该就不会修改源mac了!

评分

1

查看全部评分

回复

使用道具 举报

发表于 2007-4-24 14:24:37 | 显示全部楼层
ARP代理与三层设备转发时更改MAC的联系是?
回复

使用道具 举报

发表于 2007-4-24 14:30:33 | 显示全部楼层
具体你看一下ARP代理原理!!!
回复

使用道具 举报

发表于 2007-4-24 14:31:25 | 显示全部楼层
我来回答回答第二个问题


上海------A---B---C---D----北京

上海要发送邮包到北京,中间经过A,B,C,D四个邮递员,邮递员只认识相邻的邮递员,A认识B,B认识C,C认识D,除此之外,邮递员是不认识的。也就是A不认识C,B不认识D。

那么假设邮包在已经 经过A,经过B传给C的时候,B要告诉C,我给你传东西了,因为C只认识B和D的,不认识A,所以必须要B在邮包上签上B的名字C才会收

评分

1

查看全部评分

回复

使用道具 举报

发表于 2007-4-24 14:48:16 | 显示全部楼层
原帖由 tpstar 于 2007-4-24 14:30 发表
具体你看一下ARP代理原理!!!

详细看了代理ARP的资料,我认为现在网络中三层设备的转发原理与代理ARP没有太大的关系。
现在网络中应该大多都没有启用代理ARP,但事实上网络中所有的三层设备转发数据包时,都会将MAC改为自己的MAC。

bolly_zhang兄的比喻不错,但我现在还是想弄清楚具体的原理是怎么样的,为A和C不认识呢之类的问题。还有,如果不改,能将数据包发送出去吗?
回复

使用道具 举报

发表于 2007-4-24 15:01:54 | 显示全部楼层
A无法认识C美女,因为中间隔了一个B,而B是C的老爸,不允许A认识C,呵呵,玩笑

A如果想认识C这个美女的话,那么A和C相识的基础就是A和C要互相学习到彼此的mac地址,但是A学习C美女的mac地址呢?发广播包学习。但是因为三层设备是不允许广播包通过的,也就是A发的广播包全部被美女的老爸B挡掉了,所以A就没有办法学习到C。

所以,没办法,A是追不到C美女的。
回复

使用道具 举报

发表于 2007-4-24 18:26:13 | 显示全部楼层
1.科来的物理扫描器的工作过程是通过给网段内所有的主机发一份ARP请求的广播,交换机端口会根据目的MAC值查询MAC-端口对应表,有,直接发过去;没有,给除此端口外每个端口发一份。在这方面和普通交换机没有区别。
   而收到包的各个端口会首先纪录下源MAC地址和源交换机端口,然后将包传给与之相连的机器。首先机器的链路层会拆解这个包,尽管目的地址并非自己的MAC,但由于是全F所以不会将其丢弃,并根据协议字段将其传给相应的协议进行处理,在这里是交给ARP协议。此时ARP协议会匹配目的IP地址与自己是否一样,如果相同,会发回ARP响应;如果不同,不予响应。至于出现了KelvinFu版主说的只发现交换机端口的MAC地址和自己的我觉得唯一的可能就是当时的局域网中只有版主的机器和交换机在工作或者当时版主所在的网段只有版主自己。

2.当主机的IP在处理一个数据报时,首先查询路由表,如果没有匹配的表目,会选择发给默认路由。所以此时的目的MAC地址即为三层交换机的入口的MAC址,源MAC为主机出口的MAC值。在交换机收到这个包时进行拆解,在根据协议字段得出上层协议是IP后,放入IP输入队列等待IP处理,当IP在处理时发现目的地址不是自己,由于它可以进行转发,所以查询了路由表后得出相应的路由和这个包该从哪个网络接口出去,将其放入输出队列转交给链路层进行处理,而链路层在处理时会把出口的MAC地址填入,所以源MAC地址就由主机的变为出端口的MAC地址了。

至于楼上几位说的ARP代理……我赞同cwym29兄的观点,这完全是两码事。

[ 本帖最后由 gezi1234 于 2007-4-24 19:13 编辑 ]

评分

1

查看全部评分

回复

使用道具 举报

发表于 2007-4-25 11:28:45 | 显示全部楼层
看了。。不错,顶一个
回复

使用道具 举报

 楼主| 发表于 2007-4-25 16:03:31 | 显示全部楼层
to: gezi1234 和cwym29
解释的比较详细和正确。。霹雳啪啦!


to: tpstar

上面2个兄弟的解释的已经比较清楚了,呵呵,tpstar兄可以看看,你所说的ARP代理,其实另外一种情况,和我们所说的路由更改数据的源MAC是有一定区别的。
我们举个简单的例子,主机A和主机B在不同的子网,他们之间通过路由器进行通讯。主机A要和主机B通讯,首先还是要发起ARP请求,但是他是发到路由器的一个接口,路由是知道主机B的,但是它不转发广播数据包的,如果路由器在开启ARP代理功能时,它会向主机回应一个ARP响应,
这时在主机A的ARP表里面的对应的主机B的IP地址,而MAC地址对应的是那个路由器接口的MAC地址。

和我们第二问题所说的是不一样的,这里所说的是路由器内部对数据包的处理。我们知道路由器的一个重要功能是路由选路,它必须知道目的IP地址,所以将数据包进行解封,了解其IP地址,在选路完成后,它需要再将数据重新封装,并转发出去,在路由器再次封装数据包时,就将数据包Ethernet头中的MAC改成了转发接口的MAC地址。


to: bolly_zhang

呵呵,比喻不错麻,想起了网上的一篇教经典的文章“什么是计算机网关的经典描述(小不点)”
回复

使用道具 举报

 楼主| 发表于 2007-4-25 17:08:20 | 显示全部楼层
另外,我在网上搜集的代理ARP的工作原理,我把他粘贴过来了。
                                       
proxy ARP就是通过使用一个主机(通常为router),来作为指定的设备对另一设备作出ARP请求的应答

proxy ARP是如何工作的?
设备需求:
Cisco 2500系列的rourer
Cisco IOS Release 12.2(10b)


假设在如上图的一个环境中,位于子网A的主机A(172.16.10.100)需要发送packet到位于子网B的主机D(172.16.20.200)上去.于是主机A将发送ARP请求给D.当然,为了能够达到主机D,就需要知道主机D的MAC地址.因此,主机A在它位于的那个子网A上广播ARP请求,大致内容如下图:


当然router的e0口也接收到该广播,但是router默认不会转发广播的,所以该ARP请求仍然到达不了主机D.但是router却知道主机D位于另外一个子网B.于是router应答自己的MAC地址给主机A,如下图:


注意如上图,源IP地址为主机D的IP地址,但是源MAC地址是router e0口的MAC地址.这就是发送给主机A的proxy ARP应答(代理人,中间人).这样的proxy ARP应答一般是作为unicast发送给请求者(主机A)
主机A收到这个proxy ARP应答以后,开始更新自己的ARP table,如下图:


于是从现在开始,主机A将不把要前往主机D的packet通过router e0口(00-00-0c-94-36-ab)转发,因为router知道如何到达主机D,它会把packet转发给主机D

另外,位于子网A的主机的ARP cache,如下图:


注意上图,3个IP地址映射到1个MAC地址(router e0口的MAC地址)上,这就说明正在使用proxy ARP

Cisco的router的接口应该配置成能够接收和应答proxy ARP,当然这个默认是启用的,不过可以使用一些命令来关闭这个功能,命令如下:

Router# config t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#int e 0
Router(config-if)#no ip proxy-arp
Router(config-if)#^Z
Router#

要再次启用的话,在接口配置模式下使用ip proxy-arp命令即可。

proxy ARP有哪些优点?
最主要的一个优点就是能够在不影响其他router的路由表的情况下在网络上添加一个新的router,这样使得子网的变化对主机是透明的。

proxy ARP应该使用在主机没有配置默认网关或没有任何路由策略的网络上。

proxy ARP带来的哪些负面影响?

1.增加了某一网段上ARP流量
2.主机需要更大的ARP table来处理IP地址到MAC地址的映射
3.安全问题,比如ARP欺骗(spoofing)
4.不会为不使用ARP来解析地址的网络工作
5.不能够概括和推广网络拓扑

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?CSNA会员注册

×
回复

使用道具 举报

发表于 2007-4-25 17:49:41 | 显示全部楼层
学习了,不错不错。。号
回复

使用道具 举报

发表于 2007-4-26 09:39:58 | 显示全部楼层
谢谢版主回答,另外问个问题。

在一般的IP路由网络中,路由器转发数据包时,会将数据包的源MAC改为自己的出口MAC地址,那经过MPLS网络的LER和LSR时,会做出一样的更改吗?为什么?


http://www.csna.cn/forum.php?mod ... &extra=page%3D1
回复

使用道具 举报

发表于 2007-4-27 16:28:13 | 显示全部楼层
原帖由 cwym29 于 2007-4-26 09:39 发表
谢谢版主回答,另外问个问题。

在一般的IP路由网络中,路由器转发数据包时,会将数据包的源MAC改为自己的出口MAC地址,那经过MPLS网络的LER和LSR时,会做出一样的更改吗?为什么?


http://www.csna.cn/ ...

这个问题问得不错,大家都来讨论讨论!
回复

使用道具 举报

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

本版积分规则

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