Перейти к содержанию

Калькулятор подсетей IPv4

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

Исходные данные

192.168.1.10/24 или 192.168.1.10 255.255.255.0

Проверим, в одной ли он подсети с первым

Префикс или маска подсетей

Подберём префикс

Результат

Сеть
192.168.1.0/24
маска 255.255.255.0, обратная маска 0.0.0.255
Адресов для узлов
254всего 256, минус адрес сети и широковещательный
Диапазон узлов
192.168.1.1 — 192.168.1.254
Широковещательный адрес
192.168.1.255
Тип адреса
частная сеть192.168.0.0/16, RFC 1918
192.168.1.1 в той же подсети?
да
ДесятичнаяДвоичнаяHex
Адрес192.168.1.1011000000.10101000.00000001.000010100xC0A8010A
Маска255.255.255.011111111.11111111.11111111.000000000xFFFFFF00
Сеть192.168.1.011000000.10101000.00000001.000000000xC0A80100
Broadcast192.168.1.25511000000.10101000.00000001.111111110xC0A801FF

192.168.1.0/24 → 4 подсети /26, в каждой 62 адреса для узлов

ПодсетьУзлыBroadcast
192.168.1.0/26192.168.1.1 — 192.168.1.62192.168.1.63
192.168.1.64/26192.168.1.65 — 192.168.1.126192.168.1.127
192.168.1.128/26192.168.1.129 — 192.168.1.190192.168.1.191
192.168.1.192/26192.168.1.193 — 192.168.1.254192.168.1.255

Расчёт выполнен по формулам и данным из источников, приведённых на этой странице, и не заменяет проверку: параметры компонентов у разных производителей и даже партий различаются. Перед применением сверяйте результат с документацией на конкретные детали.

Калькулятор работает с IPv4 — его используют Ethernet-модули и встроенные стеки TCP/IP микроконтроллеров. Адрес вводится в записи CIDR (192.168.1.10/24) или с маской через пробел (192.168.1.10 255.255.255.0). Расчёт — побитовые операции над 32-битным числом, проверенный на эталонных значениях модуля ipaddress из стандартной библиотеки Python.

Префикс, маска и адрес сети

Адрес IPv4 — 32 бита, записанные четырьмя десятичными октетами. Префикс длиной n (RFC 4632) говорит, что первые n битов — номер сети, остальные 32 − n — номер узла. Маска — те же n единиц и 32 − n нулей:

сеть=адрес&маска,broadcast=сеть∣¬ маска,Nадресов=232−n.\text{сеть} = \text{адрес} \mathbin{\&} \text{маска}, \qquad \text{broadcast} = \text{сеть} \mathbin{|} \lnot\,\text{маска}, \qquad N_\text{адресов} = 2^{32 - n}.

Пример для 192.168.1.10/24 в двоичном виде:

ДесятичнаяДвоичная
Адрес192.168.1.1011000000.10101000.00000001.00001010
Маска /24255.255.255.011111111.11111111.11111111.00000000
Сеть192.168.1.011000000.10101000.00000001.00000000
Broadcast192.168.1.25511000000.10101000.00000001.11111111

Маска всегда состоит из единиц подряд, а затем нулей: 255.255.0.255 маской не бывает, и калькулятор такую запись не примет. Обратная маска (wildcard) — инверсия маски, её используют в списках доступа маршрутизаторов. Побитовое И и ИЛИ удобно проверить в калькуляторе битовых масок, а перевести октеты в шестнадцатеричный вид — в конвертере систем счисления.

Сколько адресов получают узлы

Адрес, у которого все биты узла нули, — адрес самой сети, все единицы — широковещательный адрес подсети (directed broadcast). Узлам их не назначают, поэтому узлов на два меньше, чем адресов в блоке. Исключения — два самых длинных префикса:

  • /31 — по RFC 3021 на канале точка-точка оба адреса считаются адресами узлов, а направленной широковещательной рассылки нет;
  • /32 — один адрес, маршрут к отдельному узлу (RFC 4632).
ПрефиксМаскаАдресовУзлов
/30255.255.255.25242
/29255.255.255.24886
/28255.255.255.2401614
/27255.255.255.2243230
/26255.255.255.1926462
/25255.255.255.128128126
/24255.255.255.0256254
/23255.255.254.0512510
/22255.255.252.010241022
/16255.255.0.065 53665 534

Поле «Сколько узлов нужно в подсети» подбирает самый длинный префикс, в котором поместятся нужные узлы плюс адрес сети и широковещательный: n=32−⌈log⁡2(Nузлов+2)⌉n = 32 - \lceil \log_2(N_\text{узлов} + 2) \rceil. Для 30 узлов это /27, для 31 — уже /26. Префиксы /31 и /32 калькулятор для сети Ethernet не предлагает.

Частные и особые адреса

Не все адреса одинаковы: реестр особых адресов IANA (RFC 6890) выделяет блоки, которые нельзя использовать как обычные публичные адреса. Калькулятор подписывает тип адреса по этому реестру:

БлокНазначениеДокумент
10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16частные сети: используются без регистрации, в интернет не маршрутизируютсяRFC 1918
169.254.0.0/16локальные адреса канала, назначаются без DHCPRFC 3927
127.0.0.0/8петлевой интерфейс устройстваRFC 1122
100.64.0.0/10общее адресное пространство операторов (CGN)RFC 6598
192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24адреса для документации и примеровRFC 5737
192.88.99.0/24ретрансляторы 6to4 (anycast), назначение отмененоRFC 6890, RFC 7526
224.0.0.0/4групповая рассылка (multicast)RFC 5771
255.255.255.255/32ограниченная широковещательная рассылкаRFC 919

Остальные блоки реестра — 0.0.0.0/8, 192.0.0.0/24, 198.18.0.0/15 и 240.0.0.0/4 — калькулятор тоже называет. Частный блок 172.16.0.0/12 — это 172.16.0.0–172.31.255.255; адреса 172.15.x.x и 172.32.x.x уже публичные, на этой границе ошибаются чаще всего. Адрес из 100.64.0.0/10 на WAN-порту роутера означает, что провайдер выдаёт адрес из своей частной сети: подключиться к устройству из интернета напрямую не получится.

Ethernet на микроконтроллере: где задаются адрес и маска

У микроконтроллера в сети те же три параметра, что у компьютера: собственный адрес, маска и шлюз. Как их задать, зависит от того, где работает стек TCP/IP — подробно варианты разобраны в статье про Ethernet для микроконтроллеров.

  • W5500 держит стек TCP/IP в самой микросхеме. Адрес, маску и шлюз микроконтроллер записывает по SPI в общие регистры SIPR, SUBR и GAR — по 4 байта в порядке октетов: 192.168.0.1 в GAR — это 0xC0, 0xA8, 0x00, 0x01 по адресам 0x0001–0x0004. После сброса регистры нулевые, поэтому без записи адреса микросхема в сети не работает; DHCP в списке аппаратных протоколов W5500 нет (TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE): клиент DHCP работает в программе микроконтроллера поверх UDP-сокета.
  • ENC28J60 — только MAC и PHY. IP-адрес хранит и обрабатывает стек TCP/IP на микроконтроллере, например lwIP; там же задаются маска и шлюз.
  • ESP32 с Ethernet или Wi-Fi работает через ESP-NETIF. На интерфейсе Ethernet и станции Wi-Fi клиент DHCP включён по умолчанию, и перед установкой статического адреса его нужно остановить, иначе esp_netif_set_ip_info() вернёт ESP_ERR_ESP_NETIF_DHCP_NOT_STOPPED:
esp_netif_dhcpc_stop(netif);
esp_netif_ip_info_t info = { 0 };
esp_netif_set_ip4_addr(&info.ip, 192, 168, 1, 50);
esp_netif_set_ip4_addr(&info.netmask, 255, 255, 255, 0);
esp_netif_set_ip4_addr(&info.gw, 192, 168, 1, 1);
ESP_ERROR_CHECK(esp_netif_set_ip_info(netif, &info));

Адрес сервера DNS при статической настройке задаётся отдельно, функцией esp_netif_set_dns_info(). Пример protocols/static_ip в ESP-IDF показывает полный порядок действий.

Типичные схемы адресации

Ниже — примеры, а не правила: подсеть всегда берите из настроек своего роутера или у администратора сети.

  • Домашняя сеть. Роутер раздаёт адреса по DHCP в своей подсети, часто это 192.168.0.0/24 или 192.168.1.0/24, сам роутер — шлюз. Устройству со статическим адресом выбирайте адрес из той же подсети, но вне пула DHCP роутера: иначе роутер рано или поздно выдаст этот адрес другому устройству.
  • Прямое подключение к компьютеру. Без роутера и DHCP компьютер может назначить себе адрес 169.254.x.x по RFC 3927. Надёжнее задать обоим устройствам статические адреса из одной частной подсети, например 192.168.50.1/24 и 192.168.50.2/24; шлюз в такой сети не нужен.
  • Промышленная сеть. Контроллеры, панели и модули ввода-вывода обычно получают статические адреса из отдельной частной подсети, выделенной под оборудование, а связь с офисной сетью идёт через маршрутизатор. Деление большой сети на подсети по участкам — поле «Разбить сеть на подсети»: 10.0.0.0/22, разбитая на /24, даёт четыре подсети по 254 узла.

Типичные ошибки

  • Шлюз не из подсети устройства: например, адрес 192.168.1.50/24 и шлюз 192.168.0.1. Внутри подсети устройство работает, но ответить узлу из другой сети не может. Калькулятор проверяет это по второму адресу.
  • Неверная маска: 255.255.0.0 вместо 255.255.255.0 делает «своими» адреса, которые на самом деле за роутером, и устройство пытается найти их через ARP в своём сегменте.
  • Адрес сети или широковещательный адрес в качестве адреса узла: 192.168.1.0/24 или 192.168.1.255/24 — калькулятор предупредит.
  • Один и тот же статический адрес на двух платах, прошитых одной прошивкой: адрес лучше брать из настроек или из MAC-адреса, а не из констант в коде.

Сколько данных пройдёт через интерфейс между микроконтроллером и Ethernet-модулем с учётом команд и пауз, можно оценить калькулятором полезной скорости в режиме SPI.

Частые вопросы

Сколько адресов в подсети /24 и какой у неё маска?

Маска /24 — 255.255.255.0: первые 24 бита адреса задают сеть, последние 8 — узел. В блоке 256 адресов, из них два служебных — адрес сети (все биты узла нули, например 192.168.1.0) и широковещательный (все единицы, 192.168.1.255). Узлам остаются 254 адреса, от .1 до .254. Каждый бит префикса делит блок пополам: /25 — 126 узлов, /26 — 62, /23 — 510.

Зачем нужна маска /31 и почему у неё два узла, а не ноль?

По общему правилу у /31 оба адреса служебные — адрес сети и широковещательный, — и узлам ничего не остаётся. RFC 3021 разрешает на каналах точка-точка считать оба адреса узловыми: широковещательная рассылка внутри такого канала не нужна. Это экономит адреса на соединениях между маршрутизаторами. В обычной сети Ethernet с несколькими устройствами /31 не используют — минимальная подсеть с адресом шлюза там /30.

Почему устройство с адресом 169.254.x.x не видно в сети?

Адреса 169.254.0.0/16 — локальные адреса канала по RFC 3927. Устройство или компьютер берёт такой адрес сам, когда не получил ответа от сервера DHCP, и с ним можно общаться только внутри одного сегмента: маршрутизатор такие пакеты не пересылает. Если плата с ESP32 или W5500 показывает 169.254.x.x, значит, DHCP не ответил — проверьте кабель и сервер DHCP или задайте статический адрес из подсети роутера.

Как проверить, правильно ли задан статический IP на микроконтроллере?

Адрес, маска и шлюз должны давать одну подсеть: шлюз — адрес из той же сети, что и устройство. Адрес не должен совпадать с адресом сети и широковещательным, с адресами других устройств и с пулом DHCP роутера, иначе два узла получат одинаковый адрес. Введите адрес устройства с маской и адрес шлюза — калькулятор покажет, в одной ли они подсети.

Источники

  1. IETF. RFC 4632: Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan, 2006 — разд. 3.1 — запись префикс/длина и таблица: адресов в блоке 2^(32−n), /31 — канал точка-точка, /32 — маршрут к узлу, /0 — маршрут по умолчанию
  2. IETF. RFC 3021: Using 31-Bit Prefixes on IPv4 Point-to-Point Links, 2000 — разд. 2.1 — на канале точка-точка с маской /31 оба адреса — адреса узлов; 2.2 — адрес сети и направленная широковещательная рассылка, на /31 направленной рассылки нет, используется ограниченная 255.255.255.255
  3. IETF. RFC 1918: Address Allocation for Private Internets, 1996 — разд. 3 — частные блоки 10/8, 172.16/12 и 192.168/16
  4. IETF. RFC 3927: Dynamic Configuration of IPv4 Link-Local Addresses, 2005 — префикс 169.254/16; адрес выбирается случайно от 169.254.1.0 до 169.254.254.255, первые и последние 256 адресов зарезервированы; такие адреса действуют только внутри канала
  5. IETF. RFC 6890: Special-Purpose IP Address Registries, 2013 — разд. 2.2.2, табл. 1–16 — блоки особого назначения IPv4: 0/8, 10/8, 100.64/10, 127/8, 169.254/16, 172.16/12, 192.0.0/24, 192.0.2/24, 192.168/16, 198.18/15, 198.51.100/24, 203.0.113/24, 240/4, 255.255.255.255/32
  6. IETF. RFC 6598 (общее адресное пространство 100.64/10, 2012), RFC 5737 (адреса для документации, 2010), RFC 5771 (групповые адреса 224/4, 2010), RFC 7526 (отмена префикса ретрансляторов 6to4 192.88.99.0/24, 2015) — блоки, которые калькулятор называет по типу; примеры адресов на странице взяты из 192.0.2.0/24, 198.51.100.0/24 и 203.0.113.0/24 там, где адрес публичный
  7. WIZnet. W5500 Datasheet v1.1.0, 2022 — разд. 4.1, общие регистры: GAR (0x0001–0x0004) — шлюз, SUBR (0x0005–0x0008) — маска, SIPR (0x000F–0x0012) — собственный адрес, октеты в порядке записи адреса (пример 192.168.0.1 — 0xC0, 0xA8, 0x00, 0x01)
  8. Espressif. ESP-IDF Programming Guide v6.1: ESP-NETIF — для статического адреса нужно остановить клиент DHCP (он включён по умолчанию у интерфейса Ethernet и станции Wi-Fi); esp_netif_set_ip_info() — адрес, маска и шлюз в esp_netif_ip_info_t, ошибка ESP_ERR_ESP_NETIF_DHCP_NOT_STOPPED, если DHCP ещё работает; esp_netif_set_ip4_addr()

Где пригодится

Встроить калькулятор на свой сайт

Скопируйте код и вставьте его в HTML страницы, статьи или вики. Виджет бесплатный, без рекламы, счётчиков и cookie. Условие одно — ссылка на GAW под рамкой остаётся на месте. Подробнее о виджетах

<iframe src="https://gaw.ru/embed/ip-subnet/" title="Калькулятор подсетей IPv4" width="100%" height="640" style="border:1px solid #e3e5e9;border-radius:8px" loading="lazy" allow="clipboard-write"></iframe>
<p style="margin:6px 0 0;font-size:14px">Калькулятор: <a href="https://gaw.ru/tools/ip-subnet/">Калькулятор подсетей IPv4</a> — GAW.ru</p>
Автоподстройка высоты рамки

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

<script>window.addEventListener("message",function(e){if(e.origin!=="https://gaw.ru"||!e.data||e.data.type!=="gaw:embed-height")return;var f=document.querySelectorAll('iframe[src^="https://gaw.ru/embed/"]');for(var i=0;i<f.length;i++)if(f[i].contentWindow===e.source)f[i].style.height=e.data.height+"px"})</script>

Обновлено .

Нашли ошибку в расчёте?