考虑典型主机上的路由表。在这里,我坐在桌子上的树莓派:
pi@pi:~ $ ip route
default via 192.168.1.1 dev wlan0 proto dhcp src 192.168.1.114 metric 303
192.168.1.0/24 dev wlan0 proto dhcp scope link src 192.168.1.114 metric 303
这个路由表说明了两件事:
- 要获取以 192.168.1... 开头的任何内容,只需将其发送到 wlan0 即可。不需要路由器,因为这些主机将位于同一个 L2 网络上。
- 对于其他所有内容,请将其发送到 192.168.1.1(我们已经知道如何联系)。
现在从技术上讲,我们可以为您示例中路由器上的所有四个接口分配相同的 IP 地址。然而,这带来了令人不快的两难境地。
我们可以任意选择一些 IP 地址,例如 169.254.33.122,并将其分配给四个接口。但是没有一个主机知道如何到达它,因为它不会像上面的例子那样在路由表中。有人可以ip route add 169.254.33.122 dev wlan0在每个主机上走来走去,但这很乏味。虽然人们可以想出一些自动化的方法来分发这样的路由,但它不会像 DHCP 那样无处不在。
或者我们通过选择一些已经在主机配置的网络中的地址来避免添加路由的需要(在上面的示例中为 192.168.1.0/24)。但是要拥有一个地址,我们可以在四个网络中的每一个中选择一个地址,这意味着四个网络之间必须存在地址重叠。这不好:那么路由器如何确定它应该将接收到的数据包路由到哪个网络?