IPv4: задачи на адрес сети и диапазон обычных узлов

Чтобы найти адрес сети и диапазон обычных узлов, определите размер блока по префиксу и найдите блок, в который попадает адрес. Первый адрес блока будет адресом сети, последний — broadcast; между ними расположены обычные узлы.

Ниже — два разбора и шесть задач для самостоятельной работы. Во всех восьми условиях адреса сети и broadcast не назначаются узлам.

Что означают записи

IPv4-адрес состоит из четырёх чисел, разделённых точками. Каждое такое число называют октетом. Запись после косой черты — префикс: он показывает, сколько из 32 бит адреса относятся к сетевой части.

В задачах с префиксами от /24 до /30 меняется последний октет. Пусть h = 32 − префикс. Тогда размер блока равен 2^h адресов, а число обычных узлов в условиях этих задач — 2^h − 2. Адрес broadcast служит широковещательным адресом сети.

Это правило применяем только к рассматриваемым обычным сетям /24–/30. Не переносите его без дополнительных условий на /31, /32 или IPv6. Для проверки адресов можно использовать модуль ipaddress стандартной библиотеки Python.

Разбор 1: блок из 32 адресов

Дан учебный IPv4-адрес 192.0.2.123/27. Найдите адрес сети, broadcast, первый и последний обычный узел и число обычных узлов. Для этой задачи адреса сети и broadcast не назначаются узлам.

  1. На часть узла остаётся 32 − 27 = 5 бит. Размер блока: 2^5 = 32 адреса.
  2. Границы блоков последнего октета начинаются с 0, 32, 64, 96, 128 и так далее. Число 123 находится в блоке от 96 до 127.
  3. Адрес сети — 192.0.2.96, broadcast — 192.0.2.127.
  4. Первый обычный узел следует за адресом сети: 192.0.2.97. Последний стоит перед broadcast: 192.0.2.126.
  5. Число обычных узлов: 32 − 2 = 30.

Проверка границ: 96 ≤ 123 ≤ 127, значит исходный адрес попал в найденный блок.

Разбор 2: блок из 16 адресов

Дан учебный IPv4-адрес 198.51.100.44/28. Найдите адрес сети, broadcast, первый и последний обычный узел и число обычных узлов. Для этой задачи адреса сети и broadcast не назначаются узлам.

Здесь h = 32 − 28 = 4, поэтому блок содержит 2^4 = 16 адресов. Начала соседних блоков — 32 и 48: число 44 находится между ними. Значит, нужный блок идёт от 32 до 47 включительно.

  • Адрес сети: 198.51.100.32.
  • Broadcast: 198.51.100.47.
  • Первый обычный узел: 198.51.100.33.
  • Последний обычный узел: 198.51.100.46.
  • Число обычных узлов: 16 − 2 = 14.

Проверим число узлов по границам: 46 − 33 + 1 = 14. Единицу добавляем потому, что считаем оба крайних адреса диапазона.

Шесть задач для самостоятельной работы

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

3. Дан учебный IPv4-адрес 203.0.113.77/24. Найдите адрес сети, broadcast, первый и последний обычный узел и число обычных узлов. Для этой задачи адреса сети и broadcast не назначаются узлам.

4. Дан учебный IPv4-адрес 192.0.2.201/25. Найдите адрес сети, broadcast, первый и последний обычный узел и число обычных узлов. Для этой задачи адреса сети и broadcast не назначаются узлам.

5. Дан учебный IPv4-адрес 198.51.100.99/26. Найдите адрес сети, broadcast, первый и последний обычный узел и число обычных узлов. Для этой задачи адреса сети и broadcast не назначаются узлам.

6. Дан учебный IPv4-адрес 203.0.113.22/29. Найдите адрес сети, broadcast, первый и последний обычный узел и число обычных узлов. Для этой задачи адреса сети и broadcast не назначаются узлам.

7. Дан учебный IPv4-адрес 192.0.2.102/30. Найдите адрес сети, broadcast, первый и последний обычный узел и число обычных узлов. Для этой задачи адреса сети и broadcast не назначаются узлам.

8. Дан учебный IPv4-адрес 198.51.100.201/27. Найдите адрес сети, broadcast, первый и последний обычный узел и число обычных узлов. Для этой задачи адреса сети и broadcast не назначаются узлам.

Ключ и проверка

№Размер блокаАдрес сетиBroadcastПервый узелПоследний узелЧисло узлов
3256203.0.113.0203.0.113.255203.0.113.1203.0.113.254254
4128192.0.2.128192.0.2.255192.0.2.129192.0.2.254126
564198.51.100.64198.51.100.127198.51.100.65198.51.100.12662
68203.0.113.16203.0.113.23203.0.113.17203.0.113.226
74192.0.2.100192.0.2.103192.0.2.101192.0.2.1022
832198.51.100.192198.51.100.223198.51.100.193198.51.100.22230

Типичная ошибка — принять следующий адрес сети за broadcast текущего блока. Например, в задаче 8 следующий блок начинается с 224, поэтому текущий заканчивается на 223. Проверяйте, что исходный адрес лежит между найденными границами, а число узлов на два меньше размера блока.

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