IPAddress-Lookup.com

Объяснение принципов разбиения на подсети и нотации CIDR (с примерами)

IPAddress-Lookup.com ·

Если вам когда-нибудь доводилось пристально разглядывать адрес вида 192.168.1.0/24 и задавались вопросом, что на самом деле означают этот косая черта и число, то вы попали как раз туда, куда нужно. Подсети и нотация CIDR лежат в основе проектирования, обеспечения безопасности и маршрутизации современных сетей, однако эта тема считается сложной и пугающей. Но это не обязательно так. Как только вы поймёте, что IP-адрес — это всего лишь строка битов, а маска подсети просто указывает, где заканчивается часть «сети» и начинается часть «хоста», всё остальное станет на свои места. В этом руководстве мы построим концепцию, начиная с самых основ, подробно рассмотрим несколько реальных примеров и предоставим вам шпаргалку, которую можно держать рядом с клавиатурой. По ходу изучения вы сможете самостоятельно проверить каждый расчет с помощью нашего инструмента «Калькулятор подсетей».

Что такое подсеть и зачем вообще нужны подсети?

Подсеть (сокращение от «подсеть») — это логическое подразделение более крупной IP-сети. Вместо того чтобы размещать каждое устройство в одной огромной плоской сети, инженеры разбивают это адресное пространство на более мелкие, автономные блоки. Каждый блок представляет собой подсеть со своим диапазоном адресов, собственным сетевым адресом и собственным адресом широковещательной рассылки. Маршрутизаторы перенаправляют трафик между подсетями, в то время как устройства внутри одной подсети могут обмениваться данными напрямую, без участия маршрутизатора.

Подсети — это не просто лишняя работа. Существует несколько конкретных причин, по которым сети делятся таким образом:

  • Эффективность и экономия адресов. Предоставление организации одного гигантского блока приводит к растрате адресов. Разбиение на подсети позволяет выделить ровно столько адресов, сколько действительно требуется отделу, этажу или филиалу, а не округлять число до ближайшего огромного класса.
  • Меньшие домены широковещания. Определённый трафик, например ARP-запросы, широковещательно рассылается всем хостам в подсети. В плоской сети, состоящей из тысяч устройств, такой трафик становится парализующим. Разделение на подсети позволяет сохранить небольшой размер каждого домена широковещания и обеспечить высокую скорость работы сети.
  • Сегментация безопасности. Разместив серверы, гостевую сеть Wi-Fi и внутренние рабочие станции в отдельных подсетях, можно применять между ними правила брандмауэра и списки контроля доступа. Скомпрометированное гостевое устройство не сможет подключиться к серверу базы данных, если они находятся в изолированных подсетях.
  • Более простая и быстрая маршрутизация. Маршрутизаторы принимают решения на основе сетевых префиксов. Хорошо спроектированные подсети можно объединить в один маршрут, что сокращает размер таблиц маршрутизации и ускоряет принятие решений о пересылке данных через Интернет.

Краткий обзор двоичной системы счисления: биты, октеты и маски

IPv4-адрес состоит из 32 битов. Мы записываем его в виде четырёх десятичных чисел, разделённых точками, например 192.168.1.10, но каждое из этих чисел на самом деле представляет собой 8-битную двоичную группу, называемую октетом. Восемь битов на октет, четыре октета — в сумме 32 бита. Каждый октет может содержать значение от 0 до 255, поскольку восемь битов могут представлять 2^8 = 256 различных значений.

Позиции битов в октете имеют разрядные значения 128, 64, 32, 16, 8, 4, 2 и 1. Для преобразования сложите позиции, в которых стоит 1. Например, октет 11000000 равен 128 + 64 = 192, а 10101000 равно 128 + 32 + 8 = 168. Таким образом, 192.168.1.10 в двоичном виде это:

  • 192 = 11000000
  • 168 = 10101000
  • 1 = 00000001
  • 10 = 00001010

Маска подсети — это ещё одно 32-битное значение, но оно имеет особый характер: оно всегда представляет собой последовательность единиц, за которой следует последовательность нулей. Единицы обозначают сетевую часть адреса, а нули — часть, относящуюся к хосту. Маска 255.255.255.0 в 11111111.11111111.11111111.00000000 в двоичном виде, то есть 24 единицы, за которыми следуют 8 нулей. Чтобы определить сеть, к которой принадлежит адрес, необходимо выполнить побитовое сложение с логическим «И» (AND) между адресом и маской: там, где в маске стоит «1», бит адреса сохраняется; там, где в маске стоит «0», бит становится равным «0». Эта операция «И» является самым важным вычислением во всей теории подсетей.

Адресация по классам: краткий исторический экскурс

В первые годы существования Интернета адреса распределялись по фиксированным «классам» в зависимости от значения первого октета. Это называется адресацией по классам, и хотя она устарела, её понимание объясняет, почему CIDR стал таким значительным усовершенствованием.

  • Класс A охватывал первые октеты с 1 по 126 и использовал 8-битную сетевую часть (маска 255.0.0.0, а /8), и предоставлял каждой сети примерно 16,7 миллиона хостов.
  • Класс B охватывал значения от 128 до 191, использовал 16-битную сетевую часть (маска 255.255.0.0, a /16) и обеспечивала около 65 000 хостов на каждую сеть.
  • Класс C охватывал диапазон от 192 до 223, использовал 24-битную сетевую часть (маска 255.255.255.0, a /24) и обеспечивал всего 254 доступных хоста.

Проблема заключалась в негибкости. Организация, которой требовалось 2 000 адресов, была слишком большой для класса C (254 хоста), но ей приходилось выделять класс B (65 000 хостов), что приводило к потере более 60 000 адресов. В условиях экспоненциального роста Интернета эта растрата грозила полным исчерпанием адресного пространства IPv4. Требовалось что-то более гибкое.

CIDR: объяснение нотации побитово

CIDR, или безклассовая междоменная маршрутизация (Classless Inter-Domain Routing), была введена в 1993 году для замены жесткой системы классов. Вместо привязки размера сети к первому октету CIDR позволяет размещать границу между сетью и хостом в любом месте в пределах 32 битов. Мы выражаем это с помощью ставшей уже привычной нотации со слэшем, называемой префиксом CIDR.

Число после косой черты — это просто количество единиц в маске подсети, иными словами, сколько битов принадлежит сети. Таким образом:

  • /8 означает 8 сетевых битов, маска 255.0.0.0 (старый размер класса A).
  • /16 означает 16 сетевых битов, маска 255.255.0.0 (старый размер класса B).
  • /24 означает 24 сетевых бита, маска 255.255.255.0 (размер старого класса C).
  • /26 означает 26 сетевых битов, маска 255.255.255.192, оставляя только 6 битов хоста.

«Волшебная формула» для определения количества адресов, содержащихся в префиксе, выглядит так: 2^(32 − n), где n — длина префикса. Поскольку всё пространство IPv4 составляет 32 бита, вычитая биты сети, остаются биты хоста, и 2, возведённое в эту степень, даёт общее количество адресов в блоке. Для /24 это 2^(32−24) = 2^8 = 256 адресов всего. Для /26 это 2^(32−26) = 2^6 = 64 адреса. Чем больше номер префикса, тем меньше подсеть.

Расчёт ключевых значений подсети

В каждой подсети есть несколько специальных адресов, которые необходимо определить. Ниже приведено их значение и способ определения.

  1. Сетевой адрес. Самый первый адрес в блоке. Все биты хоста равны 0. Он идентифицирует саму подсеть и не может быть назначен какому-либо устройству.
  2. Адрес широковещательной рассылки. Самый последний адрес в блоке. Все биты хоста равны 1. Трафик, отправленный по этому адресу, достигает каждого хоста в подсети, поэтому он также не может использоваться в качестве адреса хоста.
  3. Первый доступный хост. Адрес, следующий за сетевым адресом (сетевой адрес + 1).
  4. Последний доступный хост. Адрес, расположенный на один ниже адреса широковещательной рассылки (адрес широковещательной рассылки − 1).
  5. Общее количество адресов. 2^(32 − n).
  6. Используемые хосты. Общее количество минус 2, поскольку сетевой и широковещательный адреса зарезервированы. Формула: 2^(32 − n) − 2.

Есть ещё одно значение, о котором стоит знать: маска-подстановочный знак. Это обратная маска подсети, получаемая путём инвертирования каждого бита (вычитая из каждого октета 255). Если маска подсети 255.255.255.0 выбирает сеть, то маска-подстановочный знак 0.0.0.255 определяет диапазон хостов. Маски-шаблоны постоянно встречаются в списках контроля доступа Cisco и конфигурации OSPF, поэтому их стоит уметь распознавать.

Практический пример 1: 192.168.1.0/24

Начнём с самого простого случая. Адрес /24 четко заканчивается на границе октета, поэтому никаких бинарных манипуляций не требуется. При наличии 24 сетевых битов часть, относящаяся к хосту, составляет весь последний октет.

СвойствоЗначение
CIDR-запись192.168.1.0/24
Маска подсети255.255.255.0
Маска с подстановочными знаками0.0.0.255
Сетевой адрес192.168.1.0
Адрес широковещательной рассылки192.168.1.255
Первый доступный хост192.168.1.1
Последний доступный хост192.168.1.254
Общее количество адресов256 (2^8)
Доступные хосты254

Это классическая сеть для дома и небольшого офиса. Всё, начиная с .1 до .254 доступно для устройств, .0 обозначает сеть, а .255 является широковещательной адресацией.

Пример 2: 10.0.0.0/26

Теперь рассмотрим префикс, который не приходится на границу октета. А /26 означает 26 сетевых битов, поэтому последний октет разделяется: его первые два бита принадлежат сети, а остальные шесть — хосту. Шесть битов хоста дают 2^6 = 64 адреса на подсеть. Это означает, что /26 подсети в последнем октете идут с шагом 64: 0, 64, 128, 192.

Если сосредоточиться на первом блоке 10.0.0.0/26, маска сети равна 255.255.255.192 поскольку 11000000 в последнем октете равна 192.

СвойствоЗначение
Обозначение CIDR10.0.0.0/26
Маска подсети255.255.255.192
Маска с подстановочными знаками0.0.0.63
Сетевой адрес10.0.0.0
Адрес широковещательной рассылки10.0.0.63
Первый доступный хост10.0.0.1
Последний доступный хост10.0.0.62
Общее количество адресов64 (2^6)
Доступные хосты62

Следующей подсетью в последовательности будет 10.0.0.64/26 (хосты с .65 по .126, широковещательный адрес .127), затем 10.0.0.128/26, и, наконец, 10.0.0.192/26. Обратите внимание, что размер блока, равный 64, является именно тем «магическим числом», которое определяет начало каждой подсети.

Пример 3: 172.16.5.0/28

В нашем последнем примере подсеть сжата ещё сильнее. Адрес /28 имеет 28 сетевых битов и всего 4 бита хоста, что даёт 2^4 = 16 адресов всего и всего 14 доступных хостов. Последний октет использует 11110000 для сетевой части, что равно 240, поэтому маска равна 255.255.255.240. Подсети делятся с шагом в 16.

СвойствоЗначение
Обозначение CIDR172.16.5.0/28
Маска подсети255.255.255.240
Маска с подстановочными знаками0.0.0.15
Сетевой адрес172.16.5.0
Адрес широковещательной рассылки172.16.5.15
Первый доступный хост172.16.5.1
Последний доступный хост172.16.5.14
Общее количество адресов16 (2^4)
Доступные хосты14

A /28 — популярный размер для небольших сетей типа «точка-точка» и для строго контролируемых сегментов серверов, где требуется всего несколько адресов. Если бы вам понадобилось всего два хоста, например, для соединения между двумя маршрутизаторами, вы бы спустились до /30, который предоставляет ровно 2 доступных адреса.

Справочник по подсетям

Вместо того чтобы каждый раз заново вычислять степени числа два, запомните или добавьте в закладки приведённую ниже таблицу. В ней представлены наиболее распространённые префиксы от /24 до /30, с указанием маски, символа-заполнителя, размера блока (общего количества адресов) и количества доступных хостов.

CIDRМаска подсетиСимвол-заполнительОбщее количество адресовДоступные хосты
/24255.255.255.00.0.0.255256254
/25255.255.255.1280.0.0.127128126
/26255.255.255.1920.0.0.636462
/27255.255.255.2240.0.0.313230
/28255.255.255.2400.0.0.151614
/29255.255.255.2480.0.0.786
/30255.255.255.2520.0.0.342

Обратите внимание на элегантную закономерность: каждый сдвиг на один бит в префиксе уменьшает количество хостов вдвое, а каждое значение маски в последнем октете равно одному из следующих чисел: 128, 192, 224, 240, 248, 252. Это единственные допустимые значения, которые может принимать последний октет маски.

VLSM: подсети разного размера

При традиционном разделении на подсети сеть делится на части одинакового размера, что является неэффективным, если потребности ваших подразделений сильно различаются. Маскирование подсетей переменной длины (VLSM) решает эту проблему, позволяя применять подсети различной длины в пределах одной общей сети. По сути, вы создаете подсеть внутри подсети.

Предположим, у вас есть 192.168.10.0/24 и вам необходимо обслуживать один отдел из 100 хостов, один из 50 хостов и два маршрутизаторных соединения по 2 хоста в каждом. С помощью VLSM вы распределите адреса следующим образом:

  • A /25 (126 хостов) для крупного отдела: 192.168.10.0/25.
  • A /26 (62 хоста) для среднего отдела: 192.168.10.128/26.
  • два /30 блока (по 2 хоста в каждом) для каналов связи с маршрутизаторами, выделенных из оставшегося пространства.

Золотое правило VLSM заключается в том, чтобы сначала выделять самые большие подсети, а затем переходить к меньшим, чтобы блоки аккуратно вкладывались друг в друга без пересечений. Именно так в реальных адресных планах удаётся избежать растраты ресурсов, оставляя при этом пространство для роста.

Примечание о префиксах IPv6

Всё вышесказанное касается IPv4, но нотация CIDR напрямую применима и к IPv6, просто с гораздо большими числами. Адрес IPv6 состоит из 128 бит вместо 32, поэтому префиксы могут достигать /128. Самый важный из них — /64: согласно давней конвенции, одна подсеть IPv6 представляет собой /64, что означает выделение первых 64 битов для сетевого префикса, а последних 64 — для хоста, или «идентификатора интерфейса». В результате на каждую подсеть приходится 2^64 адресов — почти невообразимое число, именно поэтому в IPv6 редко прибегают к тем «ухищрениям» по экономии адресов, которые доминируют в подсетевании IPv4. Если вы хотите более подробно сравнить эти два протокола, ознакомьтесь с нашим руководством «IPv4 против IPv6».

Подводя итог

Подсети сводятся к трём основным идеям: IP-адрес состоит из 32 битов, маска определяет границу сети, а формула 2^(32 − n) показывает, каков размер каждого блока. Освойте эти принципы — и всё остальное сводится к арифметике. Начните с определения префикса, преобразуйте его в размер блока, найдите сетевой и широковещательный адреса — и диапазон доступных адресов окажется между ними. Потренируйтесь на нескольких примерах, и этот процесс станет для вас привычным. Если вы хотите мгновенно проверить свои вычисления, введите любой адрес и префикс в наш калькулятор подсетей и сравните результаты со своими.

Часто задаваемые вопросы

Почему из общего числа адресов вычитают 2, чтобы получить количество доступных хостов?

В каждой подсети IPv4 два адреса зарезервированы и не могут быть присвоены устройствам: сетевой адрес (все биты хоста установлены в 0), который обозначает подсеть, и широковещательный адрес (все биты хоста установлены в 1), который используется для одновременного обращения ко всем хостам. Если вычесть эти два адреса, останется количество адресов, которые можно фактически присвоить хостам, то есть 2^(32 − n) − 2.

В чём разница между маской подсети и префиксом CIDR?

Они выражают одну и ту же информацию в двух форматах. Маска подсети, например 255.255.255.0 — это 32-битное десятичное число, записанное с точками, тогда как префикс CIDR /24 — это просто количество битов, равных 1, в этой маске. Любую маску можно записать в виде префикса и наоборот; нотация CIDR просто короче и менее подвержена ошибкам.

Что на самом деле означает /24 в IP-адресе?

Число после косой черты — это длина префикса, то есть количество из 32 битов адреса, определяющих сеть. /24 резервирует первые 24 бита для сети и оставляет 8 битов для хостов, что даёт в общей сложности 256 адресов (2^8) и 254 доступных для использования. Это эквивалентно маске подсети 255.255.255.0.

Почему CIDR заменила адресацию с классами?

Адресация с классами вынуждала размеры сетей увеличиваться огромными скачками: 254 хоста, затем 65 000, затем 16 миллионов, без промежуточных значений. Организациям регулярно выделялось гораздо больше адресов, чем им требовалось, что приводило к растрате ограниченного пространства IPv4. CIDR позволяет устанавливать границу сети на любом бите, благодаря чему размеры блоков можно подбирать в соответствии с потребностями; кроме того, это позволяет обобщать маршруты, сокращая размеры таблиц маршрутизации.

Для чего используется маска-подстановочный знак?

Маска-шаблон представляет собой битовую обратную маску подсети, которую получают путем вычитания из 255 каждого октета. В то время как маска подсети соответствует сетевой части, маска-шаблон указывает, какие биты могут изменяться. Она в основном используется в списках контроля доступа Cisco и протоколах маршрутизации, таких как OSPF, для лаконичного описания диапазонов адресов.

Применяются ли те же правила разбиения на подсети к IPv6?

Концепция CIDR остаётся неизменной: длина префикса после косой черты обозначает границу сети. Разница заключается в масштабе. Адреса IPv6 состоят из 128 бит вместо 32, а стандартный размер подсети составляет /64, что обеспечивает 2^64 адреса хостов на каждую подсеть. Поскольку пространство настолько обширно, при создании подсетей в IPv6 основное внимание уделяется структуре и иерархии, а не попыткам выжать из него каждый последний адрес.