Третий байт маски (1 часть). №13 ЕГЭ
1 часть подборки заданий, в которых нужно определить третий слева байт маски по IP-адресу узла и адресу сети. Решение на Python.
Общее для всех заданий пояснение:
В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая часть IP-адреса узла сети относится к адресу сети, а какая –– к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам, что и IP-адрес, –– в виде четырёх байтов, причём каждый байт записывается в виде десятичного числа. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого разряда –– нули. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.
Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 231.32.240.0.
№403FFC
Для узла с IP-адресом 117.191.176.37 адрес сети равен 117.191.160.0. Чему равен третий слева байт маски? Ответ запишите в виде десятичного числа.
Решение
При поразрядной конъюнкции (в двоичном виде) IP-адреса узла и маски получаем адрес сети. Конъюнкция с маской оставляет без изменения разряды, относящиеся к адресу сети (конъюнкция с 1) и обнуляет разряды, относящиеся к адресу узла (конъюнкция с 0).
Из условия, два первых байта слева у IP-адреса узла и адреса сети одинаковы:

То есть в двоичном представлении первые два байта маски состоят из единиц (11111111 каждый).
Различия начинаются с третьего байта. В нём несколько младших разрядов маски будут равняться 0.
Переведём в двоичную систему третий байт IP-адреса узла (176) и адреса сети (160) так, чтобы в результате получилось восьмиразрядное число:
host_3 = f'{176:08b}’

Если вывести результат, увидим, что
host_3 = 10110000
network_3 = 10100000
Начиная с некоторого разряда в адресе сети будут нули. Если к тому же в адресе узла в этом разряде единица, в маске должен быть ноль.

Останется только перевести полученное число 11100000 в десятичную систему счисления.
Составим маску с помощью Python. Маска будет в строковой переменной mask_3:

Найдём разряд, после которого в адресе сети идут нули. Для этого переберём с конца разряды третьего байта. Всего 8 разрядов, переберём индексы от 7 до 0 с шагом -1. Найдя первую после нулей единицу, составим маску и прервём цикл:

Выведем результат в десятичной системе счисления:

Программа

Результат
224
№AB7B0D
Для узла с IP-адресом 179.57.101.43 адрес сети равен 179.57.64.0. Чему равно значение третьего слева байта маски? Ответ запишите в виде десятичного числа.
Решение
Изменения в программе №403FFC:
network_3 = f'{64:08b}’
Результат
192
№E44819
Для узла с IP-адресом 147.192.92.64 адрес сети равен 147.192.80.0. Чему равно значение третьего слева байта маски? Ответ запишите в виде десятичного числа.
Решение
Изменения в программе №403FFC:
network_3 = f'{80:08b}’
Результат
240
№5F11A9
Для узла с IP-адресом 119.134.58.57 адрес сети равен 119.134.48.0. Чему равно значение третьего слева байта маски? Ответ запишите в виде десятичного числа.
Решение
Изменения в программе №403FFC:
network_3 = f'{48:08b}’
Результат
240
№363CA3
Для узла с IP-адресом 111.81.224.27 адрес сети равен 111.81.192.0. Чему равен третий слева байт маски? Ответ запишите в виде десятичного числа.
Решение
Изменения в программе №403FFC:
network_3 = f'{192:08b}’
Результат
192
Задания из Банка заданий ЕГЭ