Стенд

Калькулятор IPv4

Введите адрес с префиксом — и получите маску, адрес сети, широковещательный, первый и последний узел. Ползунок двигает границу сети по битам, кнопки ниже делят сеть на равные части. Всё считается арифметикой на месте, ничего не спрашивая у сервера.

Префикс — сколько бит слева занято под номер сетиМаска — те же биты, только точечной записьюWildcard — маска наоборот, для правил фильтрации
префикс /24255.255.255.0
Адрес
узел185.135.41.5
префикс/24
маска255.255.255.0
wildcard0.0.0.255обратная маска, для ACL
Сеть
адрес сети185.135.41.0
широковещательный185.135.41.255
первый узел185.135.41.1
последний узел185.135.41.254
Размер
всего адресов256
узлам254минус сеть и широковещательный
диапазон185.135.41.1 — 185.135.41.254
Назначение
типпубличный
классBисторическое деление

Маршрутизируется в интернете. Виден снаружи как есть.

адрес10111001.10000111.00101001.00000101
маска11111111.11111111.11111111.00000000
сеть10111001.10000111.00101001.00000000

Цветом — 24 бита сети, приглушённо — 8 бит номера узла. Граница между ними и есть префикс.

разбить на
Из чего всё выводится

Шесть формул, и больше ничего

Адрес IPv4 — это 32 бита, разбитые на четыре байта только для удобства чтения. Всё остальное получается из двух чисел: самого адреса и длины префикса.

1. Адрес — одно число

Четыре октета — это разряды числа по основанию 256, как цифры в обычном числе, только крупнее. 185.135.41.5 внутри выглядит так:

185·2²⁴ + 135·2¹⁶ + 41·2⁸ + 5 = 3 112 642 821

Поэтому «следующий адрес» — это просто плюс единица, и переход через границу октета (10.0.0.255 → 10.0.1.0) не требует особых правил.

2. Маска из префикса

Префикс /p означает p единиц слева и нули справа. Отсюда точечная запись маски и берётся:

маска = 2³² − 2⁽³²⁻ᵖ⁾ /24 → 2³² − 2⁸ = 255.255.255.0

Обратная задача так же однозначна: маску переводят в двоичный вид и считают единицы подряд. Единицы обязаны идти без разрывов — иначе это не маска.

3. Адрес сети — побитовое И

Там, где в маске единица, бит адреса остаётся; где ноль — обнуляется. Номер узла стирается, номер сети остаётся:

сеть = адрес AND маска 185.135.41.5 AND 255.255.255.0 = 185.135.41.0

Отсюда важное следствие: любой адрес из сети даёт один и тот же адрес сети. Вводите .5 или .200 — результат совпадёт.

4. Широковещательный — побитовое ИЛИ

Обратная маска (wildcard) — это маска с перевёрнутыми битами. Заполняем ею всю узловую часть единицами:

wildcard = NOT маска = 0.0.0.255 bcast = сеть OR wildcard = 185.135.41.255

Wildcard нужен не только здесь: правила ACL и OSPF на оборудовании Cisco пишутся именно обратной маской.

5. Сколько узлов

Под номер узла осталось 32 − p бит, значит адресов в сети столько:

всего = 2⁽³²⁻ᵖ⁾ узлам = 2⁽³²⁻ᵖ⁾ − 2 /24 → 256 − 2 = 254

Минус два — это адрес самой сети (все нули в узловой части) и широковещательный (все единицы). Ни тот, ни другой узлу не назначают.

6. Первый и последний

Раз края заняты служебными адресами, рабочий диапазон — всё между ними:

первый = сеть + 1 = 185.135.41.1 последний = bcast − 1 = 185.135.41.254

Исключения два. У /31 оба адреса рабочие (RFC 3021, звено между маршрутизаторами), у /32 адрес ровно один — это отдельный узел, а не сеть.

Деление

Каждый бит удваивает число сетей

Забрать бит у узловой части и отдать его сетевой — это и есть разбиение на подсети. Сетей становится вдвое больше, каждая — вдвое меньше. Из одной /24 получается две /25, четыре /26, восемь /27; узлов в них 126, 62 и 30 соответственно.

Разные части можно резать по-разному: филиалу на 100 машин — /25, звену между маршрутизаторами — /30 или /31. Это называется VLSM, маска переменной длины, и именно она пришла на смену классам. Кнопки «разбить на» в калькуляторе показывают результат сразу, вместе с диапазонами каждой части.

Обратная операция — объединение. Две соседние /25 складываются в /24 только если первая начинается на границе, кратной своему размеру: 192.168.1.0/25 и 192.168.1.128/25 — складываются, а 192.168.1.64/26 и 192.168.1.128/26 — нет, между ними разрыв.

Справочник

Префиксы, маски и размеры

Подсвечены три строки, которые встречаются чаще прочих: /24 — обычная сеть офиса или квартиры, /30 — классическое звено между маршрутизаторами, /32 — один узел.

ПрефиксМаскаОбратная маскаВсего адресовУзлам
/8255.0.0.00.255.255.25516 777 21616 777 214
/16255.255.0.00.0.255.25565 53665 534
/20255.255.240.00.0.15.2554 0964 094
/22255.255.252.00.0.3.2551 0241 022
/23255.255.254.00.0.1.255512510
/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
/31255.255.255.2540.0.0.122
/32255.255.255.2550.0.0.011
Занятые диапазоны

Адреса, которые не ваши

Часть пространства IPv4 расписана заранее. Калькулятор подписывает такой адрес сразу — чтобы «публичный» адрес из чужого диапазона не обнаружился уже в работе.

ДиапазонЧто этоЧем важно
10.0.0.0/8частный, RFC 191816 777 216 адресов. Столько, что в него влезает любая корпоративная сеть.
172.16.0.0/12частный, RFC 1918Это 172.16–172.31, а не весь 172.x. Ошибка встречается чаще всех остальных.
192.168.0.0/16частный, RFC 1918Диапазон домашних роутеров. 256 сетей по /24.
100.64.0.0/10CGNAT, RFC 6598Общий NAT провайдера. Выглядит как публичный, но наружу вас по нему не найдут.
127.0.0.0/8петляВесь /8, а не только 127.0.0.1: 127.1.2.3 тоже отвечает сам себе.
169.254.0.0/16link-local, APIPAУзел присвоил адрес сам, не найдя DHCP. Видите такой — ищите, почему молчит сервер.
224.0.0.0/4многоадресныйРассылка группе: OSPF, mDNS, IPTV. Узлу такой адрес не назначают.
255.255.255.255широковещательныйВсем в своём сегменте. Через маршрутизатор не проходит.
Историческое

Классы: почему их помнят и почему ими не считают

До 1993 года маска не передавалась вовсе — её угадывали по первому октету адреса. Класс A (1–126) означал /8, класс B (128–191) — /16, класс C (192–223) — /24. Класс D (224–239) отдан многоадресной рассылке, класс E (240–255) зарезервирован и таким и остался.

Схема была расточительной: организации, которой нужны 300 адресов, класс C уже не хватало, а класс B давал 65 534 — с запасом в двести раз. Адреса кончались, и на смену пришёл CIDR (RFC 1518 и 1519): маска стала передаваться явно, а её длина — любой. С тех пор запись 185.135.41.5/24 самодостаточна, и класс из неё ничего не добавляет.

Калькулятор показывает класс с пометкой «историческое» по одной причине: в разговоре и в старых конфигурациях он всё ещё встречается. Брать из него маску нельзя — сеть определяет только префикс.

Грабли

Шесть ошибок, которые стоят вечера

«172.x — это частный диапазон»

Частный только 172.16.0.0/12, то есть 172.16–172.31. Адрес 172.32.0.1 публичный и принадлежит кому-то в интернете. Именно этим ошибка и опасна: сеть работает, пока не понадобится достучаться до настоящего владельца адреса.

Маска с дыркой

255.255.0.255 записывается, но маской не является: единицы обязаны идти подряд. Иначе сеть перестаёт быть непрерывным диапазоном, а маршрутизация умеет работать только с ними. Калькулятор такую маску отвергает.

Ведущий ноль в октете

010 в некоторых системах читается как восьмеричное 8, а не как 10. Отсюда классический сюрприз: пинг «10.0.0.010» уходит на 10.0.0.8. Поэтому адрес с ведущим нулём здесь считается ошибкой ввода, а не адресом.

Минус два — не всегда

У /31 оба адреса рабочие: RFC 3021 разрешил отдавать под звено между маршрутизаторами два адреса вместо четырёх. У /32 адрес ровно один — так описывают отдельный узел, маршрут к нему или адрес на loopback-интерфейсе.

Шлюз из чужой сети

Шлюз обязан лежать внутри своей же сети: при 192.168.1.10/24 шлюз 192.168.2.1 недостижим, потому что пакет к нему уйдёт не в канал, а сначала будет искать маршрут — которого нет. Проверяется одним взглядом на адрес сети в калькуляторе.

Разные маски на одном сегменте

Узел с /24 и узел с /25 в одном сегменте видят разные границы сети. Первый считает второго соседом, второй первого — чужаком за маршрутизатором. Трафик уходит, ответы не возвращаются, и выглядит это как «интернет через раз».

Калькулятор считает арифметикой по 32-битному представлению адреса, а не подставляет значения из таблицы: маска, сеть, широковещательный и границы диапазона выводятся теми же шестью формулами, что описаны выше. Соседний стенд про дисковые массивы — RAID.