这个问题来自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。
我哪里出错了,这个答案是如何计算的?