LAN1 上的主机 (HOST_A) 如何将数据包发送到距离超过 1 跳的网络,路由器 (ROUTERX) 如何处理该数据包?

网络工程 路由 交换
2022-02-28 18:56:46

假设有一个主机 ,HOST_A正在LAN1发送一个数据包。该数据包的目标地址是:10.10.11.77

HOST_A将参考它的路由表并看到没有条目10.10.11.77并将数据包转发到默认网关,0.0.0.0/0. 假设 arp 缓存中有默认网关的 mac 地址,HOST_A会将数据包封装到一个以太网帧中,目的地为默认网关的 mac 地址。

发送到默认网关后,到达ROUTERX默认区域中的路由器 。路由器需要将数据包转发出正确的接口。路由器直接位于 5 个子网上。

接口及其 IP:

  • so-0/0/0有一个IP10.0.12.1/24

  • so-0/0/1有一个IP10.0.19.1/24

  • so-0/0/2有一个IP10.0.17.1/24

  • so-0/0/3有一个IP10.0.23.1/24

     Network    | Prefix | Next-Hop  | Interface
    --------------------------------------------
     10.10.0.0  | /20    | 10.0.12.0 | so-0/0/0 scope global
     10.10.8.0  | /21    | 10.0.19.0 | so-0/0/1 scope global
     10.10.8.0  | /22    | 10.0.17.0 | so-0/0/2 scope global
     10.10.10.0 | /24    | 10.0.23.0 | so-0/0/3 scope global
    

数据包将被转发出接口 so-0/0/2,因为它是最具体的匹配。我们不会从 so-0/0/3 发送它,因为尽管前缀更长,但第 24 位不匹配

编辑:这是我困惑的根源,摘自 The Illustrated Network: How TCP/IP works in a modern network 2nd Ed。

LAN1在我的示例中使用而不是,LAN2中间的部分描述了查找过程。

考虑从 LAN2 发送到 10.10.11.77 ( bsdclient ) 的数据包。请记住,网络是 10.10.11.0/24 ...

...不再有条目。这使得 /22 条目成为目标地址的最长匹配项,并且数据包被转发到 10.10.17.2。其余位用于在 LAN2 上本地传送数据包。

2个回答

数据包将被转发出接口 so-0/0/2,因为它是最具体的匹配。

该前缀不匹配。10.10.0.0/22匹配10.10.0.010.10.7.255最长/最具体的前缀匹配10.10.11.77是,因此使用接口上的10.10.0.0/20网关10.0.12.2so-0/0/0

虽然远程网络的路由可能重叠,但无法配置具有重叠本地网络的主机,甚至无法在多个接口上配置相同的 IP 地址( 10.10.0.8)。

这里有关于子网划分、网络掩码和前缀的精彩问答

其余位用于 LAN1 上的本地传送。

整个目标 IP 地址用于通过 LAN1 传送对于基于 MAC 的 LAN,下一跳网关的 IP 地址通过 ARP(或在主机的 ARP 表中查找)解析为 MAC 地址,并将 IP 数据包封装在寻址到该 MAC 的帧中。

HOST_A 将参考它的路由表,发现 10.10.11.77 没有条目,并将数据包转发到默认网关。

HOST_A 将从最长到最短前缀检查其路由表,直到找到匹配项。带有前缀的默认路由0.0.0.0/0是最短的前缀,因此总是最后检查。因此,它仅在没有特定路线时使用。如果未找到匹配项且没有默认路由,则无法发送数据包并将其丢弃。

其余位用于 LAN1 上的本地传送。

这是不正确的,而且意义不大。IP 地址是一个完整的单元。路由器不会将它们分开。