ЕГЭ · IP-адреса≈ 4 мин чтенияБесплатно

Маски подсети в ЕГЭ: как найти адрес сети и посчитать IP-адреса

Маска показывает, какая часть IP-адреса относится к сети, а какая может меняться внутри неё. Разберём один адрес вручную и проверим результат в Python — без заучивания отдельных решений.

Сразу к самопроверке
Найти границу своей сети
Найти границу своей сети · от схемы к решению
ШАГ 01

Сначала уточним номер задания

В материалах ЕГЭ-2026 маски подсети встречаются в задании 13. В проекте изменений ФИПИ на 2027 год эта тема перенесена в задание 10. Метод решения остаётся полезен для обеих подборок. На сайте есть подборка по нумерации 2027 года и прежнее задание 13.

Дальше используем IPv4: адрес состоит из 32 бит, записанных четырьмя числами от 0 до 255. Например, 192.168.14.173. Каждое из четырёх чисел — октет, то есть восемь бит.

ПОПРОБУЙТЕ САМИ · УЧЕБНЫЙ ПРИМЕР

Где заканчивается адрес сети?

IP-адрес: 192.168.14.173. Измените длину маски и посмотрите, как меняется сеть.

IP:    10101101
Маска: 11000000
И →    10000000
192.168.14.128 /26

173 И 192 = 128. В сети 64 адреса, включая адрес сети и широковещательный.

ШАГ 02

Что означает маска /26

В маске сначала идут единицы, затем нули. Запись /26 означает: 26 бит заняты общей частью сети, а 32 − 26 = 6 бит остаются для адресов внутри неё.

Первые три октетаПоследний октетПолная маска
24 единицы11000000₂ = 192255.255.255.192

Чтобы получить адрес сети, применяем побитовое И к адресу и маске: единица получается только из пары 1 и 1. Там, где в маске единица, бит адреса сохраняется; там, где ноль, он обнуляется.

ШАГ 03

Пример: 192.168.14.173 с маской 255.255.255.192

Первые три октета маски равны 255, поэтому 192, 168 и 14 сохраняются. Считаем только последний октет:

Что записываемВосемь битДесятичное значение
Октет адреса10101101173
Октет маски11000000192
Результат И10000000128

Получили адрес сети 192.168.14.128. Свободны шесть бит: число всех адресов равно 2⁶ = 64. Диапазон заканчивается на 192.168.14.191: 128 + 64 − 1 = 191.

Если в условии просят сумму октетов адреса сети, ответ будет 192 + 168 + 14 + 128 = 502. Выписывайте именно то, что спрашивают: сам адрес, сумму октетов или количество подходящих адресов.

ШАГ 04

Когда нужно посчитать единицы в адресах

Допустим, в этой сети нужно найти число IP-адресов с чётным количеством единиц в полной двоичной записи. В постоянной части адреса 9 единиц. В шести свободных битах должно быть нечётное число единиц.

У 64 шестибитных наборов ровно половина имеет нечётную сумму битов: изменение последнего бита разбивает наборы на пары с противоположной чётностью. Значит, подходят 32 адреса.

Не вычитайте два адреса автоматически. В этом примере считаются все IP-адреса сети. Если задача отдельно требует адреса обычных узлов и исключает адрес сети и широковещательный адрес, условия подсчёта будут другими.

ШАГ 05

Проверка через Python

Модуль ipaddress входит в стандартную библиотеку Python. Параметр strict=False позволяет передать адрес узла: Python сам определит адрес его сети.

from ipaddress import ip_network

net = ip_network("192.168.14.173/26", strict=False)
print(net.network_address)    # 192.168.14.128
print(net.broadcast_address)  # 192.168.14.191
print(net.num_addresses)      # 64

count = 0
for address in net:
    bits = format(int(address), "032b")
    if bits.count("1") % 2 == 0:
        count += 1
print(count)                  # 32

Цикл for address in net перебирает все адреса сети. Метод hosts() имеет другие правила исключения адресов — не подменяйте им этот перебор без проверки условия. Описание объектов сети есть в документации Python.

ШАГ 06

Что проверить перед ответом

  • Каждый октет переведён в восемь бит, включая нули слева.
  • Маска применяется через И, а не сложение чисел.
  • Количество свободных битов вычислено как 32 минус длина префикса.
  • Чётность считается по всему IP-адресу, если так сказано в условии.
  • Не перепутаны адрес сети, число адресов и число разрешённых узлов.

Проверьте себя

Сначала решите самостоятельно. Затем проверьте ответ или откройте объяснение.

Ответ и объяснение

64. Маска последнего октета — 224 (11100000₂). 70 = 01000110₂. После И получаем 01000000₂ = 64, то есть сеть 10.0.0.64.

Ответ и объяснение

32. Свободны 32 − 27 = 5 бит. Число наборов — 2⁵ = 32.

Ответ и объяснение

224. После первых 24 единиц остаются ещё три: 11100000₂ = 128 + 64 + 32 = 224.

Закрепить тему

Примени изученный приём на новой задаче.

Решить задачу
Ещё по теме и поделиться
Поделиться: Telegram ВКонтакте
ВАШ ПРЕПОДАВАТЕЛЬНикита Саралашвили

Разберёмся вместе

ОГЭ, ЕГЭ и программирование — от первого вопроса до уверенного решения.

Загружаем стоимость занятий…

Обсудим вашу цель?

Напишите, к чему готовитесь и с чем нужна помощь.

Все условия занятий