---
status: stable
type: concept
tags:
  - network
updated: 2026-03-24
title: VLSM
created: 2025-12-17
---

# VLSM
Стоит вспомнить про [[IP-адрес]], а конкретно то, что существует две версии IPv4 и IPv6.

IP бывают _публичные_ и _приватные_. Публичный адрес уникален, он виден всем в интернете. Каждый сайт глобальной сети имеет свой IP-адрес (_белый_). Устройства же также имеют публичный IP-адрес, но под ним же в сеть могут выходить ещё сотни устройств, т.к. это IP не конкретного устройства, а маршрутизатора, который эти устройства обслуживает.

Приватные же IP-адреса - это адреса, используемые в пределах одной сети, они могут повторяться в разрезе разных сетей, но в одной строго идентифицируют конкретное устройство. Стандартные диапазоны приватных сетей:

1. 10.0.0.0-10.255.255.255
2. 172.16.0.0 - 172.31.255.255
3. 192.168.0.0 - 192.168.215.255

В период зарождения интернета, было принято делить IP-адреса в интернете на классы:

![](1_VLSM_image.png)

При этом, `0.0.0.0` используется для протокола DHCP, этот адрес присваивается новому устройству в сети и он отправляет **широковещательный** (_broadcast_) запрос на адрес `255.255.255.255`, т.е. всем устройствам сети, в надежде найти DHCP-сервер.

`127.*.*.*` - используются для **lookback**-адресации (адресация на самом хосте).

IP-адрес, в сущности, имеет две части:

1. Адрес сети
2. Адрес узла, который определяется маской сети

**Маска сети** - это 32-битное число, где подряд идущие биты всегда равны _единице_. Вообще говоря, каждое десятичное число IP-адреса - это сумма степеней двойки.

Принадлежность адреса к классу определялась по первым битам. Для сетей класса A, первый бит всегда был равен `0`, B - `10`, C - `110`. И, разумеется, за каждым классом закреплялась своя маска подсети:

- A -> 255.0.0.0
- B -> 255.255.0.0
- C -> 255.255.255.0

Со временем стало ясно, что система классов не особо эффективно использует адреса. Поэтому мир перешел на **CIDR** (_Classless Inter-Domain Routing_) или, проще говоря, бесклассовую адресацию.

Однако, даже это не решило проблему полностью. Отделу бухгалтерии в крупной фирму надо выделить сеть с адресом `192.168.1.0/24`, при этом в отделе всего 25 хостов, значит 229 адресов остаются неиспользованными. `192.168.1.0` - адрес сети `192.168.1.255` - широковещательный адрес.

Есть формула для вычисления кол-ва занятых адресов в указанной сети:

$$H = 2^{n}-2,\ \text{где H - число хостов, n - число бит, отведенных под номер хоста}$$

Например, в адресе `192.168.1.0` - первые 24 бита `192.168.1` - определяются номер сети, а остальные 8 бит `.0` - номер конкретного устройства, поэтому $2^{8}-2 = 254$ хоста.

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

В сегментировании сети используется маска сети с переменной длиной _**VLSM**_ (_Variable Length Subnet Mask_). Суть состоит в том, что вам выделяют пул (диапазон) адресов и надо их распределить так, чтобы никто не мог перехватить трафик, но и всем досталось, как минимум, по одному адресу.

Выделением IP-адресов занимается организация _IANA_ (Internet Assigned Numbers Authority). Она делегирует права на выделение региональным регистраторам, которые выделяют адреса национальным регистраторам. Например, для Европы, региональным является _RIPE_. А те делят адреса между провайдерами.

> IANA -> Региональные регистраторы - Национальные регистрации -> Провайдеры

192.168.25.0/24, где 24 - кол-во единиц в маске. _255.255.255.0_

Для определения количества подсетей: $N = 2^{n}$, где $N$ - число подсетей, а  $n$ - число бит, заимствованных из хостовой части IP-адреса.

![](VLSM_image.png)