Решение заданий № 13 по информатике аналитическим методом, вручную

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

IP-адрес можно сравнить с адресом дома. У каждого компьютера в локальной сети есть уникальный адрес, он записывается как четыре числа, разделённые точками (например, 192.168.0.20). Но на самом деле это одно большое двоичное число (например, 192.168.0.20 = 11000000101010000000000000010100). Каждое десятичное число IP-адреса переводится в двоичное восьмибитовое, и суммарно получается 32 бита.

Маска сети — это фильтр IP-адресов

  • единицы в маске показывают, какая часть адреса общая для всех компьютеров в одной сети
  • нули в маске показывают, какая часть адреса уникальна для каждого компьютера в одной сети
  • маска определяет, какие компьютеры могут «общаться» друг с другом
  • маска применяется к IP-адресу с помощью поразрядной конъюнкции. Эта операция работает так: берутся два двоичных числа и к каждому соответствующему разряду применяется логическое И. Например 1011 & 1100 = 1000

Далее разберём, как решать задание № 13 с разными условиями.

Задача 1. Количество IP-адресов с условием

Эта задача из демоверсии-2025, аналогичная задача была на ЕГЭ-2024. Теперь пройдёмся по этапам.

  1. Переведём адрес и маску в двоичную систему

IP-адрес сети:\
172.16.168.0\
$172 = 10101100_{2}$\
$16 = 00010000_{2}$\
$168 = 10101000_{2}$\
$0 = 00000000_{2}$

Маска сети:\
255.255.248.0\
$255 = 11111111_{2}$\
$255 = 11111111_{2}$\
$248 = 11111000_{2}$\
$0 = 00000000_{2}$

В двоичном виде IP-адрес выглядит как последовательность битов:\
$10101100.00010000.10101000.00000000_{2}$\
А маска сети — так:\
$11111111.11111111.11111000.00000000_{2}$

  1. Посчитаем возможные адреса

В маске сети 11 нулей. Посчитаем, сколько всего может быть IP-адресов в сети по формуле: $N = 2^{i} = 2^{11} = 2048$.

  1. Посчитаем неподходящие адреса

Определить адреса, в которых количество единиц не кратно 5, сложно, потому что их много. А вот узнать, в каких адресах количество единиц кратно 5, довольно легко.

В адресе сети уже есть 8 единиц, и они сохранятся в любом IP-адресе этой сети. В части адреса, которая меняется, есть 11 возможных мест, куда мы можем поставить единицы. В таком случае есть только два варианта, когда количество единиц кратно 5: когда их 10 или когда их 15. Найдём все возможные варианты размещения двух и семи единиц по 11 позициям.

Чтобы это сделать, мы можем применить формулу для расчёта количества сочетаний без повторов:$C_n^k = \frac{n!} {k!(n-k)!}$. Эта формула показывает, сколько есть способов выбрать $k$ элементов из $n$ элементов без учёта порядка и без повторений.

В нашем случае множество из $n$ элементов — это номера разрядов, на которых могут находиться нули и единицы в уникальной для компьютера части IP-адреса. А количество элементов — это количество номеров разрядов, на которые нам нужно записать единицы.

Получим:

$C_{11}^2 = \frac{11!} {2!(11-2)!} = 55$\
$C_{11}^7 = \frac{11!} {7!(11-7)!} = 330$

Адресов, в которых количество единиц кратно 5, всего $55 + 330 = 385$.

  1. Посчитаем адреса, подходящие под условие

Нужно убрать из всех возможных IP-адресов те, у которых количество единиц кратно 5: $2048 - 385 = 1663$.

Ответ: 1663

Задача 2. Значение байта маски

Задача из демоверсии 2019 года.

  1. Переведём в двоичную систему

Сделаем это с третьими байтами из IP-адреса и адреса сети:

$138 = 10001010_{2}$\
$136 = 10001000_{2}$

  1. Найдём совпадающие биты

Совпадающие биты могут относиться к общей части, где в маске стоят единицы. Совпадают шесть старших разрядов. В первом разряде значения битов различаются, значит, в маске, начиная с него и до конца, должны стоять нули.

Frame 2087329809.webp

  1. Выберем минимальную маску

Во втором разряде стоит ноль. Значит, для этой сети мы можем использовать как маску $11111000_{2}$ в третьем байте слева, так и $11111100_{2}$ там же.

Frame 2087329809-1.webp

Минимальное значение из двух: $11111000_{2} = 248$

Ответ: 248

Задача 3. Количество нулей в маске

Задача из открытого банка заданий ЕГЭ.

  1. Проанализируем IP-адреса

Это задание аналогично предыдущему, но здесь нет чёткого указания, какой байт маски будет определяющим для поиска ответа.

Запишем IP-адрес и адрес сети друг под другом и определим, где могут быть нули в маске сети:

Frame 2087329809-2.webp

  1. Переведём в двоичную систему

Чтобы определить примерное значение маски сети, не надо переводить всё в двоичную систему счисления. У адреса сети по сравнению с IP-адресом другие третий и четвёртый байты слева.

Третий байт слева отличен от нуля, значит, в этом байте в маске сети находятся нули и единицы. Четвёртый байт в адресе сети равен нулю, значит, в маске сети в этом байте восемь нулей.

Переведём третьи байты слева в двоичную систему счисления:

$208 = 11010000_{2}$\
$192 = 11000000_{2}$

  1. Найдём совпадающие биты

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

Frame 2087329809-3.webp

  1. Выберем маску с минимумом нулей

В пятом разряде стоит ноль, то есть для этой сети мы можем использовать как маску $11000000_{2}$ в третьем байте слева, так и $11100000_{2}$ там же.

Frame 2087329809-4.webp

Чтобы получить минимум нулей, выберем $11100000_{2}$. Общее количество нулей (в четвёртом байте их 8) равно $5 + 8 = 13$.

Ответ: 13

Задача 4. Маска для двух узлов в разных подсетях

Это авторская задача.

  1. Проанализируем IP-адреса

Если узлы находятся в разных подсетях, то после применения к ним одной и той же маски адреса сети должны различаться.

Запишем IP-адреса друг под другом, чтобы понять, какие байты маски сети могут повлиять на результат:

Frame 2087329809-5.webp

В этих адресах различаются крайние правые байты. Воспользуемся ими для поиска ответа.

  1. Переведём в двоичную систему

$121 = 01111001_{2}$\
$156 = 10011100_{2}$

  1. Найдём различающиеся биты

В этих числах биты отличаются уже в седьмом разряде:

Frame 2087329809-6.webp

  1. Выберем маску с минимумом единиц

Возьмём маску в самом правом байте, ею будет одна единица $10000000_{2}$.

Frame 2087329809-7.webp

После применения этой маски мы получаем два разных адреса сети. Значит, она нам подходит.

В самом правом байте маски есть единица, поэтому и первые три байта содержат только единицы. Минимально возможное количество единиц в маске равно $8 + 8 + 8 + 1 = 25$.

Ответ: 25

Задача 5. Маска для двух узлов в одной сети

Это авторская задача. По условию нам нужно указать наименьшее возможное количество адресов в сети. Сделать это можно, если найти такую маску, в которой количество нулей минимально.

  1. Проанализируем IP-адреса

Если два узла находятся в одной сети, то после применения маски получится один и тот же адрес сети.

Запишем эти IP-адреса друг под другом:

Frame 2087329809-8.webp

Крайние справа байты различаются. В них мы и будем искать различающиеся биты, чтобы узнать, где обязательно нужно поставить нули.

  1. Переведём в двоичную систему

$70 = 01000110_{2}$\
$107 = 01101011_{2}$

  1. Найдём различающиеся биты

Самый старший несовпадающий бит — пятый:

Frame 2087329809-9.webp

  1. Выберем маску с минимумом нулей

В пятом разряде в этом байте маски сети нужно написать ноль, после которого до конца также будут идти нули. Минимальное количество нулей в маске равно 6.

  1. Посчитаем количество адресов

Узнаем количество адресов в сети по формуле $N = 2^{i} = 2^{6} = 64$.

Ответ: 64

Выводы

Ключевые выводы:

  1. Важные знания и навыки для задания № 13 — принцип работы с IP-адресами и комбинаторика.
  2. Обращайте внимание на каждое слово, которое может повлиять на ответ. Всегда уточняйте, минимальное или максимальное значение нужно найти, ищем единицы, нули или адреса.
  3. Используйте код только там, где он экономит время (например, для перевода в двоичную систему счисления), но не заменяйте им анализ.
  4. Определяйте, какие байты нужны для более тщательного анализа, не тратьте время на лишнюю работу.
  5. Внимательно анализируйте двоичные числа: среди нулей и единиц можно легко потеряться.
  6. Тренируйтесь на неочевидных примерах — они учат видеть ловушки.

Напоследок предлагаем решить подборку задач, чтобы потренировать ваши аналитические навыки. В ней — задания по информатике, которые заставят вас думать, а не действовать шаблонно. Каждая решённая задача приблизит вас к успешной сдаче экзамена.

Спасибо kompege.ru за предоставленные задания.

Источник: Яндекс Учебник — Решение заданий № 13 по информатике аналитическим методом, вручную. Каталог разборов: education.yandex.ru.

Назад к статьям Поделиться