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

Обратный ход: маска по адресу сети

Маска неизвестна

Если маска неизвестна, её можно определить через сравнение адреса узла и адреса сети. Маска — это общая часть этих двух адресов (где биты совпадают).
Различия между ними указывают на биты узла, что позволяет точно определить положение границы сети.


Как поймать границу

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

Граница стоит сразу после последней единицы адреса сети. Всё левее маска сохранила — там единицы. Всё правее обнулилось — там нули.


Разбор: найти байт маски

Для узла с IP-адресом 111.81.176.27 адрес сети равен 111.81.160.0. Чему равен третий слева байт маски?
 

Шаг 1. Найти спорный байт

111 и 111 совпали, 81 и 81 совпали — там маска сплошь единицы. Четвёртый байт: 27 превратился в 0, значит маска там нулевая. Остаётся третий: 176 (байт узла) и 160 (байт сети).
 

Шаг 2. Записать байты в двоичной
  128 64 32 16 8 4 2 1
узел 176 1 0 1 1 0 0 0 0
сеть 160 1 0 1 0 0 0 0 0
маска 224 1 1 1 0 0 0 0 0
 
Шаг 3. Прочитать, что уцелело

Единицы 128 и 32 в адресе сети остались — значит маска держит там единицы, граница единиц и нулей правее них. Заметим, что в 32 стоит единица, то и в 64 тоже единицы. Потому что маска имеет формат: сначала только единицы потом только нули

Единица 16 погасла в адресе сети — значит на её месте у маски уже ноль, граница левее.

Между 32 и 16 черта и проходит: маска в третьем байте 11100000, то есть 224.
 

Шаг 4. Досчитать до конца

Целая маска — 255.255.224.0, единиц в ней 8 + 8 + 3 = 19.


Та же задача программой

Своего приёма у программы нет: она примеряет все 32 маски и оставляет ту, что даёт нужный адрес сети.



Что печатает программа
19
224

То же через ipaddress

Перебор тот же, только адрес сети считает библиотека, а маску она сразу отдаёт в привычном виде.



Что печатает программа
19
255.255.224.0
224

Проверь себя


Для узла с IP-адресом 84.13.158.100 адрес сети равен 84.13.144.0. Чему равен третий слева байт маски?

Сколько единиц в двоичной записи маски 255.255.248.0?

Где теряют балл

  • Сравнили не тот байт. Ломается ровно один — тот, где числа разошлись.
  • Провели границу по последней единице адреса узла, а не адреса сети.
  • Ответили количеством единиц, когда просили байт. Или наоборот.
Печать