Разделение сетевого блока - PullRequest
2 голосов
/ 09 декабря 2011

Как разделить сетевой блок на подблоки в 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 Ответ

1 голос
/ 09 декабря 2011

Например - подсеть 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)

XOR исходная маска и новая маска, чтобы получить коэффициент сложения

00000000 00000000 11000000 00000000 (49,152)

Начиная с истинного базового 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
...