还有一个特殊情况需要注意,当电脑插入两个网卡并接入两个不同的网络,同时开启了数据转发功能后,这台电脑就变成了一个路由器。这时候,在接口上设置的网关地址,在路由器的视角下,就可以被称为默认路由了,因为它指导数据如何被转发出去。
默认路由和网关有什么区别?
本质上来说,默认路由和网关在核心机制上是同一个东西,只是应用在不同的场景下,可以说是换了个马甲。比如我们在终端设备中设置的网关地址,本质上就是为该设备设置了一条默认路由,用于决定发出去的包该走哪条路进行选路。
我们可以用一个形象的比喻来理解这个匹配过程:假设我有编号为a、b、c的球,还有d、e、f、g等其他编号的球。我把a号球给你,你就放进a盆;b号球放进b盆。但当我给你f号球时,你发现a、b、c盆都匹配不上,这时你只能把f号球放进那个标为all的大盆中。
在这个比喻中,那个all大盆就相当于是默认路由,意思是所有在精确路由表中匹配不到的数据,都统一丢给默认路由处理。而我的球只能给你,你在这里就扮演了网关的角色,即所有 outgoing traffic 的必经出口。
默认路由是路由功能中的一个术语,大致意思是当路由器对数据进行选路时,如果不知道该把数据发往哪里,就无脑地将其丢到默认路由上。在一般的家用路由器配置中,除了本地直连的路由规则外,通常只设置一个默认路由指向运营商网络。
作为网关时,无线路由器主要负责接收家里手机、电脑等终端发来的数据。但是,仅仅接收数据是不够的,它必须负责将这些数据进行转发,否则家里的设备就无法连接互联网。这就好比门卫接了快递,还得负责把快递送到正确的位置,否则快递就堆在门口没用。
而网关的概念通常是针对于终端设备而言的,比如电脑或手机。对于终端来说,网关就像是去其他网络溜达时的一扇城门。也就是说,当你访问局域网内部资源时不走网关,但一旦要离开局域网访问外网,就必须通过网关这个关卡才能出去。
当路由器需要转发数据时,它会检查自己内部的路由表来进行匹配。如果在路由表中找不到对应的匹配项,它就会将数据包按照默认路由进行转发。这个过程就像是你手里有三个小盆分别标号a、b、c,还有一个大盆标为all。
总结一下两者的区别:默认路由更像是一个指路牌,当系统不认识路或者没有明确路线时,就按照这个指路牌的方向走;而网关则像是一个围城的城门洞,如果你想离开当前网络去其他地方,只能从这个门出去。