В терминологии сетей TCP/IP маска сети — это двоичное число, меньшее ; в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам, что и IP-адрес — в виде четырёх байт, причём каждый байт записывается в виде десятичного числа. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.
Для узла с IP-адресом 215.181.200.27 адрес сети равен 215.181.192.0. Чему равно наибольшее возможное значение третьего слева байта маски? Ответ запишите в виде десятичного числа.
Решение:
Решение на Python:
from ipaddress import ip_network, IPv4Address
def normalize(n): # Функция для получения из двоичного числа маски
return str(IPv4Address(int(n.ljust(32, "0"), 2)))
for mask in range(32): # Перебираем маски, если подходит, то выводим третий слева байт
net = ip_network(f"215.181.200.27/{mask}", strict=False)
if str(net.network_address) == "215.181.192.0":
mask = normalize("1" * mask)
print(mask.split(".")[2])
Ответ: 240