Ответ
Маска подсети (или префикс, например /24) определяет границу между сетевым адресом и адресом хоста в IP-адресе. Помимо ограничения количества доступных адресов хостов (2^(биты_хоста) - 2), она выполняет несколько ключевых функций:
- Определяет принадлежность к сети. Маршрутизатор сравнивает IP-адрес назначения с маской своей интерфейсной подсети, чтобы понять, находится ли цель в локальной сети или пакет нужно отправить на другой маршрутизатор (шлюз).
- Задает broadcast-адрес. Последний адрес в диапазоне подсети (
<сеть>.<широковещательный>) используется для отправки пакетов всем устройствам в этой подсети. - Организует логическую сегментацию (субсети). Разбиение большой сети (например,
10.0.0.0/8) на меньшие подсети (10.1.0.0/16,10.1.1.0/24) для улучшения управления, безопасности и производительности.
Пример для 192.168.1.0/24:
- Сетевой адрес:
192.168.1.0 - Маска:
255.255.255.0или/24(24 бита для сети) - Диапазон хостов:
192.168.1.1—192.168.1.254 - Broadcast-адрес:
192.168.1.255
В DevOps это критично для проектирования сетей VPC в облаках (AWS, GCP), настройки CIDR-блоков и обеспечения связи между сервисами.
Ответ 18+ 🔞
А, ну вот, опять про эти маски подсети. Сидишь, бывает, такой, настраиваешь что-нибудь, а тут — ёперный театр — пакеты не ходят. И начинаешь копать, а оказывается, вся манда с ушами из-за того, что кто-то криво префикс прописал.
Смотри, чувак, маска подсети — это типа такой забор. Она отгораживает твою локальную деревню от всего остального интернета. Представь IP-адрес: 192.168.1.15. Сам по себе он нихрена не значит. Но если к нему приписать /24, то сразу ясно: первые 24 бита — это номер сети (192.168.1.), а последние 8 бит — это уже номер твоего конкретного компьютера в этой сети (.15).
И вот зачем этот забор, кроме как просто ограничить количество адресов (типа 2^(биты_хоста) - 2), нужен:
- Понять, где свой, а где чужой. Маршрутизатор — он же не телепат, ёпта. Он берет IP-адрес назначения, накладывает на него маску своей подсети и смотрит: ага, сетевые части совпали — значит, цель тут, рядом, можно кидать пакет прямо в свитч. Не совпали? Ну всё, пизда рулю, отправляй эту посылку на шлюз, пусть он голову ломает.
- Задать адрес для ора на всю деревню. Это broadcast-адрес, последний в диапазоне. Хочешь крикнуть всем устройствам в своей подсети? Шли пакет на этот адрес. Типа
192.168.1.255для нашей сети. Все услышат. Удивление пиздец, но иногда очень полезно. - Дробить большие сети на уютные кусочки. Ну вот смотри, дали тебе огромную сеть
10.0.0.0/8. Овердохуища адресов! Так нельзя, все перессорятся. Ты её нарезаешь на сабнеты:10.1.0.0/16для одних сервисов,10.1.1.0/24для других. Получается логическая сегментация: безопасность лучше, трафик не мешается, управлять проще. Волнение ебать — красота же!
Разберём на костях, на примере 192.168.1.0/24:
- Адрес сети (забор):
192.168.1.0 - Маска (длина забора):
255.255.255.0или/24 - Где живут хосты:
192.168.1.1—192.168.1.254(первый и последний — служебные, их трогать нельзя) - Адрес для ора (broadcast):
192.168.1.255
В девопсе это, блядь, в душу мать, как важно. Когда в облаке (AWS, GCP) VPC настраиваешь — первым делом CIDR-блоки выбираешь. Малейшая ошибка в маске — и сервисы друг друга не увидят, или, что хуже, доверия ебать ноль — начнут лезть, куда не надо. Так что не халтурь тут, чувак, с этими префиксами.