Маска подсети и адрес сети: как вычислить по IP и маске

3733
Маска подсети и адрес сети: как вычислить по IP и маске

Маска подсети отвечает на простой, но ключевой вопрос: какая часть IP-адреса описывает сеть, а какая часть остается устройствам внутри этой сети. Если взять адрес 192.168.1.34 и маску 255.255.255.0, то сетью будет 192.168.1.0, а число обычных адресов для устройств составит 254.

Вся механика держится на одной операции: IP-адрес и маску переводят в двоичный вид, затем применяют поразрядную конъюнкцию, то есть операцию AND. Там, где в маске стоит 1, соответствующий бит IP сохраняется. Там, где в маске стоит 0, бит превращается в 0. Получившийся адрес и есть адрес сети.

Что показывает маска подсети простыми словами

IPv4-адрес состоит из 32 бит. Для удобства люди записывают его четырьмя десятичными числами от 0 до 255, например 192.168.10.45. Компьютер работает не с такой записью, а с битами.

Маска тоже состоит из 32 бит. Единицы в начале маски показывают сетевую часть адреса, нули в конце показывают часть для узлов. Узел в сетях TCP/IP обычно означает конкретное устройство или интерфейс: компьютер, телефон, сервер, принтер, порт роутера.

IP:     192.168.1.34
 Маска:  255.255.255.0
 CIDR:   /24

Запись /24 означает, что первые 24 бита относятся к сети. Оставшиеся 8 бит можно использовать для адресов внутри подсети. Поэтому маска /24 равна 255.255.255.0.

Почему адрес сети находят через AND

Операция AND сравнивает два бита. Результат равен 1 только тогда, когда оба бита равны 1. Во всех остальных случаях результат равен 0.

Бит IP Бит маски Результат AND
0 0 0
0 1 0
1 0 0
1 1 1

Маска как будто накладывается на IP-адрес. Единицы пропускают сетевую часть, нули обнуляют часть для устройств. Поэтому адрес сети всегда получается первым адресом подсети.

Пример с /24: самый частый случай

Возьмем IP-адрес 192.168.1.34 и маску 255.255.255.0.

IP:       192.168.1.34
 Маска:    255.255.255.0
 Префикс:  /24

Переведем последний октет в двоичный вид. Первые три октета маска сохраняет полностью, потому что там стоят 255, то есть восемь единиц в каждом октете.

34:   00100010
 0:    00000000
 AND:  00000000

Получаем адрес сети:

192.168.1.34
 255.255.255.0
 AND
 192.168.1.0

В подсети /24 осталось 8 бит для узлов. Всего адресов:

2^8 = 256

В обычной IPv4-подсети первый адрес занимает сама сеть, последний адрес занимает широковещательная рассылка. Поэтому доступных адресов для устройств:

256 - 2 = 254
Адрес сети 192.168.1.0
Первый узел 192.168.1.1
Последний узел 192.168.1.254
Broadcast 192.168.1.255
Адресов для устройств 254

Пример с /16: сеть крупнее, адресов больше

Теперь возьмем адрес 10.25.7.100/16. Маска /16 равна 255.255.0.0. Первые два октета относятся к сети, последние два октета остаются узлам.

IP:       10.25.7.100
 Маска:    255.255.0.0
 Адрес сети: 10.25.0.0

Для узлов осталось 16 бит. Значит, всего адресов:

2^16 = 65536

Обычных адресов для устройств:

65536 - 2 = 65534
Адрес сети 10.25.0.0
Первый узел 10.25.0.1
Последний узел 10.25.255.254
Broadcast 10.25.255.255
Адресов для устройств 65534

Нестандартная маска /26: где чаще всего ошибаются

Нестандартные маски пугают не сложностью, а тем, что граница сети проходит внутри октета. Например, /26 означает 26 сетевых бит. Маска выглядит так:

/26 = 255.255.255.192
 
 192 в двоичном виде:
 11000000

Возьмем IP-адрес 192.168.1.130/26. Первые три октета сохраняются, а последний октет надо считать по битам.

130:  10000010
 192:  11000000
 AND:  10000000

Двоичное 10000000 равно 128. Значит, адрес сети:

192.168.1.128

В /26 осталось 6 бит для узлов. Всего адресов:

2^6 = 64

Диапазоны в последнем октете идут блоками по 64:

Подсеть Диапазон адресов Broadcast
192.168.1.0/26 192.168.1.0 - 192.168.1.63 192.168.1.63
192.168.1.64/26 192.168.1.64 - 192.168.1.127 192.168.1.127
192.168.1.128/26 192.168.1.128 - 192.168.1.191 192.168.1.191
192.168.1.192/26 192.168.1.192 - 192.168.1.255 192.168.1.255

Адрес 192.168.1.130 попадает в диапазон 192.168.1.128 - 192.168.1.191. Первый адрес диапазона является адресом сети, последний является broadcast. Для устройств остаются адреса 192.168.1.129 - 192.168.1.190, всего 62.

Быстрый способ через размер блока

Когда маска проходит внутри октета, можно не расписывать все 32 бита. Достаточно найти размер блока. Работает прием так:

Размер блока = 256 - значение маски в проблемном октете

Для /26 маска равна 255.255.255.192. Проблемный октет последний.

256 - 192 = 64

Значит, подсети начинаются с 0, 64, 128, 192. Адрес 130 лежит между 128 и 191, поэтому адрес сети равен 192.168.1.128.

Для /20 маска равна 255.255.240.0. Проблемный октет третий.

256 - 240 = 16

Подсети идут по третьему октету: 0, 16, 32, 48, 64, 80 и дальше. Если дан адрес 172.16.35.10/20, число 35 попадает в блок 32 - 47. Значит:

IP-адрес 172.16.35.10/20
Маска 255.255.240.0
Адрес сети 172.16.32.0
Broadcast 172.16.47.255
Первый узел 172.16.32.1
Последний узел 172.16.47.254

Как перевести CIDR в обычную маску

CIDR-префикс показывает количество единиц в маске. Например, /24 означает 24 единицы и 8 нулей. Полный октет из восьми единиц равен 255. Неполный октет считают по весам битов: 128, 64, 32, 16, 8, 4, 2, 1.

Префикс Маска Битов для узлов Всего адресов Обычно доступно узлам
/8 255.0.0.0 24 16777216 16777214
/16 255.255.0.0 16 65536 65534
/24 255.255.255.0 8 256 254
/25 255.255.255.128 7 128 126
/26 255.255.255.192 6 64 62
/27 255.255.255.224 5 32 30
/28 255.255.255.240 4 16 14
/29 255.255.255.248 3 8 6
/30 255.255.255.252 2 4 2

Формула для IPv4 в обычной учебной задаче: число всех адресов равно 2 в степени количества нулей в маске, число адресов для узлов равно этому числу минус 2. Для /31 и /32 правила отличаются, но в школьных задачах обычно используют классическую формулу, если отдельно не сказано обратное.

Пошаговый алгоритм для любой задачи

Чтобы не путаться в /24, /20 и /27, лучше держать один алгоритм и применять без импровизации.

  1. Определите маску по CIDR-префиксу или переведите десятичную маску в двоичную.
  2. Посчитайте количество нулей в маске. Это биты для узлов.
  3. Найдите адрес сети через IP AND маска.
  4. Найдите общее число адресов по формуле 2^n, где n равно числу битов для узлов.
  5. Для обычной подсети вычтите 2, чтобы получить число адресов для устройств.
  6. Найдите broadcast: адрес сети плюс размер подсети минус 1.

Задачи в стиле ОГЭ и ЕГЭ

Задача 1. Найти адрес сети

Дан IP-адрес 192.168.12.77 и маска 255.255.255.224. Найдите адрес сети.

Маска 255.255.255.224 равна /27. Проблемный октет последний. Размер блока:

256 - 224 = 32

Подсети в последнем октете начинаются с 0, 32, 64, 96, 128 и дальше. Число 77 попадает в блок 64 - 95. Значит, адрес сети:

192.168.12.64

Задача 2. Найти количество узлов

Дана маска 255.255.248.0. Сколько адресов можно назначить устройствам в такой подсети?

Переведем третий октет маски:

248 = 11111000

В первых двух октетах 16 единиц. В третьем октете еще 5 единиц. Всего сетевых битов:

16 + 5 = 21

Значит, маска равна /21. Для узлов осталось:

32 - 21 = 11

Всего адресов:

2^11 = 2048

Обычных адресов для устройств:

2048 - 2 = 2046

Задача 3. Найти маску по числу узлов

Сколько бит надо оставить под узлы, чтобы в подсети было не меньше 50 устройств?

Проверяем степени двойки:

2^5 - 2 = 30
 2^6 - 2 = 62

Пять бит не хватает, шесть бит хватает. Значит, под узлы нужно оставить 6 бит. Под сеть остается:

32 - 6 = 26

Искомая маска: /26, или 255.255.255.192.

Задача 4. Найти сеть для /20

Дан адрес 10.18.173.200/20. Найдите адрес сети.

Маска /20 равна 255.255.240.0. Проблемный октет третий. Размер блока:

256 - 240 = 16

Третий октет равен 173. Блоки идут так: 160 - 175, 176 - 191, 192 - 207. Число 173 попадает в блок 160 - 175. Значит:

Адрес сети: 10.18.160.0
 Broadcast:  10.18.175.255

Типичные ошибки при вычислении адреса сети

Первая ошибка: считать, что при маске /24 всегда меняется только последний октет. Для /20, /21, /22 и /23 граница сети проходит в третьем октете, поэтому адрес сети может отличаться не только последним числом.

Вторая ошибка: путать адрес сети с первым адресом устройства. В подсети 192.168.1.0/24 адрес 192.168.1.0 не назначают обычному компьютеру, потому что это имя самой сети. Первый обычный адрес узла: 192.168.1.1.

Третья ошибка: забывать про broadcast. В той же подсети 192.168.1.0/24 адрес 192.168.1.255 является широковещательным. В классической схеме его тоже не назначают устройству.

Четвертая ошибка: механически вычитать 2 везде. Для обычных учебных задач подход верный, но в реальных сетях встречаются /31 для соединений точка-точка и /32 для одного адреса. В таких случаях сетевое оборудование может трактовать адреса иначе.

Мини-шпаргалка по вычислениям

Что нужно найти Как считать Пример
Адрес сети IP AND маска 192.168.1.130 AND 255.255.255.192 = 192.168.1.128
Количество битов узлов 32 минус длина префикса /26: 32 - 26 = 6
Всего адресов 2^n 2^6 = 64
Обычных адресов для узлов 2^n - 2 64 - 2 = 62
Размер блока 256 минус значение маски в проблемном октете 256 - 240 = 16

FAQ: короткие ответы по маскам и подсетям

Чем отличается IP-адрес от адреса сети?

IP-адрес обычно принадлежит конкретному интерфейсу устройства. Адрес сети обозначает всю подсеть целиком и получается после применения маски к IP-адресу.

Почему из числа адресов часто вычитают 2?

В обычной IPv4-подсети первый адрес занимает сама сеть, последний адрес занимает broadcast. Устройствам остаются промежуточные адреса.

Что значит маска /24?

/24 означает, что первые 24 бита IP-адреса относятся к сети, а последние 8 бит остаются для узлов. Десятичная запись такой маски: 255.255.255.0.

Как понять, в каком октете считать блок?

Найдите октет маски, который не равен 255 и не равен 0. В этом октете проходит граница сети. Например, в маске 255.255.240.0 проблемный октет третий.

Можно ли вычислять подсети без двоичной системы?

Да, для типовых задач удобен метод размера блока: 256 минус значение маски в проблемном октете. Но двоичная логика нужна, чтобы понимать, почему метод работает.

Практический вывод

Маска подсети не является дополнительным украшением IP-адреса. Маска задает границу между сетью и узлами. Чтобы найти адрес сети, надо применить к IP-адресу и маске операцию AND. Чтобы найти число адресов, надо посчитать нули в маске и возвести 2 в эту степень. Для большинства учебных и бытовых задач дальше остается вычесть 2: один адрес уйдет на сеть, второй на broadcast.

Если маска кратна восьми, например /8, /16 или /24, вычисления почти очевидны. Если маска нестандартная, например /20, /26 или /27, безопаснее считать через двоичный вид или через размер блока. Такой подход убирает гадание и дает правильный ответ даже в задачах, где граница подсети проходит внутри октета.

маска подсеть адрес сеть ip CIDR узел
Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
ОР
50% / 50%

антипов жжёт

Ваш мозг проигрывает в рулетку,
даже когда вы не играете

// закон малых чисел →

Юрий Кочетов

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