举例来说,我结合了 16 个现有前缀,它们的网络掩码长度为“/12”,我将如何计算新地址的网络掩码长度?
我知道如何组合 2 个地址,但不确定如何处理?
举例来说,我结合了 16 个现有前缀,它们的网络掩码长度为“/12”,我将如何计算新地址的网络掩码长度?
我知道如何组合 2 个地址,但不确定如何处理?
aggregateJoe Abley 编写的工具(在 Ubuntu 中可用,也可能在其他 Linux 发行版中可用)可能很有用:
% aggregate
aggregate: maximum prefix length permitted will be 32
10.0.0.0/12
10.16.0.0/12
10.32.0.0/12
10.48.0.0/12
10.64.0.0/12
10.128.0.0/12
结果是:
10.0.0.0/10
10.64.0.0/12
10.128.0.0/12
我只是把它们写出来然后解决。例如,让我们以以下几个前缀为例:
10.32.0.0/16
10.45.0.0/16
10.37.0.0/16
.
.
.etc
它们都在第一个八位字节匹配,所以不用担心。您需要弄清楚它们在第一个不同的八位字节上的匹配位置。在上面的示例中,我们将它们写出并将它们转换为二进制。记下它们在二进制中相同的地方:
32
37
45
00100000
00100101
00101101
----xxxx
以上都匹配前四位,因此成为边界。位数还告诉您要使用的斜杠。然后使用“全零”地址作为子网。在上面的例子中,它们都匹配到第二个八位字节中的第 4 位。每个八位字节为 8 位,因此新的位边界变为 8 + 4 = 12。
所以我们上面的最终结果是:10.32.0.0/12
我知道如何组合两个地址...
这是完全相同的“2 的幂”数学...... 2 = 2^1,所以 2 /12 等于 (12-1) /11。16 = 2^4,所以 16 /12 变成 (12-4) /8。
理论上,在实践中,/12 可能不属于 2 的偶次幂。 [另见:子网表] x.0/12 和 x.16/12 可以形成 x.0/11,但 x.16/ 12和x.32/12不能组成x.16/11(因为16是x.0/11的中间)