Калькулятор подсетей IP: CIDR, маска, диапазон хостов
Рассчитайте параметры подсети IPv4 по адресу и префиксу CIDR: сетевой и широковещательный адреса, диапазон доступных хостов, маску подсети и обратную маску.
IP Subnet Calculator
Results
Subnet Mask in Binary
Results follow RFC 791 (IPv4 addressing), RFC 4632 (CIDR notation), RFC 950 with RFC 919 and RFC 922 (network and broadcast reservation), and RFC 3021 (/31 point-to-point links).
Документация
Калькулятор подсетей IP
Калькулятор подсетей IP вычисляет сетевые параметры, связанные с адресом IPv4 и длиной префикса. По этим двум входным данным он определяет сетевой адрес, широковещательный адрес, диапазон доступных адресов узлов, маску подсети и инверсную маску.
Что делает калькулятор
Инструмент принимает адрес IPv4, записанный четырьмя числами, разделёнными точками, например 192.168.1.10, и длину префикса от 0 до 32. Допустима и совместная запись в формате CIDR, например 192.168.1.10/24: часть /24 автоматически переносится в поле префикса.
Калькулятор возвращает:
- Запись CIDR: сеть в формате «адрес/префикс», например 192.168.1.0/24.
- Сетевой адрес: первый адрес в блоке. Он обозначает саму сеть.
- Широковещательный адрес: последний адрес в блоке. Сообщение, отправленное на него, достигает каждого узла в подсети.
- Диапазон доступных адресов узлов: первый и последний адрес, которые устройство действительно может использовать.
- Доступные узлы и общее число адресов: сколько адресов содержит блок и сколько из них доступно устройствам.
- Маска подсети и инверсная маска: маска в точечной записи, например 255.255.255.0, и её инверсия, 0,0.0,255.
- Маска подсети, представленная побитово: по восемь бит в каждом октете.
Результаты соответствуют RFC 791 (адресация IPv4), RFC 4632 (запись CIDR), RFC 950 вместе с RFC 919 и RFC 922 (резервирование сетевого и широковещательного адресов), а также RFC 3021 (соединения точка-точка /31).
Как работает разбиение на подсети
Адрес IPv4 представляет собой число длиной 32 бит. Его записывают в виде четырёх октетов, каждый из которых содержит 8 бит и значение от 0 до 255. Длина префикса разделяет эти 32 бита на две части. Первые биты — в количестве, указанном префиксом — обозначают сеть. Остальные биты обозначают узел внутри этой сети.
Сеть /24 использует 24 бита для сетевой части и оставляет 8 бит для узлов. Восемь бит узла дают 2⁸ = 256 адресов. Сеть /26 оставляет только 6 бит узла, поэтому содержит 2⁶ = 64 адреса.
Маска подсети записывает это же разделение как адрес: для каждого сетевого бита используется бит 1, а для каждого бита узла — бит 0. Для /24 это 255,255.255,0. Инверсная маска меняет каждый бит маски подсети на противоположный. Списки контроля доступа на маршрутизаторах, особенно на оборудовании Cisco, сопоставляют адреса с помощью инверсных масок, поэтому инструмент показывает обе маски.
Формула подсети
Для длины префикса p от 0 до 30 калькулятор применяет следующие правила, определённые RFC 950 и RFC 4632:
- Маска подсети = первые p бит слова длиной 32 бит, установленные в 1.
- Сетевой адрес = IP-адрес AND маска подсети (побитовая операция AND сохраняет бит только там, где оба входных значения имеют 1).
- Широковещательный адрес = сетевой адрес OR инверсная маска (каждый бит узла установлен в 1).
- Общее число адресов = 2⁽³²⁻ᵖ⁾.
- Доступные узлы = 2⁽³²⁻ᵖ⁾ − 2. Вычитание исключает сетевой и широковещательный адреса, которые RFC 950 и RFC 919 резервируют.
- Первый доступный узел = сетевой адрес + 1. Последний доступный узел = широковещательный адрес − 1.
Две длины префикса подчиняются другим правилам. Сеть /31 содержит ровно 2 адреса, и RFC 3021 делает оба доступными узлами в соединении точка-точка, без широковещательного адреса. Сеть /32 обозначает один адрес: всего 1, доступен 1, широковещательного адреса нет. В этих двух случаях инструмент называет первый адрес «База префикса», а не «Сетевой адрес», поскольку ни один из блоков не резервирует адрес для обозначения сети.
Каждый результат получается арифметическими операциями над одним числом длиной 32 бит. Инструмент не перечисляет адреса по одному, поэтому сеть /0, охватывающая все 4 294 967 296 адреса IPv4, вычисляется так же быстро, как сеть /32.
Пример расчёта
Для адреса 10.128.7.33 с длиной префикса /26:
- Маска подсети: 26 единичных битов, за которыми следуют 6 нулевых битов, образуют 11111111,11111111.11111111,11000000, что в точечной записи равно 255,255.255,192.
- Сетевой адрес: применим AND к адресу и маске. Первые три октета остаются без изменений. В последнем октете 33 в двоичной записи — 00100001; AND с 11000000 даёт 00000000, то есть 0. Сетевой адрес — 10.128.7.0, поэтому запись CIDR имеет вид 10.128.7.0/26.
- Широковещательный адрес: установить все 6 битов узла в 1. Последний октет становится равен 00111111, то есть 63. Широковещательный адрес — 10,128.7,63.
- Количество: 2⁶ = 64 адреса всего, из них 64 − 2 = 62 доступны узлам.
- Диапазон узлов: от 10.128.7.1 до 10,128.7,62.
- Инверсная маска: инверсия маски подсети, 0,0.0,63.
Второй пример использует входные данные по умолчанию: 192.168.1.10/24: сеть 192.168.1.0, широковещательный адрес 192.168.1.255, узлы от 192.168.1.1 до 192.168.1.254, доступно узлов 254 из общего числа адресов 256, маска подсети 255.255.255.0, инверсная маска 0,0.0,255.
Правила, которым следует инструмент
Октеты с ведущими нулями отклоняются. Инструмент отклоняет 010.1.1.1, а не интерпретирует его как 10,1.1,1. Это сделано намеренно. Функция POSIX inet_aton, используемая командами ping, curl и большинством системных преобразователей имён, считает октет с ведущим нулём восьмеричным, поэтому 010.1.1.1 означает 8.1.1.1 для этих программ. Ни одна интерпретация — десятичная или восьмеричная — не совпадёт у всех читателей, поэтому инструмент не принимает ни одну из них. По той же причине отклоняется префикс /08.
Из числа узлов вычитаются два адреса. Некоторые калькуляторы сообщают размер блока без изменений как число узлов. Этот инструмент следует RFC 950: в любом блоке от /0 до /30 часть узла, состоящая из одних нулей, обозначает сеть, а часть из одних единиц является широковещательной, поэтому обе исключаются, и сеть /24 имеет 254 доступных узла, а не 256.
Префикс /31 имеет два доступных узла. В более старых текстах, написанных до RFC 3021, опубликованного в 2000, сеть /31 считалась непригодной, поскольку после вычитания двух зарезервированных адресов ничего не оставалось. RFC 3021 отменил оба резервирования для соединений точка-точка, а маршрутизаторы поддерживают это уже несколько десятилетий, поэтому инструмент сообщает 2 доступных узла и отсутствие широковещательного адреса.
Принимается любой префикс от /0 до /32. Сеть /0 является допустимым блоком, охватывающим всё адресное пространство IPv4, что соответствует записи 0.0.0.0/0 в таблицах маршрутизации как маршрута по умолчанию.
Только IPv4. IPv6 (RFC 4291) использует адреса размером 128 бит и другую запись, поэтому не входит в область применения этого инструмента. Инструмент также не отмечает диапазоны специального назначения, например частные диапазоны или loopback-диапазоны (RFC 6890); он выполняет только арифметические операции над адресом.
Часто задаваемые вопросы
Сколько доступных узлов имеет сеть /24? 254. Сеть /24 оставляет 8 битов узла, что даёт 2⁸ = 256 адресов. Два адреса зарезервированы: сетевой и широковещательный. Для устройств остаётся 254 адреса.
Что такое wildcard-маска? Побитовая инверсия маски подсети. Там, где в маске подсети стоит 1, в wildcard-маске стоит 0, и наоборот. Для маски 255.255.255.0 wildcard-маска — 0,0.0,255. Списки контроля доступа на многих маршрутизаторах используют wildcard-маски, чтобы описывать адреса, которым соответствует правило.
Почему для сети /31 не показывается широковещательный адрес? Сеть /31 содержит только два адреса. Резервирование одного для сети и одного для широковещательной рассылки не оставило бы доступных адресов, поэтому RFC 3021 определяет /31 как соединение точка-точка, в котором оба адреса являются узлами и широковещательного адреса нет. Калькулятор сообщает 2 доступных узла и отмечает широковещательный адрес как неприменимый.
Почему 010.1.1.1 отклоняется, а не читается как 10.1.1.1? Потому что операционные системы по-разному трактуют обычную десятичную запись. POSIX inet_aton читает октет с ведущим нулём как восьмеричное число, поэтому 010 означает 8 в большинстве систем. Отклонение ввода — единственный способ избежать скрытого расхождения с поведением компьютера пользователя.
В чём разница между общим числом адресов и доступными узлами? Общее число адресов — полный размер блока, 2 в степени (32 минус длина префикса). Число доступных узлов равно этому значению минус два зарезервированных адреса, кроме сети /31 (оба адреса доступны) и сети /32 (единственный адрес является узлом).
Что означает сетевой адрес 192.168.1.10/24? Это 192.168.1.0, полученный сохранением первых 24 битов адреса и установкой битов узла в ноль. Он обозначает подсеть целиком и не может быть назначен устройству.
Источники
- Постел, Дж. «RFC 791: Интернет-протокол». IETF, 1981.
- Могул, Дж. и Дж. Постел. «RFC 950: Стандартная процедура разбиения интернет-сетей на подсети». IETF, 1985.
- Могул, Дж. «RFC 919: Широковещательная передача интернет-дейтаграмм». IETF, 1984.
- Фуллер, В. и Т. Ли. «RFC 4632: Бесклассовая междоменная маршрутизация (CIDR)». IETF, 2006.
- Ретана, А. и др. «RFC 3021: Использование префиксов длиной 31 бит в соединениях точка-точка IPv4». IETF, 2000.