Network Education
КаталогГлоссарийПрогресс
Протокол IPv4
  1. 1Основы
  2. 2Формат пакета
  3. 3Классовая адресация
  4. 4Бесклассовая адресация
  5. 5Задачи на IP-адресацию
  6. 6ARP
  7. 7DHCP
  8. 8ICMP
  9. 9NAT
Каталог/Сетевые основы/Протокол IPv4/Задачи на IP-адресацию

Задачи на IP-адресацию

5Урок 5 из 9

О чём этот урок

Практикум: преобразование масок, вычисление адреса сети и broadcast, подсчёт узлов, простой и сложный сабнетинг, агрегация.

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

  • Количество доступных для узлов адресов в сети равно 2^(32 - длина маски) - 2, где два адреса зарезервированы под адрес сети и широковещательный
  • Для соединения точка-точка используется маска /30 (2 рабочих адреса) или /31 (если оборудование поддерживает RFC, разрешающий оба адреса)
  • При сложном сабнетинге сеть режется в несколько этапов: сначала выделяются самые крупные подсети, затем из остатка — более мелкие
  • Агрегация возможна только если адреса подсетей идут подряд без пропусков и образуют полный блок с единым Network ID

Проверьте себя

Вопрос 1 из 6

Сколько адресов доступно для назначения узлам в сети с маской /24?

Вопрос 2 из 6

Какая маска традиционно используется для соединения точка-точка между двумя маршрутизаторами?

Вопрос 3 из 6

При сложном сабнетинге, в каком порядке следует выделять подсети?

Вопрос 4 из 6

При каком условии возможна агрегация нескольких подсетей в один маршрут?

Вопрос 5 из 6

Сколько рабочих адресов для узлов даёт маска /30?

Вопрос 6 из 6

Какой адрес сети у хоста 192.168.10.67/26?

🔗Связанные уроки

⚠️Сначала посмотрите

Бесклассовая адресацияПротокол IPv4
→

Задачи на IP-адресацию требуют уверенного понимания бесклассовой адресации (CIDR) — нужно изучить ipv4-classless перед практическими задачами

🔗Смотрите также

Задачки на IP-адресациюCisco ICND1: основы сетей и Cisco IOS
→

Оба урока — практикумы по расчёту подсетей, масок и VLSM-разбивке

Бесклассовая адресацияARP

Транскрипция

Если вы собираетесь сдавать сертификационные экзамены, то решать задачи на IP-адресацию вам, конечно, будет нужно.

В реальном мире часто можно встретить точку зрения, что решать в уме вопросы, связанные с IP-адресацией, с нахождением адреса сети, с нахождением broadcast-адреса не нужно, потому что есть калькуляторы. И если вдруг такая задача возникнет, всегда можно достать калькулятор и решить её.

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

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

Протокол IP — базовый протокол. Многие технологии, которые дальше изучаются в сетях, основаны на протоколе IP. Они являются костылями для протокола IP, его продолжением, логическим развитием. И для того, чтобы понимать, как они работают, вам нужно будет базовые задачи, которые ставит перед вами протокол IP, уметь решать спинным мозгом.

Типы задач

Основных задач не так много:

  1. Преобразование формата маски — найти по одной известной записи маски другую. Например, дана /29 маска, и нужно найти её десятичную запись (255.255.255.xxx), или наоборот.
  2. Нахождение адреса сети — найти адрес сети, включающей заданный узел. Каждый узел каждый раз, когда хочет маршрутизировать IP-пакет, решает эту задачу.
  3. Нахождение широковещательного адреса — то же самое, только вместо ноликов в Host ID записываются единицы.
  4. Подсчёт количества узлов в сети — сколько адресов или рабочих станций может быть в сети.
  5. Разделение сетей на подсети (subnetting) и обратная задача — суперсеттинг (supernetting), объединение нескольких сетей.

Калькуляторы и экзамены

На сертификационном экзамене пользоваться калькулятором нельзя. Там будет только простой примитивный калькулятор, который умеет складывать и вычитать десятичные числа. В двоичной системе не умеет. Но при подготовке к экзамену и в реальном мире вы можете и, наверное, даже должны пользоваться калькулятором, особенно специализированными subnet-калькуляторами. В Google можно набрать "subnet calculator" и получить большой список IP-калькуляторов.


Задача 1: Преобразование формата маски

Из десятичного формата в префиксный

Самый простой способ: записываем маску в двоичном виде, считаем количество единиц.

Пример: маска 255.255.248.0

Каждый октет записываем в двоичном виде:

  • 255 = 11111111 (8 единиц)
  • 255 = 11111111 (8 единиц)
  • 248 = 11111000 (5 единиц)
  • 0 = 00000000 (0 единиц)

Итого: 8 + 8 + 5 + 0 = 21 единица, значит это маска /21.

Можно схитрить и не переводить 255 и 0 в двоичный вид. Достаточно перевести только число 248 и получить 5 единиц, а к этому прибавить 16 единиц (по 8 от каждого октета 255).

Из префиксного формата в десятичный

Берём число 21 и рассуждаем:

  • 21 = 2 полных октета по 8 единиц + 5 единиц в третьем октете
  • Третий октет: 11111000 = 248
  • Результат: 255.255.248.0

Ещё пример: маска /25

  • 25 = 3 полных октета (24 единицы) + 1 единица в четвёртом октете
  • Четвёртый октет: 10000000 = 128
  • Результат: 255.255.255.128

Тренироваться можно самостоятельно: придумываете произвольную маску в одном формате, преобразуете в другой, а потом проверяете себя на subnet-калькуляторе.

Шпаргалка: допустимые значения октетов маски

В десятичной записи маски октет может принимать только следующие значения:

Двоичное значение Десятичное Кол-во единиц
00000000 0 0
10000000 128 1
11000000 192 2
11100000 224 3
11110000 240 4
11111000 248 5
11111100 252 6
11111110 254 7
11111111 255 8

Структура маски всегда такая:

  • Сначала октеты, целиком состоящие из единиц (255)
  • Затем не более одного октета со значением от 128 до 254
  • Затем оставшиеся октеты, равные 0

Три частых частных случая (граница проходит ровно по границе октетов):

  • /8 = 255.0.0.0
  • /16 = 255.255.0.0
  • /24 = 255.255.255.0

Полная таблица соответствия

Каждый из "промежуточных" октетов может находиться в одной из четырёх позиций:

Октет 1-й октет 2-й октет 3-й октет 4-й октет
128 (1 ед.) /1 /9 /17 /25
192 (2 ед.) /2 /10 /18 /26
224 (3 ед.) /3 /11 /19 /27
240 (4 ед.) /4 /12 /20 /28
248 (5 ед.) /5 /13 /21 /29
252 (6 ед.) /6 /14 /22 /30
254 (7 ед.) /7 /15 /23 /31

Эту шпаргалку можно быстро нарисовать на экзамене. С собой приносить нельзя, а нарисовать на месте -- легко, если понимаете, как устроена маска.

Пример использования: нужна десятичная запись /29 маски. Находим 29 в таблице -- это четвёртый октет со значением 248. Значит три первых октета 255, а четвёртый -- 248: 255.255.255.248.

Обратный пример: дана маска 255.255.224.0. Октет 224 стоит в третьей позиции -- значит это /19 маска.

Экономия времени на экзамене

На экзамене задачи на IP-адресацию предполагается решать очень быстро. Если вы на них закопаетесь, то на лабораторную работу (которая оценивается как обычный вопрос, но требует больше времени) времени не останется.

Например, на цисковских экзаменах есть порядка 35 вопросов, каждый оценивается примерно в 20 баллов. Лабораторная работа стоит столько же, сколько обычный вопрос, но времени на неё нужно больше. Если быстро разделались с задачами на IP-адресацию, лабу будете делать комфортно.


Задача 2: Нахождение адреса сети

Сеть -- это совокупность IP-адресов, у которых левые биты (Network ID) зафиксированы, а правые биты (Host ID) пробегают все возможные значения. Адрес сети -- это IP-адрес, у которого все биты Host ID обнулены. Широковещательный адрес -- все биты Host ID выставлены в единицу.

Алгоритм

  1. Берём IP-адрес и маску
  2. Определяем, где заканчивается Network ID
  3. Фиксируем биты Network ID, всё остальное обнуляем
  4. Получаем адрес сети

Пример: найти адрес сети для 192.168.49.231/26

Маска /26 означает: 24 бита Network ID в первых трёх октетах + 2 бита в четвёртом октете.

Первые три октета остаются как есть: 192.168.49.

Переводим четвёртый октет в двоичный вид:

231 = 128 + 64 + 32 + 4 + 2 + 1 = 11100111

Из 8 бит четвёртого октета первые 2 относятся к Network ID (выделены):

[11] 100111
 ^^  ^^^^^^
 NID  HID

Обнуляем биты Host ID:

[11] 000000 = 11000000 = 192

Ответ: адрес сети -- 192.168.49.192/26

Пример: найти широковещательный адрес для 192.168.30.117/23

Маска /23: 16 бит в первых двух октетах + 7 бит в третьем октете.

Первые два октета не меняются: 192.168.

Переводим третий октет (30) в двоичный:

30 = 16 + 8 + 4 + 2 = 00011110

Первые 7 бит -- Network ID, последний бит -- Host ID:

[0001111] 0
 ^^^^^^^  ^
   NID    HID

Выставляем бит Host ID в единицу:

[0001111] 1 = 00011111 = 31

Четвёртый октет целиком относится к Host ID, выставляем все биты в единицу: 255.

Ответ: широковещательный адрес -- 192.168.31.255

Это значит, что машина с адресом 192.168.30.117 и маской 255.255.254.0 будет слушать пакеты и на свой собственный IP, и на адрес 192.168.31.255 (широковещательный адрес своей сети). Этот адрес нигде явно не прописывается -- машина сама его вычисляет.

Упражнения для самостоятельной работы

Найдите адреса сетей и широковещательные адреса для произвольных IP-адресов с произвольными масками. Проверяйте себя IP-калькулятором.

Внимание: на экзаменах часто используются IP-адреса, похожие на частные, но ими не являющиеся. Например, 172.168.x.x (публичный) очень похож на 172.16.x.x (частный), а 192.16.x.x (публичный) похож на 192.168.x.x (частный). Будьте внимательны!

Пример: 1.1.1.1/1

Это один из самых каверзных вопросов. Маска /1 означает, что только один бит относится к Network ID.

Число 1 в двоичном виде: 00000001. Старший бит (Network ID) равен 0. Обнуляем все остальные биты:

[0] 0000000 = 00000000 = 0

Все остальные три октета тоже обнуляются.

Адрес сети: 0.0.0.0/1

Широковещательный адрес:

[0] 1111111 = 01111111 = 127

Остальные октеты -- все единицы.

Широковещательный адрес: 127.255.255.255

В реальном мире маску /1 не используют, потому что она означает, что в одной канальной среде находится половина всех IP-адресов (~2 миллиарда). Но математика работает корректно.


Задача 3: Подсчёт количества узлов в сети

Если вы знаете маску сети, вы можете подсчитать количество IP-адресов:

  1. Определить количество бит в Host ID: 32 - длина_маски
  2. Количество адресов: 2^(бит Host ID)
  3. Количество доступных для назначения узлам: 2^(бит Host ID) - 2

Два адреса являются служебными и не могут назначаться узлам:

  • Адрес сети (Host ID = все нули)
  • Широковещательный адрес (Host ID = все единицы)

Пример: маска /22

  • Бит в Host ID: 32 - 22 = 10
  • Количество адресов: 2^10 = 1024
  • Доступно для узлов: 1024 - 2 = 1022 адреса

Пример: маска /27

  • Бит в Host ID: 32 - 27 = 5
  • Количество адресов: 2^5 = 32
  • Доступно для узлов: 32 - 2 = 30 адресов

Особый случай: маска /31

При маске /31 в Host ID всего 1 бит, то есть только 2 адреса. Если оба служебные, назначать нечего. Существует отдельный RFC, который разрешает использовать оба адреса в сетях /31 для соединений точка-точка. Поддержка /31 зависит от оборудования.

Что учитывать при планировании

Не забывайте, что IP-адреса нужны:

  • Рабочим станциям
  • Серверам
  • Маршрутизаторам (минимум один адрес)
  • IP-телефонам, принтерам, контроллерам дверных замков и прочему оборудованию

Если нужна сеть на 30 рабочих станций, маска /27 (30 адресов для узлов) впритык -- не хватит места для маршрутизатора и периферии. Потребуется /26 (62 адреса для узлов).

Для соединения двух узлов напрямую (линк точка-точка):

  • Стандартный вариант: маска /30 (4 адреса, 2 служебных, 2 для узлов)
  • Экономный вариант: маска /31 (2 адреса, оба для узлов, если оборудование поддерживает)

Задача 4: Простой subnetting (разделение сети на подсети)

Простой subnetting -- разделение сети на подсети одинакового размера за один проход.

Алгоритм

  1. Зафиксировать Network ID родительской сети
  2. Определить, сколько бит нужно заимствовать у Host ID:
    • Если задано количество подсетей N -- нужно ceil(log2(N)) бит
    • Если задано количество узлов в подсети -- вычислить необходимый размер Host ID, остальное заимствовать
  3. Добавить заимствованные биты к Network ID -- получить новую маску
  4. Перебрать все значения заимствованных бит -- получить адреса подсетей

Пример 1: сеть 192.168.0.128/25, подсети по 15 узлов

Сколько бит под Host ID?

  • 15 узлов + 2 служебных = 17 адресов
  • 4 бита (16 адресов) -- мало, только 14 узлов
  • 5 бит (32 адреса) -- подходит, 30 узлов

Сколько бит заимствуем?

  • Исходная маска /25: Host ID = 7 бит
  • Нужно оставить 5 бит под Host ID
  • Заимствуем: 7 - 5 = 2 бита
  • Новая маска: /27

Четвёртый октет адреса (128):

128 = 10000000
      ^  ^^   ^^^^^
      NID SUB  HID

Перебираем 2 заимствованных бита (4 варианта):

Subnet ID Двоичное 4-й октет Адрес подсети
00 1 00 00000 128 192.168.0.128/27
01 1 01 00000 160 192.168.0.160/27
10 1 10 00000 192 192.168.0.192/27
11 1 11 00000 224 192.168.0.224/27

Из исходных 128 адресов (/25) получились 4 подсети по 32 адреса (/27).

Пример 2: сеть 172.31.224.0/20, разделить на 32 подсети

  • 32 подсети = 2^5, нужно заимствовать 5 бит
  • Исходная маска /20, новая маска: /25
  • Network ID: 20 бит (16 в первых двух октетах + 4 в третьем)

Третий октет (224):

224 = 11100000
      ^^^^  ^^^^
      NID   HID (4 бита)

Заимствуем все 4 бита из третьего октета + 1 бит из четвёртого = 5 бит.

Результат: 32 подсети по /25 маске:

  • 172.31.224.0/25
  • 172.31.224.128/25
  • 172.31.225.0/25
  • 172.31.225.128/25
  • ...
  • 172.31.239.128/25

Как найти N-ю подсеть по счёту? Вписать в заимствованные биты число (N - 1).

Например, 7-я подсеть: число 6 = 00110 в 5 бит.

Третий октет: 1110 0011 0 ... = 227
Четвёртый октет: 0 0000000 = 0

Адрес: 172.31.227.0/25

Пример 3: сеть 10.0.0.0/8, разделить на 1024 подсети, найти 179-ю

  • 1024 = 2^10, заимствуем 10 бит
  • Новая маска: /18
  • Network ID: 8 бит (первый октет)
  • Заимствуем: 8 бит во втором октете + 2 бита в третьем

Для 179-й подсети вписываем число 178 (нумерация с нуля):

178 = 10110010

В 10 бит: 00 10110010

Разбиваем на октеты:

  • Второй октет: 00101100 = 44
  • Третий октет: 10 000000 = 128

Ответ: 10.44.128.0/18

Пример 4: сеть 8.8.8.8/29, выделить адреса для 3 линков точка-точка

Маска /29: Host ID = 3 бита, всего 8 адресов.

Для линка точка-точка нужны 2 адреса для узлов.

Стандартный подход (/30): каждый линк требует 4 адреса (2 служебных + 2 рабочих). Из /29 получается только 2 сети /30. Трёх линков не хватит -- задача не решается в рамках стандартного IP.

С использованием /31: если оборудование поддерживает маски /31, можно получить 4 подсети:

  • 8.8.8.8/31
  • 8.8.8.10/31
  • 8.8.8.12/31
  • 8.8.8.14/31

Три линка получают адреса, ещё одна подсеть остаётся в резерве.

Пример 5: классовая сеть 180.199.0.0, экономная адресация для филиалов

Условие: в каждом филиале не более 50 узлов, каждому нужен публичный адрес из этой сети.

Рассуждение:

  • 50 узлов + 2 служебных = минимум 52 адреса
  • 5 бит Host ID: 32 адреса (30 для узлов) -- мало
  • 6 бит Host ID: 64 адреса (62 для узлов) -- подходит
  • Новая маска: /26

Сеть 180.199.0.0 -- класс B, классовая маска /16. Из /16 нарезаем /26:

  • Заимствуем 26 - 16 = 10 бит под Subnet ID
  • Получаем 2^10 = 1024 подсети по 62 рабочих адреса в каждой

Задача 5: Сложный subnetting (разделение на подсети разного размера)

Сложный subnetting -- это не "сложный" в смысле трудности, а многоступенчатый: сеть режется в несколько этапов на подсети разного размера.

Алгоритм

  1. Определить, какие подсети нужны и какого размера
  2. Начать с самых больших подсетей
  3. Разрезать исходную сеть на крупные куски
  4. Назначить нужные крупные куски
  5. Оставшиеся куски резать дальше на более мелкие

Пример: из /24 получить одну /25, одну /26 и две /27

  1. Режем /24 пополам -- получаем 2 сети /25
  2. Одну /25 используем как есть
  3. Вторую /25 режем пополам -- получаем 2 сети /26
  4. Одну /26 используем как есть
  5. Вторую /26 режем пополам -- получаем 2 сети /27
  6. Обе /27 используем

Задача 6: Агрегация (суперсеттинг)

Обратная задача к subnetting: несколько сетей нужно объединить в одну большую.

Фактически это следствие задачи на разрезание -- нужно угадать, какую сеть изначально резали на части, и проверить это.

Условия для агрегации

Не любые сети можно агрегировать. Требования:

  • Все IP-адреса агрегируемых сетей должны идти по порядку, без пропусков на числовой прямой
  • У всех адресов результирующей сети начальные биты (Network ID) должны совпадать, а остальные -- пробегать все возможные значения

Свойства агрегированной сети

  • IP-адрес агрегированной сети совпадает с IP-адресом самой первой (младшей) из мелких сетей
  • Маска агрегированной сети определяется по количеству объединяемых подсетей:
    • 2 подсети -- маска на 1 бит меньше
    • 4 подсети -- маска на 2 бита меньше
    • 8 подсетей -- маска на 3 бита меньше

Network Education

Бесплатная онлайн-академия сетевых технологий. Видеоуроки, транскрипции и структурированные треки обучения — от основ до продвинутого уровня.

ТрекиКаталогО проекте
© 2026 Network Education