Пример
Узел с IP-адресом 196.138.142.89 принадлежит подсети, в которой 78 адресов с 18 единицами в двоичной записи. Сколько единиц в маске?
Шаг 1. Проверить одну маску целиком
Возьмём маску из 19 единиц, то есть 255.255.224.0. Ломается третий байт: 142 и 224 дают 128, поэтому адрес сети 196.138.128.0.
Единиц в нём: 196 даёт 3, 138 даёт 3, 128 даёт 1. Итого b = 7. Свободных бит n = 32 − 19 = 13.
В хвосте надо набрать 18 − 7 = 11 единиц из 13 мест: C(13, 11) = 78. Ровно то число, что в условии.
Шаг 2. Прогнать соседние маски
Та же арифметика, только маска другая.
| маска |
адрес сети |
b |
n |
нужно в хвосте |
адресов |
| /16 |
196.138.0.0 |
6 |
16 |
12 |
1820 |
| /17 |
196.138.128.0 |
7 |
15 |
11 |
1365 |
| /18 |
196.138.128.0 |
7 |
14 |
11 |
364 |
| /19 |
196.138.128.0 |
7 |
13 |
11 |
78 |
| /20 |
196.138.128.0 |
7 |
12 |
11 |
12 |
| /21 |
196.138.136.0 |
8 |
11 |
10 |
11 |
У масок с /17 по /20 адрес сети один и тот же, меняется только число свободных мест — и счётчик рушится в разы. Совпадение единственное.
Шаг 3. Ответ
В маске 19 единиц. Спросили бы нули — 32 − 19 = 13.