如何在Java中将网络块拆分为子块。我想从给定的67.10 / 16块中找出,我可以生成哪些块/ 18。对于例如输出应该是这个..
67.10.0/18
67.10.64/18
67.10.128/18
67.10.192/18
或者如果我输入67.10 / 16且目标cidr为/ 17,则输出应为
67.10.0/17
67.10.128/17
这样做的最佳和最有效的方法是什么。 谢谢
答案 0 :(得分:1)
例如 - 将子网67.10.1.1 / 16分成四个块。 一般来说:
将基本IP地址转换为数字。
01000011 00001010 00000001 00000001(1,124,729,089)
将基本遮罩转换为数字。
11111111 11111111 00000000 00000000(4,294,901,760)
使用掩码屏蔽基本IP,提供真实的基本IP 。
01000011 00001010 00000000 00000000(1,124,728,832)
将新遮罩(/ 18)转换为数字
11111111 11111111 11000000 00000000(4,294,950,912)
对原始蒙版和新蒙版进行异或,以获得加法因子
00000000 00000000 11000000 00000000(49,152)
从 true base IP
开始for x = 0 to (2^(new cidr-old cidr))-1
use **true base IP**
true base IP = true base IP + addition factor
next x