两PC互通与子网掩码设置问题讨论
贺 帆
有两台PC,其IP设置分别为:
IP1:192.168.1.2,子网掩码:255.255.255.0;
IP2:192.168.1.3,子网掩码:255.255.255.0;
将PC1的IP对应的子网掩码改为255.255.0.0,而PC2的IP对应的子网掩码保持不变,此时PC1同未改设置的PC2分属192.168.0.0和192.168.1.0两个网段,按照“属于不同网段的IP,相互通信需要通过路由器转发,而不能直接通信”的理论,此时这两台PC不可能相互PING通,但事实上此两PC仍可相互PING通,为什么?
解析:
当PC1发出“PING 192.168.1.3”命令时,PC1并不知道PC2的子网掩码是多少,PC1将PC2的IP地址192.168.1.3与自己的子网掩码255.255.0.0相与,得出PC2处于192.168.0.0网段,与PC1自己所处的192.168.0.0同一网段,于是PC1直接发ARP(地址解析协议)广播,请求PC2的MAC地址,而两台PC又处于同一广播域内,所以甚至连网关都不需要设置,两台PC就能完成通信。
同理,PC2发出“PING 192.168.1.2”命令时,PC2也认为PC1和自己处于同一个192.168.1.0网段内,所以两PC仍能相互PING通。
据以上分析,甚至取消两台PC的网关设定,两PC仍能相互通信。
我们还可以这样理解:PC1、PC2执行“IP地址和子网掩码相与”后的结果不同,说明两PC处于不同网段,但是这是以“第三者”视角来看的。而以PC1或PC2的视角来看,对方和自己都是处于同一网段内,发包通信的是PC1和PC2,而不是“第三者”,因此通信能否成功,取决于PC1和PC2自己的判断,以及两PC是否处于同一广播域这个前提。
由此,我们可以修正一下理论为:有两主机,若任一源主机将另一目的主机的IP地址与源主机的子网掩码相与后,与源主机IP和源主机的子网掩码相与的结果相同(即所处的网段相同),则两主机可以直接相互通信,否则需要通过网关(路由器)转发。
验证:
IP1:192.168.1.1/24――IP2:192.168.1.126/25,此时两主机可相互PING通;
用路由器连接两台电脑IP1:192.168.1.1/24――IP2:192.168.1.129/25,此时两主机不能相互PING通。
发布评论