关于命题“网络规划中一个VLAN要对应一个网段”的证明

通过抓包分析讨论广播域与子网划分的关系,帮助理解为什么在实际规划中要一个VLAN对应一个网段。

小弟刚学网络,CCNA还没过,只是最近从论坛上学了不少东西,总结一下自己学的知识,要是哪个地方说错了,大牛们一定要帮我指出来。
文档下载链接:http://down.51cto.com/data/206701

2011.6.2:多谢大家的意见,现在把网关的掩码补充道图片里了。

前提设定:
A IP 地址为: 10.10.142.70
B IP 地址为: 10.10.142.129

上面A和B的IP地址可能存在于不同、相同网络,也有可能存在于不同、相同的广播域。现在问,
A B 处于相同网络还是不同网络?     答,关键是看 A B 的子网掩码的设定。
A B 处于相同广播域还是不同广播域? 答,关键是看 A B 的通信链路中间有没有路由器。

为了观察广播域和网络划分之间的关系,我按照四种情况进行了试验:

1.通信双方AB处于同一广播域,相同的网络内


此时,设定AB的掩码都为255.255.255.0
显然AB处于相同网络。这时A ping B的情况如下,以A的视角来看:
起初Aarp缓存中没有任何记录:
 
输入: ping 10.10.142.129
由于 A B 处于同一网络,且 A B 连在同一个二层交换机,所以 A B 处于同一广播域中。但是, A 不知道 B MAC 地址,所以 A 发出 ARP 广播
 
B 回应 A
 
这时再看Aarp缓存:
 
可见,当A判断和B处于同一 网络时,不经过网关,直接在本网络发出ARP广播,和B通信。用tracert命令可以证明这一点:
 
结论:当AB处于同一广播域,相同网络时(即,连接在同一个二层设备上,且掩码相同)。网关对AB之间的通信来说,毫无意义。AB可以不设定网关,直接用交换机通信。数据包的路径如下图所示:



2AB处于同一广播域;A认为处于不同网络;B认为处于相同网络
此时,设定A的掩码为255.255.255.128,而B的掩码不变。
这种情况在实际网络中是不合法的,但是为了说明网络划分、广播域 之间的关系,就勉为其难了。
这时, A 认为A B 处于不同网络中,即:
A认为 A 处于 10.10.142.0 中, B 处于 10.10.142.128 中,因为A设定的掩码是255.255.255.128;
B 认为:B A 仍处于同一网络 10.10.142.0 中,因为B的掩码仍然是255.255.255.0。

这时,我们再用 A ping B看看会发生什么情况
首先输入 arp -d 清空 A arp 缓存,再输入 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处于不同的网络
有了上面的基础,我们再来看看这种情况。 A B 的发包过程与 2.2 节讲述的 A ICMP 包的过程完全相同。 A B ICMP 包都通过网关转发。即:

但我想讨论的并不是这个问题。我想讨论的是掩码的大小对 arp 广播报文的影响。
4AB处于不同广播域,相同或不同网络时
为了说明问题,我换个拓扑图来讲:

A IP 地址为 10.111.1.1 ,掩码为 255.0.0.0
B IP 地址为 10.222.2.2 ,掩码为 255.0.0.0
A B 认为他们处于同一个 10.0.0.0 的网络中,当 A ping B 时:
由于 A 认为 B 和自己在同一网络,所以 A 直接发 arp 广播包请求 B MAC 地址。但是, A B 在不同广播域,路由器会丢弃所有广播包,所以 A 无法 ping B 。要解决这个问题,只有加大掩码:
A 的掩码设为 255.255.0.0
B 的掩码设为 255.255.0.0 就可以了。
这时 A 认为 B 与自己在不同网络,所以会发 arp 广播包请求网关的 MAC 地址,然后把 ICMP 包交给网关转发。最后 A 能够 ping B 了。
结论: A B 处于不同广播域、相同网络时,无法通信。而处于不同广播域,不同网络时,可以通信。在给运营商或企业的内网做漏洞扫描或其他项目时,需要接入他们的内网。如果发现再给定的 IP 地址和网关下,无法 ping 通远程网络的主机,应适当加大掩码。
上面讨论了,四种情况:

相同广播域 相同网络 正常通信
相同广播域 不同网络 走弯路才能通信
不同广播域 相同网络 无法通信
不同广播域 不同网络 正常通信

可见,在网络规划中,广播域与网络划分应该保持一致性,要相同都相同,要不同都不同。也即,VLAN划分与网络划分应该保持一致性,要相同都相同,要不同都不同。


原文链接:http://bbs.51cto.com/thread-829666-1.html

猜你喜欢

转载自blog.csdn.net/a3192048/article/details/79233749