数据包不是跨网段来转发给网关,你先明白网关的意思和作用吧。网关的作用是当数据包路由器的时候发现目的地址不和自己在同一个网络,才会把数据包发往网关。你自己和通信对方都在同一个局域网的话,数据根本不会经过网关设备,直接从交换机上就过去了。你PC2在192.168.2的网段,它要去192.168.1.1通信,而且它的掩码又不是标准的,数据包有去无回,所以肯定不能直接通信的。你将PC2添加了一个192.168.1.1的网关,那它就把192.168.1.1那台主机当成了是自己的网关设备,所以肯定是可以通信的了。
pc1:192.168.1.1 255.0.0.0pc2:192.168.2.1 255.255.255.0此种情况下,ping不通如果将pc2添加1个网关:192.168.1.1就能ping通。上面问题的答案可以在百度里搜索“经典的网关问题”这里pc2的ip地址和网关不在一个网段。确实是不在一个网段,但这只能在理论上,能PING通是因为ARP的帮助,而在实际应用中,不同网段才使用网关,不同广播域,在代理ARP关闭的情况下,是不可以PING通的。到底网关机制是怎么样的一个过程?为什么数据包能跨网段转发给网关?这个也可以在“经典的网关问题”中找到答案。所以在应用环境中,ip地址和网关地址必须要在一个网段的。试想下,如果不在一个网段,那要三层路由设备还要什么用呢。
前提:PC1和PC2在同一广播域下。
在没有网关的时候
PC2(192.168.2.1/255.255.255.0)要ping PC1,因为PC1的地址为192.168.1.1,不在192.168.2.0/255.255.255.0网段内,所以需要通过网关转发,但此时没有设置网关,故不通,通信结束。
如果设置了网关:
PC2(192.168.2.1/255.255.255.0)要ping PC1,因为PC1的地址为192.168.1.1,不在192.168.2.0/255.255.255.0网段内,所以需要通过网关转发,设置网关为192.168.1.1,所以开始ARP广播请求192.168.1.1的MAC地址,因为两台主机在一个广播域下,PC1可以收到该ARP请求,并回复PC2,这样PC2就有了网关的MAC,把ping包做二层封装后发送。PC1收到ping请求后,回复PC2,PC2的地址192.168.2.1在网段192.168.1.1/255.0.0.0网段内,现在PC1已知PC2 MAC,故直接二层封装后发送ping回复给PC2。
没有网关的情况下,ping不通把网关设为192.168.1.1(PC1的IP),在这个情况下,PC2会先发送ARP广播,PC1收到,且发现IP地址是自己的,他就必须应答,这样PC2就有了PC1的MAC地址,所以可以Ping通