此时,设定A和B的掩码都为255.255.255.0
显然A、B处于相同网络。这时A ping B的情况如下,以A的视角来看:
起初A的arp缓存中没有任何记录:
2.A、B处于同一广播域;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查看结果:
3.A、B处于相同广播域,不同网络时
当A和B的掩码都设定为255.255.255.128时,A、B处于不同的网络
有了上面的基础,我们再来看看这种情况。A和B的发包过程与2.2节讲述的A发ICMP包的过程完全相同。A、B的ICMP包都通过网关转发。即:
但我想讨论的并不是这个问题。我想讨论的是掩码的大小对arp广播报文的影响。
4.A、B处于不同广播域,相同或不同网络时
为了说明问题,我换个拓扑图来讲:
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通远程网络的主机,应适当加大掩码。
上面讨论了,四种情况:
相同广播域 | 相同网络 | 正常通信 |
相同广播域 | 不同网络 | 走弯路才能通信 |
不同广播域 | 相同网络 | 无法通信 |
不同广播域 | 不同网络 | 正常通信 |
联系客服