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

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

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

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

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

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

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