Все задачи №10
№10

Наибольший адрес компьютера

В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств. Сеть задана IP-адресом одного из входящих в неё узлов 68.203.243.87 и сетевой маской 255.255.224.0. Найдите наибольший в данной сети IP-адрес, который может быть назначен компьютеру. В ответе укажите сумму числовых значений октетов найденного IP-адреса. Например, если бы найденный адрес был равен 100.20.3.4, то в ответе следовало бы записать: 127

Источник: ФИПИ (Открытый банк), № 29345

Ответвпиши то, что вывела программа
Показать разбор
  1. Создай сеть через ip_network по адресу узла и маске. Дан узел, а не адрес сети, поэтому второй аргумент False.
  2. Возьми широковещательный адрес net.broadcast_address.
  3. Вычти из него 1: сам широковещательный адрес компьютеру назначить нельзя.
  4. Сложи четыре числа адреса через sum(ip.packed).
from ipaddress import ip_network

net = ip_network('68.203.243.87/255.255.224.0', False)
ip = net.broadcast_address - 1
print(sum(ip.packed))