假设一台电脑通过网线连接路由器(LAN:192.168.1.1 WAN:公网ip)上网,现在设置该电脑的的ip为192.168.0.1,网关为192.168.1.1,DNS为8.8.8.8,发现该电脑不能上网。
已知不能上网的原因是主机ip和网关不在同一子网,问:主机ip和网关不在同一子网就不能上网的原因是什么?
分析:
网关的意义是生成一条默认路由。默认路由的意思就是:当我要通信的对象不在我这个子网里的时候,我该把报文发送给谁?
在Windows命令行中使用route print命令可以打印出本机的路由表,如下图,第一条就是默认路由:
默认路由的目标网络是0.0.0.0,掩码是0.0.0.0表示“全部网络”。所以,如果没有默认路由,那么你的通信范围就仅限于当前的子网了,任何外部的网络,包括你指定的DNS:8.8.8.8都无法访问,因为你的计算机不知道如何访问到除子网以外的其它网络。
当你指定了网关以后,网关必须跟你计算机在同一个网段,否则,计算机无法计算出如何到达网关,也就是计算机不知道当前子网的出口。
如果网关和你当前计算机不在同一个子网,那么除非你再指定一个转发设备,并确保这个转发设备同时能访问网关和你的计算机(通常,可以称之为网桥),那么你在手动指定一条默认路由,那么计算机就可以访问外部网络了。
所以,网关的本质是告诉计算机:当前子网的出口在哪。只有子网相同,计算机才能最终计算出出口。
原文链接:https://www.zhihu.com/question/27887800/answer/38549907