Маска подсети отвечает на простой, но ключевой вопрос: какая часть 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, лучше держать один алгоритм и применять без импровизации.
- Определите маску по CIDR-префиксу или переведите десятичную маску в двоичную.
- Посчитайте количество нулей в маске. Это биты для узлов.
- Найдите адрес сети через IP AND маска.
- Найдите общее число адресов по формуле 2^n, где n равно числу битов для узлов.
- Для обычной подсети вычтите 2, чтобы получить число адресов для устройств.
- Найдите 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, безопаснее считать через двоичный вид или через размер блока. Такой подход убирает гадание и дает правильный ответ даже в задачах, где граница подсети проходит внутри октета.