Существует отличный скрипт perl , который поможет вам визуализировать, как это работает.Пример вывода:
$ ./ipcalc 197.23.37.128/25
Address: 197.23.37.128 11000101.00010111.00100101.1 0000000
Netmask: 255.255.255.128 = 25 11111111.11111111.11111111.1 0000000
Wildcard: 0.0.0.127 00000000.00000000.00000000.0 1111111
=>
Network: 197.23.37.128/25 11000101.00010111.00100101.1 0000000
HostMin: 197.23.37.129 11000101.00010111.00100101.1 0000001
HostMax: 197.23.37.254 11000101.00010111.00100101.1 1111110
Broadcast: 197.23.37.255 11000101.00010111.00100101.1 1111111
Hosts/Net: 126 Class C
Сетевая часть маски в вашей задаче имеет длину 25 битов.Если вы хотите разделить его на еще 4 подсети, вам нужно еще два бита.(потому что math.pow(2,2) == 4
). Таким образом, вам придется расширить его до / 27 следующим образом:
$ ./ipcalc 197.23.37.128/27
Address: 197.23.37.128 11000101.00010111.00100101.100 00000
Netmask: 255.255.255.224 = 27 11111111.11111111.11111111.111 00000
Wildcard: 0.0.0.31 00000000.00000000.00000000.000 11111
=>
Network: 197.23.37.128/27 11000101.00010111.00100101.100 00000
HostMin: 197.23.37.129 11000101.00010111.00100101.100 00001
HostMax: 197.23.37.158 11000101.00010111.00100101.100 11110
Broadcast: 197.23.37.159 11000101.00010111.00100101.100 11111
Hosts/Net: 30 Class C
Чтобы получить следующую группу из 5 битов, добавьте один к маске сети:
$ python
>>> 128 + 0b100000
160
Итак, ваша следующая подсеть - 197.23.37.160/27
и т. Д.