В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места — нули. Обычно маска записывается по тем же правилам, что и IP-адрес — в виде четырёх байтов, причём каждый байт записывается в виде десятичного числа. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.
Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 231.32.240.0.
Узлы с IP-адресами 98.162.71.151 и 98.162.71.155 находятся в одной сети. Чему равно наибольшее количество возможных единиц в маске этой сети?
Запишем четвёртый байт IP-адресов:
15110 = 1001 01112,
15510 = 1001 10112.
Заметим, что
Ответ: 28.
Приведём решение Ильи Андрианова на языке Python.
from ipaddress import *
maxi = 0
for mask in range(32+1):
net1 = ip_network(f'98.162.71.151/{mask}', 0)
net2 = ip_network(f'98.162.71.155/{mask}', 0)
if net1 == net2:
maxi = max(maxi, mask)
print(maxi)

