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

Ответ

Маска подсети (или префикс, например /24) определяет границу между сетевым адресом и адресом хоста в IP-адресе. Помимо ограничения количества доступных адресов хостов (2^(биты_хоста) - 2), она выполняет несколько ключевых функций:

  1. Определяет принадлежность к сети. Маршрутизатор сравнивает IP-адрес назначения с маской своей интерфейсной подсети, чтобы понять, находится ли цель в локальной сети или пакет нужно отправить на другой маршрутизатор (шлюз).
  2. Задает broadcast-адрес. Последний адрес в диапазоне подсети (<сеть>.<широковещательный>) используется для отправки пакетов всем устройствам в этой подсети.
  3. Организует логическую сегментацию (субсети). Разбиение большой сети (например, 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.1192.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), нужен:

  1. Понять, где свой, а где чужой. Маршрутизатор — он же не телепат, ёпта. Он берет IP-адрес назначения, накладывает на него маску своей подсети и смотрит: ага, сетевые части совпали — значит, цель тут, рядом, можно кидать пакет прямо в свитч. Не совпали? Ну всё, пизда рулю, отправляй эту посылку на шлюз, пусть он голову ломает.
  2. Задать адрес для ора на всю деревню. Это broadcast-адрес, последний в диапазоне. Хочешь крикнуть всем устройствам в своей подсети? Шли пакет на этот адрес. Типа 192.168.1.255 для нашей сети. Все услышат. Удивление пиздец, но иногда очень полезно.
  3. Дробить большие сети на уютные кусочки. Ну вот смотри, дали тебе огромную сеть 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.1192.168.1.254 (первый и последний — служебные, их трогать нельзя)
  • Адрес для ора (broadcast): 192.168.1.255

В девопсе это, блядь, в душу мать, как важно. Когда в облаке (AWS, GCP) VPC настраиваешь — первым делом CIDR-блоки выбираешь. Малейшая ошибка в маске — и сервисы друг друга не увидят, или, что хуже, доверия ебать ноль — начнут лезть, куда не надо. Так что не халтурь тут, чувак, с этими префиксами.