Files
SecondBrain/90 Library/Networking/VLSM.md
T
2026-05-24 15:03:28 +03:00

66 lines
6.2 KiB
Markdown

---
status: stable
type: concept
tags:
- network
- networking
created: 2025-12-17
updated: 2026-05-07
title: VLSM
---
# 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)