Задача № 13 ЕГЭ по информатике посвящена работе с IP-адресами и масками подсети. Для многих она оказывается сложной из-за большого количества терминов и необходимости работать с двоичной системой счисления. На самом деле все сводится к нескольким базовым принципам: пониманию структуры IP-адреса, маски и умению выполнять поразрядные операции.
В этой части разберём ключевые понятия и посмотрим, как применять их на типовых заданиях.
Термины, которые будем использовать: маска подсети, адрес сети, IP-адрес, узел (хост), широковещательный адрес, бит сети, бит узла, октет, поразрядная конъюнкция.
Основные понятия
IP-адрес (Internet Protocol Address)
IP-адрес — это уникальный 32-битный идентификатор устройства в сети (в версии IPv4). В заданиях ЕГЭ он записывается в десятичном виде: четыре числа от 0 до 255, разделённые точками.
Пример: 192.168.1.10
Двоичный вид: 32 бита, разбитые на 4 октета.
Маска подсети
Маска подсети — это тоже 32-битное число, которое определяет, какая часть IP-адреса относится к адресу сети, а какая — к адресу узла.
Свойство: в двоичной записи маски сначала идут только единицы (биты сети), затем только нули (биты узла). Никаких чередований.
Пример: 255.255.255.0 (в двоичном виде 24 единицы и 8 нулей).
Поразрядная конъюнкция
Поразрядная конъюнкция (логическое «И») — это логическая операция над двумя битами: результат равен 1, только если оба бита равны. Применяется к IP-адресу и маске для получения адреса сети.
Правило для байтов:
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
Адрес сети (Network Address)
Адрес сети — это минимальный адрес в данной подсети. Обозначает саму сеть, а не отдельное устройство.
Как получить: поразрядная конъюнкция (логическое «И») IP-адреса узла и маски подсети.
Особенность: в адресе сети все биты узловой части равны 0.
Пример: для IP 192.168.1.156 и маски 255.255.255.240 адрес сети = 192.168.1.144.
Широковещательный адрес
Широковещательный адрес — это максимальный адрес в подсети. Используется для отправки данных сразу всем узлам сети.
Особенность: все биты узловой части равны 1.
Как получить: адрес сети + (в узловой части все биты установить в 1).
Биты сети и биты узла (биты хоста)
Бит сети — это бит в IP-адресе, который относится к адресу сети. Определяется единицей в маске на той же позиции.
Бит узла — это бит в IP-адресе, который относится к адресу конкретного устройства внутри сети. Определяется нулём в маске на той же позиции.
Научимся отличать их.
IP-адрес узла: 192.168.45.67
Маска подсети: 255.255.240.0
Переведём в двоичную систему счисления (каждый байт состоит из 8 бит):
IP (двоичный):
11000000.10101000.00101101.01000011
Маска (двоичная):
11111111.11111111.11110000.00000000
Подставим IP под маску:
11111111.11111111.11110000.00000000
11000000.10101000.00101101.01000011
Теперь посмотрим на каждую позицию бита (читаем слева направо).
Позиции 1–16 (первые два октета): маска везде 1 — биты сети.
Позиции 17–20 (первые 4 бита третьего октета): маска: 1111 (первые 4 бита третьего октета) — это биты сети.
Позиции 21–24 (последние 4 бита третьего октета): маска: 0000 — это биты узла.
Позиции 25–32 (четвёртый октет целиком):
Маска: 00000000 — это тоже биты узла.
Октет
Октет — это группа из 8 бит. В записи IP-адреса и маски каждый из четырёх десятичных чисел — это значение одного октета.
Диапазон: от 0 до 255 включительно.
Количество адресов в подсети
Количество адресов в подсети — это общее число всех возможных IP-адресов внутри данной подсети (включая адрес сети и широковещательный адрес).
Формула: $2^n$, где n — количество нулевых битов в маске.
Количество доступных узлов (хостов)
Количество доступных узлов — число устройств, которым можно назначить уникальные IP-адреса в подсети.
Формула:
$2^{\text{количество нулевых битов в маске}} − 2$
В конце вычитаются адрес сети и широковещательный адрес, поскольку они не могут быть присвоены хосту.
Разбор типовых задач
Задача 1
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети.
Сеть задана IP-адресом 124.8.0.0 и маской сети 255.248.0.0. Определите максимальное количество нулей в двоичной записи IP-адреса в этой сети.
Запишем данные в десятичном и двоичном виде:

Сеть получаем с помощью поразрядной конъюнкции, сначала вычисляем биты, потом переводим из двоичной системы в десятичную.
Биты сети в IP-адресе изменять нельзя, поэтому на первых 12 битах будет располагаться 7 нулей. Далее количество нулей нужно максимизировать. Заметим, что 13-й бит в IP-адресе всегда будет равен 1, поскольку 1 стоит на этом месте и в маске, и в адресе сети, значит заменить на 0 не получится — сеть изменится. На оставшиеся позиции поставить все 0 можно. Итого 7 + 19 = 26 нулей.
Ответ: 26.
Задача 2
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети.
Сеть задана IP-адресом 192.168.32.160 и маской сети 255.255.255.240. Сколько в этой сети IP-адресов, для которых сумма единиц в двоичной записи IP-адреса равна 10? В ответе укажите только число.
Запишем данные в десятичном и двоичном виде:

Находим то место, где у нас в маске прекращают быть единицы и начинаются нули. Опираясь на него можно сказать, что в адресе сети 100% уже будет 8 единиц, а по условию нужно 10. Значит на оставшиеся 4 места, где из-за маски у нас могут стоять как нули, так и единицы, нам нужно разместить еще 2 единицы.
Используем формулу размещения для этого:
P(занято мест, свободно мест) = (свободные места + занятые места) / ((занятые места)! * (свободные места)!) = 4! / (2! * 2!) = 6
Ответ: 6.
Задача 3
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети.
Сеть задана IP-адресом 90.65.32.0 и маской сети 255.255.224.0. Сколько в этой сети IP-адресов, у которых количество единиц и количество нулей в двоичной записи IP-адреса одинаково?
Запишем данные в десятичном и двоичном виде:

Находим то место, где у нас в маске прекращают быть единицы и начинаются нули. Одинаковое количество единиц и нулей значит, что у нас будет 16 единиц и 16 нулей в нашей сети. В битах сети у нас будет 7 единиц и 12 нулей, значит необходимо поставить ещё 4 нуля и 9 единиц.
Воспользуемся формулой: Р(4, 9) = 13! / (4! * 9!) = 715
Ответ: 715.
Задача 4
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети.
Узлы с IP-адресами 154.63.206.129 и 154.63.100.75 находятся в одной сети. Укажите наименьшее возможное количество принадлежащих этой сети IP-адресов, в двоичной записи которых чётное число единиц.
Запишем данные в десятичном и двоичном виде:

Первые два октета узлов совпадают, значит это октеты сети. Теперь нужно определить границы маски. Первые два октета маски состоят из единиц, на 17-м бите заметим, что в узлах стоят разные биты, значит их оба можно обратить только в 0 в сети, следовательно в маске на 17-й позиции стоит 0, обращающий и 1, и 0 в одно и то же. Чередования нет, поэтому все последующие биты в маске нулевые. В сети соответственно тоже.
У нас 16 битов хоста нулевые, значит количество адресов в сети 2^16, из них половина имеет чётное количество единиц, вторая половина — нечётное. Значит 2^16 / 2 = 32 768.
Ответ: 32 768.
Заключение
Задача № 13 проверяет не столько знание формул, сколько понимание структуры IP-адреса и маски. Если разобраться, какие биты относятся к сети, а какие — к узлу, большинство заданий сводится к аккуратной работе с двоичной записью и базовой комбинаторикой.
В этой части мы разобрали теорию и типовые приёмы решения аналитическим способом. В следующей статье продолжим тему и научимся решать такие задачи программно — с помощью модуля ipaddress на Python.