我目前正在学习路由,几天后我将进行一次测试。我的教科书上有这个练习:
路由器具有以下路由表和以下接口配置:
- 接口 1:131.175.21.254,255.255.255.0
- 接口2:131.175.12.254,255.255.255.0
描述具有以下目标地址的数据包的转发是如何发生的:
A。131.175.21.86
b.131.175.16.65
C。131.180.21.78
d.200.45.21.84
我的书不是用英文写的,所以我不得不把它从意大利语翻译过来。
我的第一个问题是:First Hop 到底是什么?我的书中从来没有提到过它,一次也没有。
无论如何,我不知道它到底是什么,我只是假设它是下一跳地址。
另外,我知道在路由表中,网络地址 0.0.0.0 代表“默认路由”:当目标地址与路由表中的任何记录都不匹配时,将采用网络为 0.0.0.0 的地址。
但是第一跳 0.0.0.0 是什么?在这种情况下,数据包实际上转发到哪里?
我对这个练习的答案如下:
A。数据包被转发到131.175.21.86发生这种情况是因为接口 1 的 Net ID 与此 IP 地址的 Net-ID 相同,所以会发生直接转发。
b. 131.175.21.2,因为目标 IP 地址与路由表的第二条记录匹配
C。 131.175.21.4,因为目标 IP 地址与路由表的第 6 条记录匹配
d. 0.0.0.0因为目标 IP 地址与路由表中的任何记录都不匹配。
对吗?本练习中也从未使用过界面 2。
答案1
您的教科书中可能不会显示但在大多数路由表中显示的内容是连接接口的附加隐式路由以及通常用于每条路由的接口。这里有一个有趣的观察,关于设备如何路由数据包。
典型的 Cisco IOS 路由表可能如下所示(对于你的例子,假设路线是静态输入的):
RouterA#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
<text omitted>
Gateway of last resort is not set
131.0.0.0/16 is subnetted, 9 subnets
C 131.175.21.0/24 is directly connected, Interface1
C 131.175.12.0/24 is directly connected, Interface2
S 131.175.15.0/24 [120/1] via 131.175.21.1, 00:00:00, Interface1
S 131.175.16.0/24 [120/1] via 131.175.21.2, 00:00:00, Interface1
S 131.175.17.0/24 [120/1] via 131.175.21.3, 00:00:00, Interface1
S 131.180.23.0/24 [120/1] via 131.175.21.4, 00:00:00, Interface1
S 131.180.18.0/24 [120/1] via 131.175.21.4, 00:00:00, Interface1
S 131.180.21.0/24 [120/1] via 131.175.21.4, 00:00:00, Interface1
S 131.180.0.0/24 [120/1] via 131.175.21.5, 00:00:00, Interface1
S* 0.0.0.0/0 is directly connected, Loopback0
表中的每个路由都有网络地址和用于匹配的位(在本例中为前 24 位,即前 3 个八位字节)、路由将数据包发送到的“下一跳”地址,以及设备知道该跳存在的接口。
因此,您可以看到第 3 层设备继续使用网络掩码尝试将其收到的每个数据包的最左边位与适当的路由进行匹配。它从上到下进行,通常首先对直接连接的路由进行排序,然后对最严格的网络掩码路由进行排序(例如,在 /24 路由之前有 /30 路由)。
如果没有按照上面的路由表配置适当的默认路由,会发生什么情况?这取决于设备的配置方式。在讨论问题 d 示例之前,我们将介绍一个有趣的示例。假设收到了发往目标地址的数据包131.175.18.1它会去哪里?它会先找到父路由131.0.0.0/16视为匹配并继续检查子路由。检查完所有子路由后仍未找到匹配项,则将执行 2 个操作中的 1 个。如果设备已配置无阶级它将尝试使用上述默认路由。如果设备已配置有分类的它将会直接丢弃该数据包。
在您的问题中,IP 地址不匹配任何父路由,实际上实际上是C 类地址代替 B 类地址正如我们目前所见。设备可能会立即转到默认路由,但没有足够的信息表明默认路由连接到特定接口或特定的下一跳路由器。从上面提供的信息来看,它似乎没有配置,因此路由器会丢弃数据包,就好像默认路由配置为环回地址(为了清晰起见,我将其添加到了路由表中 - 但可能不会出现在那里)。
答案2
第一跳是数据包发送到的机器/IP 地址。如果您想象一个跟踪路由(显示数据包经过的所有机器),第一跳就是跟踪路由的第一行。事实上,第一跳就是下一跳 - 第一跳适用于源自设备的数据包,而下一跳可能是路由器看到的转发数据包。
下一跳为 0.0.0.0 的路由表是不寻常的 - 这可能是一个点对点接口,例如 ppp - 通常路由表的每一行都有一个与之关联的接口 - 似乎缺少了这个 - 但默认路由必须是 1:1 映射,因此如果发送该接口的信息,则只能与另一端的 1 个接口进行通信。
你的答案是正确的。