Задание 10 ЕГЭ: наибольший адрес компьютера
Наибольший или наименьший адрес компьютера. Тема номера — ip-адрес и маска сети. Ниже — пример с ответом и решением; кнопкой под ним можно решить такую же задачу с другими числами, ответ проверится сразу.
Пример
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске.
Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть назначены ни одному компьютеру в этой сети.
Сеть задана IP-адресом одного из входящих в неё узлов 147.40.122.168 и сетевой маской 255.248.0.0. Найдите наименьший в данной сети IP-адрес, который может быть назначен компьютеру.
В ответе укажите сумму числовых значений октетов найденного IP-адреса.
Например, если бы найденный адрес был равен 100.20.3.4, то в ответе следовало бы записать: 127.
Ответ
188Решение
Маска 255.248.0.0 содержит 13 единиц, на номер узла остаётся 19 бит. Октет маски 255 (первый) переписывает октет адреса без изменений; октеты маски 0 (третий, четвёртый) дают 0. Значащий октет маски — второй: 248 = 111110002, шаг сети 256 − 248 = 8. В адресе узла там 40 = 001010002; поразрядное И: 00101000 & 11111000 = 001010002 = 40 — ближайшее снизу к 40 число, кратное 8.
Адрес сети 147.40.0.0 компьютеру назначить нельзя, поэтому наименьший адрес компьютера на единицу больше: 147.40.0.1. В ответ: 188.
import ipaddress
net = ipaddress.ip_network("147.40.122.168/255.248.0.0", strict=False)
a = net.network_address + 1
print(a, sum(map(int, str(a).split("."))))