哪些 IPv4 地址范围不能用前缀表示法表示?

网络工程 ipv4 ip 字首
2021-07-06 20:34:18

我试图做一个练习,我们有一系列 IPv4 地址,我们需要将它转换为“前缀表示法”,egabcd/x 和“地址/掩码”。

现在,显然,以下范围 121.34.56.64–121.34.56.128 既不能用前缀表示法也不能用地址/掩码表示。这是为什么?我的意思是,它们的前 24 位是相同的,所以我会用前缀表示法将范围表示为 121.34.56.64/24。

我不明白为什么不能为它们分配前缀表示法和地址/掩码表示法的其他范围:

  • 128.131.9.0–128.131.9.192
  • 93.20.10.0–93.20.11.0
  • 128.242.138.0–128.242.139.127

也许我只是对如何获得这些前缀和掩码感到困惑。那么,一般来说,哪些范围不能用前缀表示法和前缀/掩码表示法表示?是否有可能用前缀符号表示范围而不用前缀掩码(反之亦然)?

4个回答

问题是当你说“我会用前缀表示法将范围表示为 121.34.56.64/24”时,你最终会比较不相等的东西

121.34.56.64到121.34.56.128的范围包含在121.34.56.64/24(实际上是121.34.56.0到.255的256个IP)中,但两者并不等价。

121.34.56.64-128 不能表示为单个前缀的原因是因为最后一个 128 IP。到 127 时,IP 的第 25 位为 0。到 128 时变为 1。

因此,覆盖所有这些 IP 的单个掩码最多只能有 24 位长,这会导致 IP 范围比您想要的要长。所以你能做的最好的是 121.34.56.64/26(从 0.64 到 0.127),然后添加一个 0.32 来覆盖最后的 0.128。

其他例子类似。如果您设法找到覆盖范围内所有 IP 的单个掩码,您会发现它还覆盖了您想要的 IP 之前或之后的一堆其他 IP。因此,要准确覆盖这些范围,您需要组合几个较小的 IP 范围。

通过地址 MASK、前缀或通配符掩码表示 IPV4 都是等效的,但它取决于两件事
1-如果您遵循有类或无类 IPV4 表示,例如,如果您按照有类样式来表示 IPV4,则不能表示 121.34。 56.X/24 OR 121.34.56.0 掩码 255.255.255.0 因为它是 A 类,如您所知,A 类是 255.0.0.0 掩码或 /8 前缀。
2- IOS 上的命令,您将为它配置此 IPV4,例如,您不能在 IOS 中为某些接口以 IP/前缀的形式呈现 IPV4,但您可以在 NXOS 中这样做,对于 EIGRP,IPV4 配置应以形式出现地址和通配符掩码。

您必须区分“ip 范围”和“ip 网络”。

这些术语通常用于 IP 网络,但它们并不等效。

IP 范围是任意数量的连续 IP 地址。

192.168.1.1-192.168.1.10 是一个范围。但它不是网络,因此不能用前缀或子网掩码表示法编写。

192.168.1.0/24 是一个网络(它包含 IP 地址范围 192.168.1.0 - 192.168.1.255)

121.34.56.64 - 121.34.56.128 也是一个范围而不是网络。最近的网络是 121.34.56.64/26,其中包含范围 121.34.56.64-121.34.56.127(而不是 128)。

或者你可以把它写成 2 个网络的总和:121.34.56.64/26 和 121.34.45.128/32(这个网络只包含 1 个 IP 地址)

-edited- 93.20.10.0–93.20.11.0 不是网络

128.242.138.0–128.242.139.127 对应于 2 个网络:128.242.138.0/24 和 128.242.139/25

如果您使用 Windows,请下载 solarwinds 子网计算器(免费)以轻松查看网络边界。您可以在网上找到其他网络计算器。

现在,显然,以下范围 121.34.56.64–121.34.56.128 既不能用前缀表示法也不能用地址/掩码表示。这是为什么?我的意思是,它们的前 24 位是相同的,所以我会用前缀表示法将范围表示为 121.34.56.64/24。

因为 121.34.56.64/24 包括范围 121.34.56.64–121.34.56.128 但也包括不属于范围 121.34.56.64–121.34.56.128 的其他地址。

也许我只是对如何获得这些前缀和掩码感到困惑。那么,一般来说,哪些范围不能用前缀表示法和前缀/掩码表示法表示?

在以下情况下,您可以将范围 AB 写为前缀表示法:

  1. 该范围的第一个地址 A 具有 H x 0 位序列作为最低有效位。
  2. 范围的最后一个地址 B 与 A 共享所有相同的 (32-H) 位,并且对于最低有效位具有 H x 1。

例如:

A = 1.1.240.0 = 00000001.00000001.11110000.00000000
B = 1.1.243.255 = 00000001.00000001.11110011.11111111
H = 10 bits

所以你可以把 AB 写成 A/(32-H): 1.1.240.0-1.1.243.255 写成 1.1.240.0/22

是否有可能用前缀符号表示范围而不用前缀掩码(反之亦然)?

不。