Задание №13 — Маски подсети
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Сеть задана IP-адресом 137.143.126.100 и маской сети 255.255.255.252.
Определите минимальную сумму единиц в двоичной записи IP-адреса в этой сети.
В ответе укажите только число.
Правильный ответ
17
Пояснение
Решение:
В маске 255.255.255.252 стоит единиц, значит свободны только 2 младших бита, а сеть состоит из четырёх адресов. Двоичная запись адреса сети: 10001001 10001111 01111110 01100100; её фиксированные 30 битов 100010011000111101111110011001 содержат 17 единиц.
Эти 17 единиц присутствуют в каждом адресе сети, а два свободных бита можно обнулить — так получается адрес 137.143.126.100 с наименьшей суммой единиц. Значит, минимум равен 17.
net = 137 * 256**3 + 143 * 256**2 + 126 * 256 + 100
host = 32 - 30
print(min(bin(net + k)[2:].zfill(32).count('1')
for k in range(2 ** host))) # 17
Ответ: 17