Задание 13 ЕГЭ по информатике: маски подсети и адресация в сетях

Подтемы

Что проверяет задание

Задание 13 проверяет умение работать с IP-адресами и масками подсети — базовыми элементами адресации в компьютерных сетях по протоколу TCP/IP. Проверяются три связанные навыки:

  • перевод чисел между двоичной и десятичной системами счисления (это фундамент, без которого задание не решить);
  • понимание логической операции "побитовое И", которая связывает IP-адрес и маску;
  • умение считать количество адресов в подсети заданного размера.

Задание относится к практической части сетевых технологий и часто воспринимается как сложное только из-за непривычной формы записи чисел. На самом деле весь материал сводится к паре формул и аккуратной работе с двоичными числами.

Как выглядит формулировка и сколько баллов

В большинстве вариантов формулировка задания включает полное определение маски подсети — его можно не запоминать наизусть, оно всегда дано в условии. Далее идёт один из трёх типовых вопросов:

  1. Дан IP-адрес и маска — найти номер компьютера в подсети или адрес сети.
  2. Дана маска — найти количество возможных адресов компьютеров в подсети (с учётом или без учёта исключения двух служебных адресов).
  3. Дан IP-адрес и адрес сети (или два IP-адреса из одной подсети) — определить маску.

Задание оценивается в 1 балл, ответ — целое число или число в форматe IP-адреса (четыре десятичных числа через точку), вводится без пробелов. Времени на задание в среднем уходит 3–5 минут при уверенном владении переводом систем счисления.

Что нужно знать

  • IP-адрес в протоколе IPv4 — это 32-битное число, которое для удобства записывают как четыре десятичных числа от 0 до 255, разделённых точками: a1.a2.a3.a4a_1.a_2.a_3.a_4, где каждое aia_i — это 8 бит (один октет).
  • Маска подсети — тоже 32-битное число такого же формата. В маске старшие биты равны 1 (они относятся к адресу сети), младшие биты равны 0 (они относятся к адресу компьютера в сети).
  • Адрес сети получается применением побитовой операции "И" (конъюнкции) к IP-адресу и маске: Сеть=IP & Маска\text{Сеть} = \text{IP} \ \& \ \text{Маска}. Операция выполняется отдельно для каждого бита: 1&1=11\&1=1, 1&0=01\&0=0, 0&1=00\&1=0, 0&0=00\&0=0.
  • Номер компьютера в подсети — это те биты IP-адреса, которые соответствуют нулевым битам маски. Иными словами, номер компьютера получают, беря младшие nn бит IP-адреса, где nn — количество нулей в маске.
  • Количество бит, отведённых под адрес компьютера, обозначим nn. Тогда максимальное теоретическое число адресов в подсети равно 2n2^n.
  • Из общего числа адресов практически исключают два: адрес сети (все биты компьютера — нули) и широковещательный адрес (все биты компьютера — единицы). Тогда число доступных адресов компьютеров: 2n−22^n - 2.
  • Полезно помнить степени двойки: 21=22^1=2, 22=42^2=4, 23=82^3=8, 24=162^4=16, 25=322^5=32, 26=642^6=64, 27=1282^7=128, 28=2562^8=256, 29=5122^9=512, 210=10242^{10}=1024.
  • Стандартные десятичные значения октетов маски и число единичных бит в них: 255 — 8 единиц, 254 — 7 единиц, 252 — 6 единиц, 248 — 5 единиц, 240 — 4 единицы, 224 — 3 единицы, 192 — 2 единицы, 128 — 1 единица, 0 — 0 единиц. Эти значения стоит выучить наизусть, они экономят время.

Методы решения

Метод 1. Перевод октета маски в двоичный вид для подсчёта единиц и нулей. Чтобы понять, сколько бит отведено под сеть и сколько под компьютер, каждый десятичный октет маски переводят в 8-битное двоичное число. Например, 22410=111000002224_{10} = 11100000_2 — здесь 3 единицы и 5 нулей.

Метод 2. Побитовое "И" для нахождения адреса сети или номера компьютера. Если нужно найти адрес сети, IP-адрес и маску переводят в двоичный вид и применяют операцию "И" разряд за разрядом. Пример: IP =11000000= 11000000 (192), маска-октет =11100000= 11100000 (224). Тогда результат =11000000= 11000000 (192) — совпали первые три бита маски-единицы, остальные обнулились.

Метод 3. Выделение номера компьютера как остатка по модулю. Если известно, что маска в последнем значимом октете равна, скажем, 224 (то есть 3 единичных бита), то номер компьютера внутри блока из 25=322^5=32 адресов равен остатку от деления значения последнего октета IP-адреса на 32: номер=a4mod  32\text{номер} = a_4 \mod 32. Этот способ быстрее полного перевода в двоичный код. Пример: если a4=157a_4 = 157, то 157mod  32=29157 \mod 32 = 29.

Метод 4. Подсчёт количества адресов через число нулевых бит маски. Считают, сколько всего нулевых бит в маске (обычно нули сосредоточены в последних октетах). Если нулей nn, то теоретическое число адресов 2n2^n, а число адресов компьютеров с учётом исключения служебных — 2n−22^n - 2. Пример: маска 255.255.254.0 имеет в третьем октете 25410=111111102254_{10}=11111110_2 (7 единиц, 1 ноль), в четвёртом октете все 8 бит нулевые. Итого нулей: 1+8=91+8=9, отсюда 29−2=512−2=5102^9 - 2 = 512-2=510.

Метод 5. Определение маски по двум известным адресам одной подсети. Если даны два IP-адреса, принадлежащих одной подсети, находят, начиная со старшего бита, до какого разряда биты обоих адресов совпадают. Все совпадающие старшие биты — это единицы маски, остальные — нули. Пример: если у двух адресов совпадают первые 26 бит, значит маска содержит 26 единиц, то есть последние 6 бит — нули, а маска в десятичном виде — 255.255.255.192 (так как 256−26=192256-2^6=192).

Алгоритм решения по шагам

  1. Определить тип задачи: ищем номер компьютера / адрес сети, количество адресов, или маску.
  2. Перевести необходимые октеты (обычно только тот, где есть "переход" от единиц к нулям) в двоичный вид.
  3. Если ищем адрес сети или номер компьютера — выполнить побитовое "И" (или воспользоваться формулой остатка от деления для скорости).
  4. Если ищем количество адресов — посчитать число нулевых бит в маске nn и применить формулу 2n2^n или 2n−22^n-2 (в зависимости от условия — учитывать исключение служебных адресов или нет).
  5. Если ищем маску — сравнить два IP-адреса побитово, найти количество совпадающих старших бит, перевести обратно в десятичный формат.
  6. Проверить полученный ответ на согласованность с условием задания (число адресов, диапазон значений октета от 0 до 255 и т. д.).

Разбор примеров

Пример 1.

Условие: маска подсети 255.255.255.224255.255.255.224, IP-адрес компьютера 162.198.0.157162.198.0.157. Найти порядковый номер компьютера в сети.

Шаг 1. Сравниваем маску и IP-адрес по октетам. Первые три октета маски равны 255 — значит, соответствующие октеты IP-адреса (162, 198, 0) целиком относятся к адресу сети и не влияют на номер компьютера.

Шаг 2. Четвёртый октет маски — 224224. Переводим в двоичный вид: 22410=111000002224_{10} = 11100000_2. Здесь 3 единицы и 5 нулей.

Шаг 3. Пять нулевых бит означают, что номер компьютера кодируется 5 младшими битами последнего октета IP-адреса, то есть равен остатку от деления значения этого октета на 25=322^5 = 32.

Шаг 4. Последний октет IP-адреса равен 157. Считаем: 157=4⋅32+29157 = 4 \cdot 32 + 29, то есть 157mod  32=29157 \mod 32 = 29.

Шаг 5 (проверка через двоичный вид). 15710=100111012157_{10} = 10011101_2. Побитовое "И" с маской 11100000211100000_2 даёт 100000002=12810000000_2 = 128 — это адрес сети (четвёртый октет). Номер компьютера — это оставшиеся 5 бит IP-адреса: 10011101210011101_2, младшие 5 бит — 111012=2911101_2 = 29.

Ответ: 29.

Пример 2.

Условие: маска подсети 255.255.254.0255.255.254.0. Найти количество различных адресов компьютеров, если два адреса (сети и широковещательный) не используются.

Шаг 1. Первые два октета маски — 255.255255.255, то есть 16 единичных бит, полностью относятся к адресу сети.

Шаг 2. Третий октет маски — 25410254_{10}. Переводим: 254=111111102254 = 11111110_2. Здесь 7 единиц и 1 ноль.

Шаг 3. Четвёртый октет маски — 010=0000000020_{10} = 00000000_2, все 8 бит нулевые.

Шаг 4. Общее число нулевых бит в маске: 1+8=91 + 8 = 9. Значит, теоретическое число адресов в подсети 29=5122^9 = 512.

Шаг 5. По условию исключаются два адреса — сети и широковещательный. Итого доступных адресов компьютеров: 512−2=510512 - 2 = 510.

Ответ: 510.

Пример 3.

Условие: маска подсети 255.255.248.0255.255.248.0. Найти количество различных адресов компьютеров (с учётом исключения адреса сети и широковещательного адреса — это указано в примечании).

Шаг 1. Первые два октета маски — 255.255255.255, 16 единичных бит, относятся к адресу сети.

Шаг 2. Третий октет маски — 24810248_{10}. Переводим в двоичный вид: 248=111110002248 = 11111000_2. Здесь 5 единиц и 3 нуля.

Шаг 3. Четвёртый октет маски — 010=0000000020_{10} = 00000000_2, все 8 бит нулевые.

Шаг 4. Общее число нулевых бит: 3+8=113 + 8 = 11. Теоретическое число адресов в подсети: 211=20482^{11} = 2048.

Шаг 5. Исключаем адрес сети и широковещательный адрес: 2048−2=20462048 - 2 = 2046.

Ответ: 2046.

Типичные ошибки и ловушки

  • Путают количество единичных и нулевых бит в маске — считают степень двойки не от нулей, а от единиц. Всегда проверяйте: под адрес компьютера отводятся именно нулевые биты маски.
  • Забывают вычесть 2 при подсчёте доступных адресов, когда условие явно требует исключить адрес сети и широковещательный адрес — или, наоборот, вычитают 2 там, где вопрос спрашивает про теоретическое (максимальное) количество адресов без исключений. Внимательно читайте формулировку: "теоретически допускает" обычно означает 2n2^n, а "доступно для использования" — 2n−22^n-2.
  • Ошибаются в переводе десятичного октета маски в двоичный вид — особенно при значениях 192, 224, 240, 248, 252, 254. Полезно выучить эти шесть значений наизусть, чтобы не тратить время на перевод при каждом решении.
  • Забывают, что маска может "разрезать" октет не только на границе — единичные и нулевые биты внутри одного октета маски всегда идут подряд: сначала все единицы, потом все нули. Если в задаче получается "вразнобой" — это сигнал ошибки в вычислениях.
  • При поиске номера компьютера через остаток от деления неправильно определяют делитель — берут не 2n2^n (где nn — число нулевых бит), а, например, само значение октета маски.
  • При определении маски по двум адресам одной подсети сравнивают десятичные значения октетов напрямую, а не бит за битом — это может привести к ошибке, если совпадение десятичных чисел не означает совпадения всех восьми бит (хотя обратное верно: несовпадение чисел точно означает несовпадение хотя бы одного бита).
  • Путают порядок октетов маски и IP-адреса при записи ответа — важно сохранять формат "четыре числа через точку" именно в том порядке, в котором идут октеты в условии.

Как готовиться

Первый шаг — довести до автоматизма перевод чисел от 0 до 255 в двоичный вид и обратно, а также твёрдо выучить таблицу стандартных значений маски (128, 192, 224, 240, 248, 252, 254, 255) и соответствующее им число единичных и нулевых бит. Это экономит драгоценные минуты на экзамене.

Второй шаг — прорешать по 8–10 задач каждого из трёх типов (номер компьютера/адрес сети, количество адресов, определение маски), чтобы отработать оба способа: полный перевод в двоичный вид с побитовым "И" и быстрый способ через операцию остатка от деления. Второй способ существенно ускоряет решение, но полезно уметь проверять себя первым способом.

Третий шаг — обязательно тренироваться на задачах с разными позициями "среза" маски: когда граница единиц и нулей проходит не по границе октета, а внутри него (как в примерах 1 и 3), поскольку именно такие задачи чаще вызывают ошибки. Полезно завести таблицу соответствия: число нулевых бит в подсети — степень двойки — число доступных адресов, чтобы быстро сверяться при решении.

Четвёртый шаг — решать варианты целиком в условиях ограниченного времени, чтобы задание 13 отрабатывалось за 2–3 минуты, оставляя запас времени на более сложные задачи экзамена.

Частые вопросы

Как быстро перевести десятичный октет маски в двоичный вид без ошибок?

Запомните таблицу: 128=10000000, 192=11000000, 224=11100000, 240=11110000, 248=11111000, 252=11111100, 254=11111110, 255=11111111. В каждом значении число единиц слева равно номеру значения в этом списке.

Что означает разница между теоретическим числом адресов и практически доступным?

Теоретическое число адресов равно 2n2^n, где nn — количество нулевых бит маски. Практически доступное число — 2n−22^n-2, так как из подсети исключают адрес сети (все нули в поле компьютера) и широковещательный адрес (все единицы).

Как найти адрес сети, если известны IP-адрес и маска?

Нужно применить побитовую операцию "И" к IP-адресу и маске отдельно для каждого бита: результат совпадает с IP-адресом там, где в маске стоит 1, и равен нулю там, где в маске стоит 0.

Можно ли определить маску подсети, зная только один IP-адрес?

Нет, для определения маски нужна дополнительная информация: либо явно указанная маска, либо диапазон адресов сети, либо два IP-адреса, принадлежащих одной подсети, для сравнения их бит.

Почему номер компьютера можно найти как остаток от деления, а не только через двоичный перевод?

Если нулевые биты маски занимают младшие nn бит числа, то номер компьютера — это значение этих nn бит, а оно математически равно остатку от деления соответствующей части IP-адреса на 2n2^n.

Что делать, если в задаче маска "разрезает" октет не полностью, а частично?

Нужно перевести именно этот октет в двоичный вид, определить границу между единицами и нулями и работать с ней через побитовое "И" или формулу остатка от деления на 2n2^n, где nn — число нулевых бит в этом октете.

Сколько времени в среднем нужно тратить на задание 13 на экзамене?

При хорошем владении переводом систем счисления и знании стандартных значений маски задание решается за 2–4 минуты, включая проверку ответа.