拆分网络块

时间:2011-12-09 18:59:47

标签: java networking ip

如何在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

这样做的最佳和最有效的方法是什么。 谢谢

1 个答案:

答案 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