路由器的不同行为
您不必在第一种情况下添加任何内容,因为它是自动的。由于只有一个路由器,它显然知道与其直接相连的一切。当它变成不止一个路由器时,需要有一些过程来告诉其他人什么不是本地的。(静态路由或任意数量的动态路由协议。)
感谢@Ricky 对此问题的评论;我正在编辑这个答案以澄清这一点。在第一种情况下,只有一个路由器;它了解两个网络(192.168.0.0/24
和10.0.0.0/8
)
但在第二种情况下,存在三个网络(192.168.0.0/24
、192.168.1.0/24
、 和192.168.3.0/24
) 如果 PC4 尝试 ping 192.168.3.3/24
,则来自 的数据包192.168.0.11/24
将到达192.168.3.3/24
,但 R4 无法路由回192.168.0.0/24
。所以这就是为什么 PC4 可以 ping192.168.3.2/24
但不能192.168.3.3/24
.
为什么在第一种情况下,不需要添加路由表
因为不需要添加路由表并不是真的。
当您配置两个接口的 IP 地址和子网时,您隐式地向路由表添加了两个条目,每个接口/子网一个。
在第二个设置中,涉及 3 个 ip 子网:
192.168.0.0/24、192.168.1.0/24 和 192.168.3.0/24。
Router2 知道 192.168.0.0/24 和 192.168.3.0/24,因为它们都有一个接口。Router4 知道 192.168.1.0/24 和 192.168.3.0/24,因为它们都有一个接口。
但是没有什么可以将它们联系在一起,因此 Router2 知道要发送发往 192.168.1.0/24 的数据包(同样,Router4 与 192.168.0.0/24 也有相同的问题)。
因此,在 Router2 上,您必须为 192.168.1.0/24 定义一条指向 192.168.3.3 的静态路由。这会将 192.168.1.0/24 的任何数据包转发到 Router4,Router4 知道如何处理这些数据包。
(在 Router4 上,您需要通过 192.168.3.2 为 192.168.0.0/24 设置静态路由。)
另一种方法是在两台路由器上设置动态路由协议(例如 RIP、IGRP、BGP、OSPF),让它们了解整个 ip 子网拓扑。
除了 RIP 之外,这些配置可能非常复杂。RIP 是迄今为止最容易设置的(只需启用它,无需配置),但它已经过时并且在大型(许多子网/路由器)部署中表现不佳。对于像这样的小型网络,它会做得很好。
添加到 AndreKR 的答案。实际上有 4 条路由是隐式添加的。
10.0.0.1/32
- 到 CPU 路由。(也称为punt route)发往此IP 地址的数据包将传送到路由器的CPU。例如,ping 10.0.0.1 将由路由器上的 ICMP 应用程序处理。10.0.0.0/24
- 这称为收集路线。每个到达此地址范围(与更具体的 10.0.0.1/32 不匹配)的数据包都将被捕获到路由器的 CPU 以触发 ARP 请求(除非 ARP 条目已经存在)并最终(在知道 MAC 地址之后) ) 将使用位于 ARP 数据库中的 MAC 地址直接从该接口发送到该目标 IP。192.168.0.1/32
- 类似于 1192.168.0.0/24
- 类似于 2
请注意,路由器通常不会发出 ARP 请求来解析数据包中的目标 IP 地址 - 只有在目标直接连接到路由器时才会发生(据我所知)。
另请注意,在解析所连接 PC 的 MAC 地址后(使用 2. 中描述的机制),添加了第 5 条和第 6 条路由:
10.0.0.2/32 via gig0/1
192.168.0.11/32 via gig0/0
如果清除 ARP 缓存,或 ARP 缓存条目已过期 - 这些路由将被删除。