又开始纠结起来这个问题了,两个PC连接一台二层交换机,或者一台关闭路由功能的三层交换机,把连接PC的交换机端口划入同一个vlan中,但是两个pc的ip地址不在同一个网段,能否互相ping通?
默认情况下所有交换机端口属于vlan1,也就是现在PCA 和PCB属于同一个vlan。
以上说的情况又分为两种,首先第一种PCA,PCB只设置IP地址,不设置网关。
比如PCA的地址:192.168.1.10/24
PCB的地址:192.168.2.10/24
设置完成之后在cmd下使用ipconfig命令查看是否设置成功,在这个过程中小狮子就发现了一个奇怪的地方,虽然我没有设置网关,但是在cmd下看到的两个PC的默认网关都是0.0.0.0。
注意这里的0.0.0.0经过小狮子的实验得出结论表示的是你把网关设置成了自己,这个跟没有网关是很大区别的,严重影响到实验的效果,因为下一个实验我们正是需要把网关设置成自己。在这里,我们可以在cmd下输入:
route delete 0.0.0.0
删除这个奇怪的网关,再次使用ipconfig命令验证一下,发现此时“默认网关”这里空空如也。达到目的。
另外需要注意的一点就是需要把windows的防火墙关闭,要不然怎么样都是ping不通的。
进入测试阶段,PCA ping PCB发现不通,反之亦然。但是为什么不通呢?这个过程是什么样子的呢?经过查找资料和小狮子自己的思考发现,电脑在不设置网关的情况下去ping一个与自己不同网段的地址(电脑怎么知道对方跟自己不同一个网段呢?因为电脑在ping的时候会根据目的ip地址做一个掩码的计算,具体自行查找资料),由于跟自己不同网段而且自己没有设置网关,所以PC根本不会发送什么报文,直接就把这个ping包丢弃,我们此时在cmd下看到的就是:
根本没有ping包出去。
如果ping的是跟自己同一个网段的ip,即使没有设置网关,PC发现与自己同一个网段的,就会发送一个ARP的报文在整个vlan中询问所有vlan中的主机,目的主机的mac地址。所以同一网段,不设网关也是可以通的。
那么怎么能够让不同网段相同vlan的PC通呢?只要把对方的IP设置为自己的网关,或者把自己的ip设置为自己的网关就可以了。
经过实验发现上面的做法是可以通的,那么这又是为什么呢?原因就是PC在ping的时候,发现不同网段,这个时候就要去找网关了,(默认情况下网关都跟自己是同一个网段的,这里我们把网关设置跟自己不同一个网段,在windows下会提示警告的,不过PC自己可不关心,反正它就觉得网关就在我这个vlan里面的,所以就会发ARP广播包)在这里又分了两种情况,第一种就是把网关设置为对方的ip,在这种情况下PC首先寻找的是网关,它会发送一个arp请求在整个vlan中广播,询问网关的mac地址,由于这里两个PC属于同一个vlan都能够收到对方的ARP报文自然也做出了响应,当然也就能够获得到网关的地址了,接着网关就要寻找目的的ip地址了,不过网关这个时候发现目的的ip地址不就是我自己嘛,所以也就顺理的找到了自己,回复了对方。
第二种情况就是把网关设置成自己,这种情况下pc不会去找网关的mac地址,因为网关就是我自己啊,我当然知道自己的mac地址了还找什么.所以这种情况下,网关会去寻找目的ip的mac地址,也是发ARP广播包。恰好目的主机也在同一vlan,也就通信成功了。