show ip route 输出中的子网划分不正确

网络工程 子网
2021-07-17 05:00:51

在 CCNA 课程之一中,下图来自路由表:

在此处输入图片说明

我对我的子网划分技巧不是很自信,所以请确认我是否错了:172是 B 类网络 ( /16)。所以这意味着172.16.0.0/24已经被子网划分,因为显然/24大于/16

现在在图像中它说172.16.0.0/24有两个子网:172.16.1.0172.16.2.0但是对我来说这似乎很奇怪,因为当您进行子网划分时,子网必须是原始网络子网,对吗?但很明显172.16.1.0并且172.16.2.0不在,172.16.0.0/24因为范围是172.16.0.0 - 172.16.0.255.

那我有没有发现错误?或者我对子网划分感到困惑?

另外,我不明白的一件事是,当仅给出子网时,路由器如何知道原始网络(在本例中为 172.16.0.0/24)。它是如何计算出来的?

1个回答

你的“问题”其实是一连串的问题。为了将来参考,尽量避免这种情况。:-) 但是,这个问题是个好问题,我认为该领域的新手很容易犯这个错误,所以我会尽力回答。说实话,您的困惑根源与子网划分无关,而与show ip route输出本身有关(这是可以理解的)。

172 是 B 类网络 (/16)。所以这意味着 172.16.0.0/24 已经被子网划分了,因为显然 /24 大于 /16。

第一件事 - 有类寻址和路由已经死了很长时间了。我知道它仍然是网络课程的一部分,所以帮自己一个忙,一旦你完成你的课程,就忘记所有的课堂。IMO 仍然强迫人们了解这些主题只会造成混淆。

其次,前缀长度(子网掩码)与地址的类别无关。请参阅此答案以获取有关有类寻址实际工作原理的更多信息(以及对最后一个问题的答案的提示)。

现在在图像中它说 172.16.0.0/24 有两个子网:172.16.1.0 和 172.16.2.0。但是对我来说这似乎很奇怪,因为当您进行子网划分时,子网必须是原始网络的子网,对吗?但显然 172.16.1.0 和 172.16.2.0 不在 172.16.0.0/24 中,因为范围是 172.16.0.0 - 172.16.0.255。

就像我之前说的,这与子网划分无关,而与show ip route.

回到当 IOS 首次出现时,有类寻址和路由,正如您目前正在学习的那样。当时的路由表结构在设计时就考虑到了有类路由,并且是分层的,并且具有(并且仍然具有)许多级别。当无类寻址和路由出现时,路由表的层次结构仍然有效,所以它确实没有太大变化。

最终真正的答案在于Alex Zinin 所著的一本名为Cisco IP Routing的教科书(我的最爱之一)下面引用,强调我的:

与父网络路由一起显示的子网掩码不是存储在路由条目中的真实子网掩码,而是用于网络中所有子网的掩码。仅当所有子路由具有相同的掩码时,才为每个子网显示子网掩码;也就是说,不使用 VLSM。如果在一个主网络中使用了多个子网掩码,则每个子网路由都会增加一个特定的路由掩码,并且主网络使用有类掩码显示。

因此,换句话说,show ip route在适当的情况下输出可能会有些误导。回到您的输出,172.16.1.0/24 子网主要网络边界或有类边界是 172.16.0.0。由于 172.16.0.0 的所有子网的长度都是 /24,因此show ip route输出实际上只是告诉您它知道 172.16.0.0 有类网络,并且它知道的该主要网络的所有子网都具有相同的长度,即 /24。

尝试向路由表中添加一个网络,该网络是 172.16.0.0 的一部分,并且具有“非分类”长度,例如 /27 或 /25。怎么了?

另外,我不明白的一件事是,当仅给出子网时,路由器如何知道原始网络(在本例中为 172.16.0.0/24)。它是如何计算出来的?

再次,如果此时还不清楚,我会敦促您阅读我链接的上一个答案。:-)

编辑:要回答 OP 在评论中提出的一些进一步问题:

我对 9tut.com/subnetting-tutorial/2 上的练习 1 感到困惑。当我划分子网时,我习惯于获得一个像 4.0.0.0/24 这样的网络地址,我会借用主机位来创建子网。但在练习 1 中,他们计算出主要网络边界 4.0.0.0/8,并假设所有其他 A 类网络都是该主要网络边界的子网。你能确认这是正确的吗?这让我很困惑,因为你告诉我现在很少使用有类边界,所以我认为这可能是一种旧的/过时的考虑子网划分的方法。

它基本上查看子网划分的旧方法。不需要确定地址类别来确定可用的子网和每个子网的主机数。这个问题措辞不好,在现实世界中,没有人会被“分配”一个没有附加长度的任意前缀,即 4.0.0.0。考虑到用于子网划分的 /24 前缀长度的参数,如果他们为您提供了任何比 /24 短的前缀长度,您可以轻松找到不同的答案,它不一定必须是 /8。该练习的措辞很可能迫使读者记住地址类别,以便正确回答。

为了让我的问题更清楚一些,我将举一个例子。回顾一下我最初问题中的图片。IP 路由表说 172.16.0.0/24 是子网划分的并且有 2 个子网。IP 路由表似乎也将 172.16.1.0/24 和 172.16.2.0/24 视为子网,因为它们在主要有类网络 172.16.0.0/16(即 172.16.0.0 - 172.16.255.255)的范围内。所以这可能是路由表如何看待子网,对吗?

是的。同样,路由表的内部结构自有类路由时代以来确实没有改变。任何被视为有类网络的子网的东西都将被路由器视为子网。

最后一件事:如果我对一个网络地址进行子网划分,我总是可以通过对子网进行超网来恢复这个网络,对吗?这就是我原来的帖子的最后一个问题的答案。

不,不是。确定主要网络或有类网络边界与子网划分或超网无关。其实并不复杂。

  • 第一步:确定地址的类别
  • 第二步:利用有类地址的自然掩码确定有类网络边界。

以下是具有不同掩码长度的三个 IP 地址示例:

  1. 115.65.6.18/20
  2. 200.200.200.200/27
  3. 188.154.17.8/15

对于#1:

该地址是 A 类地址,因为第一个八位字节是 115,这属于前导位为0(0 到 127)的数字范围A 类网络的自然掩码是 255.0.0.0。所以有类网络边界是 115.0.0.0/8。

对于#2:

该地址是 C 类地址,因为第一个八位字节是 200,这属于前导位为110(192 到 223)的数字范围C 类网络的自然掩码是 255.255.255.0。所以有类网络边界是 200.200.200.0/24。

对于#3:

该地址是 B 类地址,因为第一个八位字节是 188,这属于前导位为10(128 到 191)的数字范围B 类网络的自然掩码是 255.255.0.0。所以有类网络边界是 188.154.0.0/16。

这就是路由器能够确定任何子网的有类网络边界的方式。