Chinaunix首页 | 论坛 | 博客
  • 博客访问: 78422
  • 博文数量: 16
  • 博客积分: 229
  • 博客等级: 二等列兵
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-01 12:53
文章分类

全部博文(16)

文章存档

2012年(3)

2011年(13)

我的朋友

分类:

2011-12-22 16:56:34

设定:
AIP地址为:10.10.142.70
BIP地址为:10.10.142.129
AB处于相同网络还是不同网络?关键是看AB的子网掩码的设定。
AB处于相同广播域还是不同广播域?关键是看AB的通信链路中间有没有路由器。
1.通信双方AB处于同一广播域,相同的网络内


此时,设定AB的掩码都为255.255.255.0
显然AB处于相同网络。这时A ping B的情况如下,以A的视角来看:
起初Aarp缓存中没有任何记录:

输入:ping 10.10.142.129
由于AB处于同一网络,且AB连在同一个二层交换机,所以AB处于同一广播域中。但是,A不知道BMAC地址,所以A发出ARP广播

B回应A

这时再看Aarp缓存:

可见,当A判断和B处于同一 网络时,不经过网关,直接在本网络发出ARP广播,和B通信。用tracert命令可以证明这一点:

结论:当AB处于同一广播域,相同网络时(即,连接在同一个二层设备上,且掩码相同)。网关对AB毫无意义,AB可以不设定网关,直接用交换机通信。



2AB处于同一广播域;A认为处于不同网络;B认为处于相同网络
此时,设定A的掩码为255.255.255.128,而B的掩码不变。
这种情况在实际网络中是不合法的,但是为了说明二层、三层、广播域、ARP等之间的关系,就勉为其难了。
这时,A认为和B处于不同网络中,即:A处于10.10.142.0中,B处于10.10.142.128中;而B认为和A仍处于同一网络10.10.142.0中。
我们再用A ping B
首先输入arp -d清空Aarp缓存,再输入arp –a查看结果:

,可见,没有任何arp缓存。然后输入,ping 10.10.142.129
由于A判断与B处于不同网络中,因此,ICMP数据包将通过网关转发。由于MAC地址不能跨越网络传输。所以A首先要获取网关的MAC地址:

因为网关此时已经有了Barp缓存,所以网关不需要再发出arp广播了。
由于B判断和A处于同一网络,且不知道AMAC地址,所以B要获取AMAC地址,而不是获取网关的MAC地址,如图所示:

再来看看ABICMP包的路径:


AMAC地址为:compalin_63:f2:4e(00:1e:ec:63:f2:4e)
BMAC地址为:Cadmusco_e4:c7:d2(08:00:27:e4:c7:d2)
网关MAC地址为:Hangzhou_49:fd:fa(00:0f:e2:49:fd:fa)

可见,A在二层封装中,目的MAC地址写的是网关的MAC地址;而三层封装中目的IP地址写的是BIP地址。很显然,这时因为A判断和B处于不同网络,把ICMP包先交给了网关导致的。这点可以通过tracert命令来证明:


相反,由于B的掩码仍然是255.255.255.0,所以B不会把ICMP的应答报文交给网关转发,而是直接发给A


如图所示,这份BAICMP应答报文中,目的MAC地址写的是AMAC地址compalin_63:f2:4e,而不是网关的MAC地址。且目的IP地址也是AIP地址10.10.142.70
结论:这种情况下A走了弯路。A视角下,处于同一广播域,不同网络时,数据包通过网关转发。B视角下,仍然是同一广播域,相同网络,直接与A通信。由此可见,在实际网络规划中,应该保持广播域与网段的一一对应,一个VLAN对应一个网段。否则就要走弯路。

3AB处于相同广播域,不同网络时
AB的掩码都设定为255.255.255.128时,AB处于不同的网络
有了上面的基础,我们再来看看这种情况。AB的发包过程与2.2节讲述的AICMP包的过程完全相同。ABICMP包都通过网关转发。即:

但我想讨论的并不是这个问题。我想讨论的是掩码的大小对arp广播报文的影响。

转自:
阅读(1162) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~