通信人家园

标题: 路由器MAC地址问题  [查看完整版帖子] [打印本页]

时间:  2010-10-1 08:21
作者: super-star     标题: 路由器MAC地址问题

一 既然路由器是三层设备,为什么路由器的MAC地址变了,数据就不能转发了呢?
二 ping 命令也是基于三层的,为什么一定要知道目的MAC地址呢?按道理只要只知道目的IP不就可以了?
三 附件中的问题二,如果那台PC机不断开,这个路由器下就有两个相同的MAC地址?是不是这个原因造成不能通信?

[ 本帖最后由 super-star 于 2010-10-1 08:34 编辑 ]

附件: 未命名22.jpg (2010-10-1 08:21, 94.47 KB) / 下载次数 9
https://www.txrjy.com/forum.php?mod=attachment&aid=MTExMDEyfDM5MDNkZTE1fDE3MzE2NzE4MjF8MHww

附件: 未命名33.jpg (2010-10-1 08:21, 143.34 KB) / 下载次数 17
https://www.txrjy.com/forum.php?mod=attachment&aid=MTExMDEzfGQ5NWVmMmI4fDE3MzE2NzE4MjF8MHww
时间:  2010-10-1 12:05
作者: hrmdadi

只知道IP是不行的,必须实际路由可达的情况下才会通。
时间:  2010-10-1 21:20
作者: zum_vor

1. 如果交换机/PC捆绑了路由器的MAC地址,如果路由器的又发生变化的话,那就不能通信了。
2. Ping是需要二层地址的,如果二层不可达,那三层当然也就不通了。
3. 如果路由器下有两个PC的MAC地址一样,那这两台PC都会时断时通。
时间:  2010-10-2 08:44
作者: super-star

原帖由 zum_vor 于 2010-10-1 21:20 发表
1. 如果交换机/PC捆绑了路由器的MAC地址,如果路由器的又发生变化的话,那就不能通信了。
2. Ping是需要二层地址的,如果二层不可达,那三层当然也就不通了。
3. 如果路由器下有两个PC的MAC地址一样,那这两台PC都 ...

如果捆绑了,MAC地址变了为什么还能ping 通路由器,假如是没捆绑的,那还能不能继续通信?
时间:  2010-10-5 14:38
作者: ridebike

感觉像是网络工程师里面的题目

第一问是要把设备工作模式设为全双工100M吧

有些设备自适应可能不能适应  就降低标准用10M单工了
时间:  2010-10-6 22:51
作者: xiyu_lang

呵呵  楼主,希望你给出的是今年网络工程师的题目,那我就请你吃饭!
时间:  2010-10-7 17:06
作者: 啸傲江湖

用一个类比的例子来说明二层通信跟三层通信的区别。楼主有一个重要的认识是错误的,即认为光靠路由也能找到目的地。其实,不管是通过三层设备还是二层设备,要找到最终的目的地,一定要有mac的参与。
我们假设一个城市中不同的小区是在不同网段里面,同一个小区的不同住户是在同一个网段。假设要让你从城市中的一个地点出发,找到某个小区的某个住户,你只知道这个小区怎么走就能找到吗?显然不行,到了那个小区之后,你必须知道那个住户是在几楼几单元房间号才行对不对?这是一个非常恰切的例子,知道到某个小区怎么走,等于你是知道了路由,每个十字路口可以认为是一个路由器,到了一个小区之后,知道某个住户的详细门牌号,等于是知道了mac。所以为什么说mac地址只在一个网段有效,你同样可以考虑一下这个例子,比如某个住户的门牌号是2幢2单元101,但是这个信息只在这个小区是唯一的,到了别的小区,仍然可能有2幢2单元101,所以这个信息无论用于跨网段通信,而小区名则是整个城市唯一的(假设一个城市的小区命名是统一规划,统一分配),所以小区名可以被用作在城市里面寻址。而路由协议则相当于在每个十字路口给你一个路牌,告诉你要到某个小区要走哪条路。也许有的时候有很多条路可以到达同一个小区,而且一样远,这就等价路由ECMP。

有点扯远了,再回到楼主的问题。为什么路由器改了mac之后就无法痛心了呢?这要了解PC跟PC之间的通信机制。PC1要向PC2发包,它知道PC2的IP,但是根据上面我讲的,光知道IP地址是不行的(包在线路上传输的时候,物理的MAC芯片只认识mac信息,不认识IP信息),必须知道mac,所以它需要获取PC2的mac,我们知道,根据IP获取mac要用Arp协议,但是ARP是一个不可路由的协议,只能在同一个网段里面flood,所以PC1很聪明,它首先要判断一下PC2的IP跟自己是否在同一个网段,这个可以通过比较掩码掩过之后的IP是否一致来得到,如果发现跟自己同一个网段,那就直接朝PC2的IP发ARP,PC2肯定会收到这个ARP request,然后回复一个ARP reply,于是PC1就可以跟PC2通信了。但是如果PC1经过比较,发现PC2跟自己不在同一个网段,它就知道了,他要达到PC2,必须走路由,这个时候,它不会傻傻地仍然朝PC2的IP发ARP,因为它知道PC2不会收到,它需要朝到达C2的下一跳router发送ARP,通常在PC上只有一个网卡,下一跳router就是自己的默认网关。默认网关会把自己的Mac告诉PC1,然后PC1就把报文朝默认网关发过去。
这个时候,有一点很重要,默认网关收到这个报文之后,它需要做一个判断,它要看这个macDa是不是自己的L3 interface上的mac,如果不是,它认为这个报文应该做二层转发(假设是L3 switch上的vlan interface),不会去查路由表,否则,则认为应该查路由表。
如果PC1已经得到了默认网关的mac地址,后面就会一直用这个地址去发包,假设这个时候
默认网关的mac突然变了,结果可想而知,本来应该做路由的报文去做了bridging,或者干脆就丢掉了(假设不是vlan interface,而是routed port),自然是不通。如果这个时候不存在恶意攻击或者误配,那么等到ARP过期之后,PC1重新学习到了默认网关的mac,自然又会通了,或者直接去clear一下arp cache,马上重学,也会通。
而如果这个时候网段内有人做arp欺骗或者有别的PC配置了一样的mac,则混乱会时不时的产生。
时间:  2010-10-8 13:56
作者: 腾龙洞123

答得很不错。
时间:  2010-10-8 14:16
作者: wn31665


时间:  2010-10-8 22:24
作者: super-star     标题: 回复 7# 的帖子

但是题目说故障现象是能一直ping 通路由器呢?能ping 通就说明它知道MAC了啊?可是为什么却不能转发数据呢?另外想问的就是vlan interface和router port 在转发数据上有什么具体区别吗?
时间:  2010-10-9 12:40
作者: 啸傲江湖

猜测应该是这样的,路由器上它的router mac跟ARP是存在于两个不同的地方,当问题发生的时候,ARP表被更新了,而router mac仍然是原来的。
PC机用ARP中的mac去ping,这个报文能被送到CPU去处理。而转发数据报文的时候,路由器检查的是routerMac跟报文中的macDa是否一致,这里显然是不一致,所以不能做转发。
vlan interface只存在于l3 switch上,一个vlan可以包含多个物理port,三层interface是创建在vlan上,跨vlan的通信是三层routing,而vlan内的不同port之间是二层briding. routed port则直接是在物理port上创建l3 interface,由于这个interface里面只包含一个物理port,所以不存在interface内的报文bridging,只能是跟别的l3 interface之间的routing.
Cisco的设备上有routed port,使用BCM芯片的别的交换机上都没有routed port,比如huawei,华三等,因为BCM芯片不支持routed port。
而传统的路由器,本质上它的接口就是routed port。

具体知识要自己去多看资料学习
时间:  2010-10-9 14:02
作者: 浪子阿猫

学习了,谢谢各位
时间:  2010-10-9 14:16
作者: xy9199

真的好好地学习了一课啊
时间:  2010-10-9 16:51
作者: lalala1006

需要继续学习呀
时间:  2010-10-10 00:43
作者: xiongxiang

高人!需继续学习,佩服。
时间:  2011-1-24 15:03
作者: mao3956

不错
时间:  2011-1-27 08:17
作者: linlong0575

需继续学习,佩服




通信人家园 (https://www.txrjy.com/) Powered by C114