IPv4关于子网划分的理论问题

网络工程 IPv4 子网
2022-02-27 02:57:22

假设我拥有 207.45.222.0/24。如果我子网创建 207.45.222.0/25 和 207.45.222.128/25,我是否有效地放弃了所有这些 /24 地址?

/24 指定在路由方面会发生什么变化?ping 一个以前分配给主机的此类地址(例如:207.45.222.1/24)会产生什么结果?

从理论上讲,像 207.45.222.0/24 和 207.45.222.0/25 这样的数字是可以区分的——第一个网络的地址为 24 位,第二个网络的地址为 25 位。因此,路由器似乎应该能够区分这两个子网,并且我应该能够将旧的 /24 地址与新的 /25 地址一起使用。在 /24 子网中,我可以使用 256 个地址,而在两个 /25 子网中,我将分别拥有 128 个地址。

我意识到这很愚蠢,但我不知道为什么。(一个含义是单个数字 207.45.222.0 被用于许多子网 /24、/25、/26、/27、...)

那么上面的推理有什么问题呢?子网指定如何工作?

3个回答

在回答您对 JFL 答案的评论时,特定/最接近的匹配被称为“最长前缀匹配”,可以解释如下。

路由器可以保存许多与接收到的数据包的目标 IP 地址相匹配的路由。例如:

  • 207.45.0.0/16
  • 207.45.222.0/24
  • 207.45.222.0/25

每条路由都有不同的前缀长度,用十进制表示法 /xx 编写,表示子网掩码中连续二进制 1 的数量。

下面是每个前缀的二进制表示。

  • /16 = 11111111.11111111 .00000000.00000000 (255.255.0.0)
  • /24 = 11111111.11111111.11111111 .00000000 (255.255.255.0)
  • /25 = 11111111.11111111.11111111.1 0000000 (255.255.255.128)

路由器将检查 IP 标头中的目标 IP 地址并运行算法以确定最长前缀匹配与其路由表中可能的路由。

一旦确定了最长前缀匹配,路由器将使用路由信息来转发数据包。

在本例中,如果路由器收到一个目的地址为 207.45.222.100 的数据包,路由器将选择 207.45.222.0/25 作为最长前缀匹配。

但是,如果路由器收到一个目的地址为 207.45.222.200 的数据包,路由器将选择 205.45.222.0/24 作为最长前缀匹配。

如果你配置了 207.45.222.0/24 和 207.45.222.0/25 两个网络,发往 207.45.222.0/24 下半部分(.1 到 .126)的主机的流量会发现它们无法接收来自外部的流量他们的子网(当主机的子网掩码配置不正确时,这是一个很常见的问题)。

由于最长前缀长度匹配,路由器会将发往主机 207.45.222.1 到 .126 的流量转发到 207.45.222.0/25 网络。

您不能同时使用完整的 /24 网络和该网络的某些子网。(这当然适用于任何网络规模)。

首先,大多数路由器不允许配置重叠网络,无论是在不同的接口上还是在同一个接口上。

但是有些路由器会允许它,那么在这种情况下会发生什么?

假设您配置:带有 IP 地址的
eth1 带有 IP 地址207.45.222.1/24
的 eth2207.45.222.1/25

那么你将在路由表中有两个条目

207.45.222.0/24 via eth1
207.45.222.0/25 via eth2

例如,当路由器接收到一个数据包时207.45.222.17,它会在其路由表中查找更具体的匹配项(这是非常重要的一点,也是 IP 路由工作原理的基础)。

在这种情况下,最接近的匹配是207.45.222.0/25 via eth2路由器将从 eth2 发送数据包(在 arp 解析之后等......)

所以即使你在 eth1 后面有一个主机 207.45.222.17,路由器也不会发送任何东西。/24 网络将无法从外部世界访问。

回答“那么上述推理有什么问题?”这个问题的最简单方法。您的问题的一部分是您在谈论 IP 地址,就好像它们本身包括其前缀长度(例如:207.45.222.1/24),但是当另一个端点与您通信时,他们只是在使用您的 IP,这意味着他们会无法联系 207.45.222.1 的两种不同“类型”。