如何分配从198.16.16.0开始的2000个地址?

网络工程 IPv4 ip 子网 网络 IP地址
2022-02-25 14:51:04

这个问题来自Tannanebaum的CN书,完整描述如下:

从 198.16.0.0 开始有大量连续的 IP 地址可用。假设四个组织 A、B、C 和 D 分别按顺序请求 4000、2000、4000 和 8000 地址。对于其中的每一个,给出分配的第一个 IP 地址、分配的最后一个 IP 地址以及 wxyz/s 表示法中的掩码。

给出的答案如下:

To start with, all the requests are rounded up to a power of two. The starting
address, ending address, and mask are as follows:

A: 198.16.0.0 – 198.16.15.255 written as 198.16.0.0/20
B: 198.16.16.0 – 198.23.15.255 written as 198.16.16.0/21
C: 198.16.32.0 – 198.47.15.255 written as 198.16.32.0/20
D: 198.16.64.0 – 198.95.15.255 written as 198.16.64.0/19

根据我对子网的理解,这个答案没有意义。

如果我的理解是正确的,那么可以找到主机 log 2 of 2000 的位数 = 主机的 11 位。换句话说,我们总共需要保留 11 位来识别主机。

掩码为 11111111.11111111.11111|000.00000 = 255.255.248.0。

第一个地址是在我们将所有主机位保留为 0 的情况下:

在这种情况下,我们得到: 198.16.16.0 要找到结束地址,所有主机位都需要为 1:

198.16.(5 bits reserved)111, 111111111 然后我们得到: 198.16.10001111.11111111 = 198.16.143.255 这是一个错误的答案。

正确答案是:198.16.16.0 – 198.23.15.255 写成 198.16.16.0/21。

我哪里出错了,这个答案是如何计算的?

1个回答

255.255.248.0 或 /21 比 /24 大(或“短”) 3 位(十进制的 8 倍) - 这反过来又产生了 8 个连续的 /24。然后,8*256 = 2048,它很好地覆盖了 2000 个请求的地址。

198.16.16.0/21 不是 198.16.16.0 - 198.23.15.255。单个网络/掩码组合甚至无法很好地覆盖该范围。

那个所谓的“正确”答案是恕我直言是错误的。

补充: 您的问题实际上是:“我哪里出错了[...]?”

答:你几乎没有。您找到了正确的掩码 255.255.248.0(又名 /21)。

但是您计算的最后一个地址是 192.16。143 .255(在任何情况下都应该是 19 8 .16...)关闭,它将是 198.16。23 .255; 198.16.16.0 的第三个八位字节的二进制和掩码表示应该是0001'0|xxx,而不是1000'1|xxx

至于教科书的答案是如何计算的:请参阅我的评论-只能用忽视或复制和浪费来解释。