Статья Автор: Деникина Н.В., Деникин А.В.

13.3 Переборные типы — байт маски для всех адресов

Минимальный байт маски при условии «для всех»

Дан адрес и маска, в которой один байт спрятан — например 255.255.A.0. Условие должно выполняться для всех адресов сети. Нужно наименьшее A.

Первый шаг сокращает работу в разы. Байт маски не любой. Он префиксный: сначала единицы, потом нули. Значит вариантов всего девять.

Второй шаг — перебор. Берём кандидата. Строим сеть. Проверяем условие на каждом адресе. Идём от меньшего байта к большему, и первый подходящий сразу даёт минимум.

И держи в голове формулировку: «для всех» — это не «хотя бы для одного». Одно нарушение убивает кандидата целиком.


Worked example

Адрес 191.239.130.3, маска 255.255.A.0. Условие: у каждого адреса единиц слева не меньше, чем справа.

девять кандидатов:
  0 = 00000000
128 = 10000000
192 = 11000000
224 = 11100000
240 = 11110000
248 = 11111000
252 = 11111100
254 = 11111110
255 = 11111111
левые байты 191.239 -> единиц 7 + 7 = 14  (постоянно)

A = 0    сеть огромная, справа легко набрать больше 14  -> нет
A = 128  всё ещё есть плохие адреса                     -> нет
A = 192  есть плохие адреса                             -> нет
A = 224  условие верно для ВСЕХ адресов                 -> ДА

Ответ: 224. Дальше проверять не нужно — идём от меньшего, значит это минимум.


Ещё примеры

Пример 1. Почему кандидатов именно девять. Байт префиксной маски — это «k единиц, потом 8−k нулей», где k от 0 до 8. Восемь плюс один вариант.

k=0 ->   0    k=3 -> 224    k=6 -> 252
k=1 -> 128    k=4 -> 240    k=7 -> 254
k=2 -> 192    k=5 -> 248    k=8 -> 255

Пример 2. Байты-обманки. Их часто подсовывают в варианты ответа.

100 = 01100100   нули перед единицами -> НЕ маска
200 = 11001000   ноль внутри единиц   -> НЕ маска
224 = 11100000   единицы, потом нули   -> маска, ок

Пример 3. Чем больше A, тем легче условию. Растёт A — сеть сжимается, хостовых бит меньше, «плохим» адресам негде появиться. Поэтому есть порог, и первый подходящий кандидат — ответ.

A растёт -> сеть уже -> адресов меньше -> условие легче
ищем порог, идя снизу вверх

▶ Try it: перечисли все девять допустимых байтов маски по памяти, затем сверься с примером 1.


Сколько различных значений может принимать один байт префиксной маски?


Какие значения МОЖЕТ принимать байт маски? Выберите все.


Адрес 191.239.130.3, маска 255.255.A.0. Для всех адресов сети единиц в левых двух байтах не меньше, чем в правых. Введите минимальное значение A.


Что означает «условие выполняется для всех адресов сети»?


Верно или неверно?

Загрузка...
Чтобы оставить комментарий, необходимо авторизоваться
💬
Пока нет комментариев. Будьте первым!
Печать