В прошлой главе мы научились читать адрес и маску: где сеть, где узел, как найти адрес сети и broadcast. Сегодня возьмём эту же «ручку» и разрежем одну большую сеть на несколько поменьше.
Граница «сеть / узел» задаётся маской. В CIDR она может стоять на любом бите. Сдвигая её вправо — заимствуем биты у узловой части в пользу сетевой.
три причины дробить сеть · broadcast-домен
заимствование бит · 2ᵇ и 2ⁿ−2 · границы подсетей
маски переменной длины · подсети IPv6
причины
базовое деление
2→4→8→50
формулы
по узлам
VLSM
IPv6
меньше конкуренция за полосу; важному трафику можно дать приоритет.
малым сегментом проще управлять и разграничивать доступ.
главная головная боль больших L2-сетей — широковещательный трафик.
Пропускная способность ограничена, а приложения-«эгоисты» тянут одеяло на себя. Разделив сети, важному трафику (например, VoIP) можно выдать приоритет — он перестаёт зависеть от второстепенного.
10 секунд задержки при выгрузке файла — терпимо. 10 секунд тишины в голосовом звонке — это сорванный звонок.
Чем меньше сегмент, тем проще мониторинг, поиск неполадок и обновления. Каждый отдел — своя подсеть: доступ выдают и отбирают «оптом», отрезая целый отдел на границе, а не настраивая каждое устройство по отдельности.
Маленькому офису на 15–20 устройств в приватном блоке сегментация ни к чему — broadcast там ничтожен. Дробить начинают, когда сеть разрастается.
Приватный блок 192.168.0.0/16 называют «мелким» лишь среди приватных диапазонов. На деле это 65 536 адресов — совсем не мало.
Широковещательный кадр от одного устройства получают и обрабатывают все узлы сегмента. В маленькой сети это не проблема.
Коммутатор копирует broadcast во все порты, кроме входного, и остановить его не может.
Протокол разрешения адресов ARP спрашивает broadcast'ом «у кого этот IP?» и так находит MAC-адрес соседа (подробно — в главе 4). Без широковещания устройства просто не нашли бы друг друга на канальном уровне.
Новое устройство ещё без адреса ищет DHCP-сервер широковещательным запросом (подробно — в главе 7). Значит от broadcast'а отказаться нельзя — на нём держатся базовые сервисы.
Broadcast не выключить — можно только ограничить его область.
Представь опенспейс без перегородок. Broadcast — это крик на весь зал: «эй, кто тут Иванов?». Пока в зале 10 человек — терпимо. Когда 300 и все кричат одновременно — работать невозможно.
Именно поэтому большие L2-сети «задыхаются»: шум растёт быстрее, чем число людей.
Идея дополнения: кадр рождается один раз, но обрабатывают его все N узлов → суммарная работа ∝ N².
Маршрутизатор не пропускает broadcast (оранжевый), но пропускает одноадресный трафик (синий). Условие: все его интерфейсы — в разных сетях.
Две сети A и B. Убери маршрутизатор — и они сольются в один L2-домен: broadcast устроит шторм. Верни R1 — домен снова ограничен.
Дано: сеть 192.168.15.0, маска 255.255.255.0 (/24). Вопрос — как разбить её на подсети? Инструмент один: заимствование бит у узловой части.
Забираем один старший бит узловой части в сетевую — и большая сеть распадается на две равные подсети.
Номера в отеле: старшую цифру заняли под этаж, отобрав её у нумерации комнат. Теперь этажей стало 2, но комнат на каждом — вдвое меньше. Ровно то же делает заимствование бита: больше подсетей — меньше узлов в каждой.
Единицы маски = сеть, нули = узлы. Граница ровно между 3-м и 4-м октетом → /24.
Узловая часть — 8 бит, значит адресов Q = 2⁸ = 256 (формула ёмкости из главы 5). Именно эти 256 адресов мы и будем делить.
Старший бит 4-го октета уходит в сеть. Маска 4-го октета:
Один бит забрали в сеть → осталось 7 узловых бит на каждую подсеть.
вся узловая часть — нули. Это первый адрес подсети.
вся узловая часть — единицы. Это последний адрес подсети.
Найдя эти две границы, мы знаем всё: между ними — рабочие адреса узлов.
Границы найдены → всё между ними (.1 – .126) — адреса узлов. Итого блок из 128 адресов.
Прибавляем 1 к broadcast'у первой подсети — младшие биты «переполняются» и перенос попадает в сетевой бит.
01111111 + 1 = 10000000 — единица «перетекла» в сетевой разряд.
Как только изменился сетевой бит — родилась новая подсеть, а узловая часть при этом обнулилась. Именно смена сетевой части, а не узловой, порождает следующую подсеть.
На 4 подсети — пожалуйста: заимствуем 2 бита. А вот на 3, 5 или 6 ровно поделить нельзя: число подсетей всегда кратно степени двойки. Нужно 3 → берёшь 4, одна простаивает.
Обратная операция — объединение подсетей в одну. Её называют суммаризацией; это тема маршрутизации, в нашем курсе не разбирается.
b — число заимствованных бит. Лесенка удвоения:
h — оставшихся узловых бит. Почему «−2»?
Два адреса всегда «служебные»: табличка с названием подсети (адрес сети) и громкоговоритель для всех сразу (broadcast). Отсюда и вычитаем 2.
Планировать нужно и по числу подсетей, и по числу узлов в каждой. Забыл про узлы — и сегмент, где формально «хватает подсетей», окажется неработоспособным: устройства просто не поместятся.
Сеть 192.168.15.0/24. Двигай ползунок — маска, число подсетей (2ᵇ), узлов (2⁸⁻ᵇ−2), префикс и диапазоны считаются вживую.
Та же сеть 192.168.15.0/24. Нужно получить 4 равные подсети. Сколько бит заимствовать и какой будет маска?
1 бит → 2 (мало). 2 бита → 4 ✓. Маска 4-го октета:
Осталось 6 узловых бит → 2⁶ = 64 адреса, из них узлов 64 − 2 = 62. Адрес каждой следующей подсети — через 64.
4-й октет = [2 сетевых бита][6 узловых]. Два старших бита перебирают номер подсети:
узлы .1 – .62
| 2 бита | Адрес сети | Диапазон узлов | Broadcast |
|---|---|---|---|
| 00 | 192.168.15.0/26 | 192.168.15.1 – 192.168.15.62 | 192.168.15.63 |
| 01 | 192.168.15.64/26 | 192.168.15.65 – 192.168.15.126 | 192.168.15.127 |
| 10 | 192.168.15.128/26 | 192.168.15.129 – 192.168.15.190 | 192.168.15.191 |
| 11 | 192.168.15.192/26 | 192.168.15.193 – 192.168.15.254 | 192.168.15.255 |
Наведи на строку — подсветится. Все блоки равны и идут через 64.
8 подсетей → 3 бита (2³ = 8). Маска 4-го октета:
Три сетевых бита перебирают номера от 000 до 111 — как двоичный счётчик от 0 до 7.
| 3 бита | Адрес сети | Диапазон узлов | Broadcast |
|---|---|---|---|
| 000 | 192.168.15.0/27 | .1 – .30 | .31 |
| 001 | 192.168.15.32/27 | .33 – .62 | .63 |
| 010 | 192.168.15.64/27 | .65 – .94 | .95 |
| 011 | 192.168.15.96/27 | .97 – .126 | .127 |
| 100 | 192.168.15.128/27 | .129 – .158 | .159 |
| 101 | 192.168.15.160/27 | .161 – .190 | .191 |
| 110 | 192.168.15.192/27 | .193 – .222 | .223 |
| 111 | 192.168.15.224/27 | .225 – .254 | .255 |
Теперь исходная сеть крупнее: 192.168.0.0/16. Требуется 50 подсетей. 50 — не степень двойки, значит ровно не поделить. Что делать?
Сгибая лист бумаги пополам, получаешь 2, 4, 8, 16 частей — но никогда ровно 3. С подсетями так же: доступны только степени двойки. Нужно 50 → берём ближайшую большую, 64.
Заимствуем 6 бит. Они ложатся в 3-й октет:
Префикс /16 + 6 бит = /22.
| Префикс | Подсетей | Узлов в подсети |
|---|---|---|
| /17 | 2 | 32 766 |
| /18 | 4 | 16 382 |
| /19 | 8 | 8 190 |
| /20 | 16 | 4 094 |
| /21 | 32 | 2 046 |
| /22 | 64 | 1 022 |
/22 — первая строка, где подсетей ≥ 50. Останавливаемся на ней.
Узловых бит осталось 10 → 2¹⁰ = 1024 адреса, узлов 1022. Более чем достаточно для крупных сегментов.
В подсети 1024 адреса. Один октет вмещает 256 значений, значит 1024 / 256 = 4 значения 3-го октета на одну подсеть. Поэтому адрес каждой следующей сети — это +4 в третьем октете.
| № | Адрес сети | Диапазон узлов | Broadcast |
|---|---|---|---|
| 1 | 192.168.0.0/22 | 192.168.0.1 – 192.168.3.254 | 192.168.3.255 |
| 2 | 192.168.4.0/22 | 192.168.4.1 – 192.168.7.254 | 192.168.7.255 |
| 3 | 192.168.8.0/22 | 192.168.8.1 – 192.168.11.254 | 192.168.11.255 |
| … | … каждая следующая — +4 в 3-м октете … | ||
| 50 | 192.168.196.0/22 | 192.168.196.1 – 192.168.199.254 | 192.168.199.255 |
| 64 | 192.168.252.0/22 | 192.168.252.1 – 192.168.255.254 | 192.168.255.255 |
Мы попросили 50, а маска дала 64. Подсети с 51-й по 64-ю (начиная с 192.168.200.0) просто не заняты — это не потеря, а запас на будущий рост.
Базовый метод всегда режет сеть на равные подсети. Сколько именно адресов в каждой — зависит от родительской сети: например, /16 на 32 подсети даёт /21 по 2048 адресов. Размер не фиксирован — фиксирована только равность.
сколько устройств в самом крупном сегменте — задаёт минимум узловых бит.
сколько сегментов нужно — задаёт минимум заимствованных бит.
Иногда отталкиваются не от числа сетей, а от числа узлов в каждой.
Наведи на строку — подсветится. Подбирай префикс по нужному числу узлов.
60 устройств → /26 (62 узла) — впритык. Правильно взять /25 (126). Сеть, набитая под завязку, ломается от одного нового сотрудника.
быстро и просто: одна маска на все подсети.
все подсети одного размера — по самой большой. Мелким сегментам достаётся слишком много адресов.
В одном отделе сотрудников всё больше, в другом стабильно, в третьем — сокращают. Если резать всех одинаково, где-то адресов не хватит, а где-то они будут простаивать. Нужен более гибкий инструмент.
маски подсетей переменной длины: внутри одной сети используем разные маски, нарезая крупный блок под фактические потребности.
Равный метод — как выдать всем одинаковый отрез ткани, независимо от роста. VLSM — пошив по мерке: каждому ровно столько, сколько нужно. Ткани уходит меньше, а сидит лучше.
Головной офис в центре, два канала — к филиалам Ф1 и Ф2, за каждым своя LAN.
Из блока 172.16.0.0/16 надо выделить сети под HQ (300), Ф2 (70) и Ф1 (20).
Каждый линк между маршрутизаторами — отдельная сеть из 2 узлов. Каналов два, значит считаем не 3, а 5 сетей: HQ, Ф2, Ф1 и два канала.
Распределяем сети от большей к меньшей. Начнёшь с мелких — крупная сеть может «не влезть» в оставшийся кусок.
Собирая рюкзак, сначала кладут крупные вещи, а мелочь рассовывают в щели. Наоборот — не поместится.
Для каждой сети берём ближайшую большую степень двойки по числу узлов — не забывая про −2 (адрес сети и broadcast).
/30 — стандартная маска для канала «точка-точка».
| Сеть | Нужно узлов | Даёт маска | Префикс |
|---|---|---|---|
| HQ | 300 | 510 | /23 |
| Ф2 | 70 | 126 | /25 |
| Ф1 | 20 | 30 | /27 |
| Канал Ф1↔HQ | 2 | 2 | /30 |
| Канал Ф2↔HQ | 2 | 2 | /30 |
адрес сети (узлы = нули)
broadcast (узлы = единицы)
диапазон узлов
9 узловых бит «перекрывают» и 4-й, и часть 3-го октета — поэтому broadcast попадает в 172.16.1.255.
Каждая следующая сеть начинается ровно там, где закончилась предыдущая — без дыр.
| Сеть | Адрес сети | Диапазон узлов | Broadcast |
|---|---|---|---|
| HQ | 172.16.0.0/23 | 172.16.0.1 – 172.16.1.254 | 172.16.1.255 |
| Ф2 | 172.16.2.0/25 | 172.16.2.1 – 172.16.2.126 | 172.16.2.127 |
| Ф1 | 172.16.2.128/27 | 172.16.2.129 – 172.16.2.158 | 172.16.2.159 |
| Канал Ф1↔HQ | 172.16.2.160/30 | 172.16.2.161 – 172.16.2.162 | 172.16.2.163 |
| Канал Ф2↔HQ | 172.16.2.164/30 | 172.16.2.165 – 172.16.2.166 | 172.16.2.167 |
Без VLSM все 5 сетей пришлось бы считать по максимуму — каждая /23. Округляя до степени двойки, получаем 8×/23 = целый /20. С VLSM хватило /22 — в четыре раза меньше адресного пространства.
маски /23, /25, /27, /30, /30 → всё в 172.16.0.0/22
5 × /23 → округляем до 8 → 172.16.0.0/20
Блоки HQ, Ф2, Ф1 и два канала уложены в масштабе на линейку /22. Переключи режим — сравни с равным делением.
Причина резать сеть та же — управление трафиком. Но адреса IPv6 экономить не нужно: их гигантски много. Поэтому расчёты становятся проще, а не сложнее.
Глобальный индивидуальный адрес (GUA): нарезаем сети оранжевой частью — идентификатором подсети.
живёт только в пределах канала. На подсети не делится.
маршрутизируется в интернете. Его и можно нарезать на подсети.
Если IPv4 — это тесный лоскут земли, который приходится делить по сантиметру, то IPv6 — целый континент. Границы проводят не ради экономии, а ради порядка и удобства.
Клиент получает префикс /48 и нарезает подсети 16-битным идентификатором подсети. Ничего вычислять не надо — просто подставляем номер и получаем готовую /64.
Меняется только оранжевый разряд — идентификатор подсети.
На линки «точка-точка» в IPv6 тоже выдают полноценную /64 — и это норма. Никаких масок /30, границ и вычитания «−2»: адресов столько, что экономить бессмысленно.
Как в IPv4, можно занять биты у идентификатора интерфейса — но кратно 4 (один hex-разряд):
48 + 16 + 4 = /68.
Меняется один hex-разряд идентификатора интерфейса.
Причины две: во-первых, незачем — 65 536 подсетей /64 хватает с огромным запасом. Во-вторых, деление интерфейса ломает автоконфигурацию адреса (SLAAC).
14 вопросов · кликай ответ · листай кнопками
деление сети на меньшие подсети
часть сети со своим диапазоном адресов
область, куда доходит broadcast
перенос бит из узловой части в сетевую
b — число заимствованных бит
h — узловых бит; −сеть, −broadcast
делить можно только на 2, 4, 8, 16…
маски переменной длины в одной сети
линк между роутерами — отдельная сеть на 2 узла
обратное: склейка подсетей в одну
16 бит для нарезки подсетей /64
64 бита; делится с кратностью 4
Теперь ты режешь адресное пространство под нужное число подсетей и узлов — равно и через VLSM, в IPv4 и IPv6.
Мы нарезали сети вручную. Дальше увидим, как адреса раздаются автоматически — через DHCP, и как работают сервисы прикладного уровня.