.04 Определение маски
Ошибка.
Попробуйте повторить позже
В терминологии сетей TCP/IP маска сети – это двоичное число, меньшее ; в маске сначала (в старших разрядах)
стоят единицы, а затем с некоторого места нули. Маска определяет, какая часть IP-адреса узла сети относится к
адресу сети, а какая -– к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам,
что и IP-адрес — в виде четырех байт, причем каждый байт записывается в виде десятичного числа.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и
маске.
Например, если IP-адрес узла равен 131.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 131.32.240.0.
Для узла с IP-адресом 128.225.157.50 адрес сети равен 128.225.128.0. Чему равно наибольшее возможное значение третьего слева байта маски? Ответ запишите в виде десятичного числа.
Решение руками:
Запишем третий слева байт IP-адреса в двоичной системе счисления: .
Аналогично запишем третий слева байт адреса сети, также в двоичной системе счисления: .
Учитывая, что адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу
узла и маске, запишем возможный вариант маски, обозначив символом «x» те места, где маска может иметь
неоднозначное значение: .
Так как значение должно быть наибольшее, то вместо символов «x» ставим 1. Получаем значение третьего слева
байта маски: .
Решение Python:
Нам нужно определить наибольшее возможное значение третьего слева байта маски сети, при котором адрес сети для IP 128.225.157.50 будет равен 128.225.128.0. Адрес сети вычисляется по правилу поразрядной конъюнкции (логического И) между IP-адресом и маской.
Для решения удобно использовать модуль ipaddress в Python. Идея заключается в переборе всех возможных масок от 0 до 32 единиц. Для каждой маски создаём объект сети с помощью ip_network(). Параметр strict=0 позволяет не ограничивать IP-адрес строго адресом сети, что удобно для перебора.
После этого выводим все варианты адресов сети и соответствующих масок. Среди этих вариантов ищем сеть 128.225.128.0. Из этих масок выбираем ту, у которой третий слева байт маски имеет наибольшее значение. Это значение и будет ответом на задачу.
from ipaddress import ip_network # Импортируем модуль для работы с IP-адресами и сетями # Перебираем все маски с количеством единиц от 0 до 32 for mask in range(33): # Создаём сетевой объект для IP 128.225.157.50 с текущей маской # strict=0 позволяет использовать любой IP-адрес, а не только адрес сети net = ip_network(f’128.225.157.50/{mask}’, 0) # Выводим адрес сети и маску # Позже среди этих вариантов ищем сеть 128.225.128.0 # и выбираем наибольшее значение третьего байта маски print(net, net.netmask) # После просмотра выводов выбираем маску с наибольшим третьим байтом # Это и будет ответ на задачу
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!