IPv4 (Internet Protocol version 4) это четвёртая версия интернет-протокола, по которой компьютеры, телефоны и серверы находят друг друга в сети. Адрес IPv4 занимает 32 бита и записывается четырьмя числами от 0 до 255 через точку, например 192.168.1.10. Протокол описан в RFC 791 в сентябре 1981 года. Он до сих пор работает в домашних и офисных сетях, во многих из них вместе с IPv6.
Ниже разберём, из чего состоит адрес, как читать маску подсети, какие адреса частные и почему IPv4-адресов на всех не хватило. Если нужна общая картина того, как IP уживается с TCP, UDP и HTTP, начните с разбора сетевых протоколов.
Как устроен адрес IPv4

Для компьютера адрес IPv4 просто одно 32-битное число. Людям так читать неудобно, поэтому его делят на четыре октета по 8 бит и каждый пишут в десятичном виде. Отсюда и диапазон: в 8 битах помещаются значения от 0 до 255.
| Запись | 1-й октет | 2-й октет | 3-й октет | 4-й октет |
|---|---|---|---|---|
| Десятичная | 192 | 168 | 1 | 10 |
| Двоичная | 11000000 | 10101000 | 00000001 | 00001010 |
Перевод легко проверить в Python: модуль ipaddress входит в стандартную библиотеку, ставить ничего не нужно (документация модуля). Если Python ещё не установлен, вот как скачать Python.
import ipaddress
ip = ipaddress.ip_address("192.168.1.10")
print(ip.version, int(ip))
print(ip.is_private, ip.is_global)
print(".".join(f"{octet:08b}" for octet in ip.packed))
Вывод в Python 3.14:
4 3232235786
True False
11000000.10101000.00000001.00001010
Первая строка показывает версию протокола и тот же адрес одним числом. Вторая говорит, что адрес частный и из интернета напрямую недоступен. О частных адресах ниже есть отдельный раздел.
Сколько всего адресов IPv4 и почему их не хватило
32 бита дают 232 = 4 294 967 296 комбинаций, то есть около 4,3 млрд. Часть из них вообще не выдаётся устройствам в интернете: это частные сети, петлевой адрес, адреса для документации и другие блоки из реестра особых адресов IANA.
Людей и устройств в сети давно больше. Региональные регистраторы раздавали адреса, пока было что раздавать:
- в 2012 году RIPE NCC, регистратор для Европы, Ближнего Востока и части Центральной Азии (в его зону входит и Россия), дошёл до последнего блока на 16 млн адресов и стал выдавать каждому участнику только по 1 024 адреса;
- 25 ноября 2019 года RIPE NCC объявил, что свободные IPv4-адреса закончились, а новым участникам достаются только возвращённые адреса через лист ожидания.
Поэтому сейчас работают два решения. Первое называется NAT: роутер выходит в интернет с одного публичного адреса, а за ним стоят устройства с частными. Второе решение, IPv6, даёт 128-битные адреса. Чем протоколы отличаются и как проверить IPv6 у себя, мы разобрали в статье «Чем отличается IPv4 от IPv6».
Канал основателя Checkroi Вани Буявца3 700 человек читают мой Телеграм-канал про нейросетиСобрал промпты для Claude Code и ChatGPT, разборы ИИ-инструментов и лайфхаки по продвижению бизнеса в одном местеПрисоединитьсяМаска подсети и запись через косую черту

Адрес делится на две части: номер сети и номер узла внутри неё. Где проходит граница, показывает маска подсети. В маске единицы стоят на месте битов сети, нули на месте битов узла.
Маску пишут двумя способами. Длинный похож на адрес: 255.255.255.0. Короткий показывает число единиц после косой черты: /24. Это одно и то же, вторую форму ввели вместе с бесклассовой адресацией CIDR (RFC 4632).
| Префикс | Маска | Адресов в сети | Можно раздать узлам |
|---|---|---|---|
| /8 | 255.0.0.0 | 16 777 216 | 16 777 214 |
| /16 | 255.255.0.0 | 65 536 | 65 534 |
| /24 | 255.255.255.0 | 256 | 254 |
| /26 | 255.255.255.192 | 64 | 62 |
| /30 | 255.255.255.252 | 4 | 2 |
Как посчитать узлы в подсети
Формула короткая: 2(32 − префикс) − 2. Два адреса вычитаются, потому что первый обозначает саму сеть, а последний служит широковещательным. В сети 192.168.1.0/24 это 192.168.1.0 и 192.168.1.255, раздавать можно с .1 по .254.
import ipaddress
net = ipaddress.ip_network("192.168.1.0/24")
print(net.netmask)
print(net.network_address, net.broadcast_address)
print(net.num_addresses, len(list(net.hosts())))
print(ipaddress.ip_address("192.168.1.10") in net)
255.255.255.0
192.168.1.0 192.168.1.255
256 254
True
А так сеть /24 режется на четыре подсети по 62 узла, например под бухгалтерию, гостевой Wi-Fi, камеры и серверы:
net = ipaddress.ip_network("192.168.1.0/24")
for sub in net.subnets(new_prefix=26):
print(sub, sub.netmask, sub.num_addresses - 2)
192.168.1.0/26 255.255.255.192 62
192.168.1.64/26 255.255.255.192 62
192.168.1.128/26 255.255.255.192 62
192.168.1.192/26 255.255.255.192 62
Такую разбивку на практике делают сетевые администраторы, её отрабатывают на курсах по сетевому администрированию.
Маска встречается и в шестнадцатеричном виде. Например, ifconfig в macOS печатает её так:
inet 192.168.10.88 netmask 0xfffffe00 broadcast 192.168.11.255
Запись 0xfffffe00 означает 255.255.254.0, то есть /23. В такой сети 510 адресов для узлов, поэтому широковещательный адрес заканчивается на 11.255, а не на 10.255.
Классы адресов IPv4
В RFC 791 адреса делились на три класса, и граница между сетью и узлом была зашита в первые биты адреса. Маску тогда не указывали, её «угадывали» по первому числу.
| Класс | Первые биты | Первый октет | Сеть / узел |
|---|---|---|---|
| A | 0 | 0–127 | 8 бит / 24 бита |
| B | 10 | 128–191 | 16 бит / 16 бит |
| C | 110 | 192–223 | 24 бита / 8 бит |
Размеров сети было всего три: 254, 65 534 или почти 16,8 млн узлов. Компании, которой нужна тысяча адресов, класс C был мал, а в классе B большая часть из 65 тысяч адресов пустовала. CIDR снял эту привязку, и сегодня маска может быть любой длины.
Решение: классы стоит знать для собеседований и старой документации, но при настройке сети ориентируйтесь на префикс, а не на первое число адреса. Вопросы про классы и маски часто задают на собеседовании системного администратора.
Публичные, частные и особые адреса
Публичный адрес уникален во всём интернете, его выдаёт провайдер. Частный работает только внутри локальной сети, и одни и те же частные адреса стоят в миллионах квартир одновременно. Наружу такие устройства выходят через NAT на роутере.
| Блок | Для чего | Где описан |
|---|---|---|
| 10.0.0.0/8 | частные сети, обычно крупные офисы | RFC 1918 |
| 172.16.0.0/12 | частные сети (172.16.0.0–172.31.255.255) | там же |
| 192.168.0.0/16 | частные сети, почти все домашние роутеры | там же |
| 100.64.0.0/10 | общие адреса провайдера для NAT на его стороне | RFC 6598 |
| 127.0.0.0/8 | петлевой адрес, компьютер обращается сам к себе | RFC 1122 |
| 169.254.0.0/16 | адрес, который устройство назначает себе само, без DHCP | RFC 3927 |
| 192.0.2.0/24 | примеры в документации и учебниках | RFC 5737 |
| 255.255.255.255 | широковещательная рассылка внутри своей сети | реестр IANA |
Python знает этот реестр и отвечает на вопрос «частный или нет» сам:
for a in ["10.0.0.5", "100.64.1.1", "127.0.0.1", "169.254.10.20", "8.8.8.8"]:
ip = ipaddress.ip_address(a)
print(a, ip.is_private, ip.is_global, ip.is_loopback, ip.is_link_local)
10.0.0.5 True False False False
100.64.1.1 False False False False
127.0.0.1 True False True False
169.254.10.20 True False False True
8.8.8.8 False True False False
Обратите внимание на 100.64.1.1: ни частный, ни глобальный. Так и задумано: документация модуля прямо называет блок 100.64.0.0/10 исключением, где оба флага равны False. Если роутер показывает внешний адрес из этого блока, вы сидите за NAT провайдера.
Как пакет IPv4 находит адресата
Данные уходят в сеть пакетами. Перед каждым стоит заголовок IPv4: минимум 20 байт служебных полей, а весь пакет, по спецификации протокола, может достигать 65 535 байт. Главные поля такие:
| Поле | Размер | Что хранит |
|---|---|---|
| Version | 4 бита | версию протокола, здесь всегда 4 |
| Total Length | 16 бит | длину пакета вместе с данными |
| Time to Live | 8 бит | сколько ещё пакету можно жить в сети |
| Protocol | 8 бит | что лежит внутри: TCP, UDP, ICMP |
| Header Checksum | 16 бит | контрольную сумму одного заголовка |
| Source Address | 32 бита | адрес отправителя |
| Destination Address | 32 бита | адрес получателя |
Каждый роутер на пути смотрит на адрес получателя, сверяет его со своей таблицей маршрутов и передаёт пакет дальше. Поле TTL на каждом шаге уменьшается, и пакет с нулём уничтожается. Так сеть защищается от пакетов, которые ходят по кругу. Подробнее о поле читайте в статье про TTL.
IPv4 доставляет пакет, но не обещает, что тот дойдёт. Порядок и повторную отправку берёт на себя TCP уровнем выше, а номер порта говорит, какой программе отдать данные. Как уровни ложатся друг на друга, видно на модели OSI, а про номера портов есть отдельный разбор портов компьютера.
Как узнать и поменять свой адрес IPv4

Свой адрес в локальной сети проще всего посмотреть командой в терминале:
| Система | Команда |
|---|---|
| Windows | ipconfig |
| macOS | ipconfig getifaddr en0 |
| Linux | ip -4 addr show |
На Linux вывод выглядит так, адрес идёт после слова inet вместе с префиксом:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope host lo
Поменять адрес вручную в Windows 11 и 10 можно в параметрах сети. Порядок по справке Microsoft:
- Откройте параметры Windows и раздел сети и интернета.
- Для Wi-Fi выберите «Wi-Fi» → «Управление известными сетями» и нужную сеть. Для кабеля выберите «Ethernet» и своё подключение.
- Рядом с пунктом «Назначение IP» нажмите «Изменить».
- В разделе «Изменить параметры IP» выберите «Вручную» и включите «IPv4».
- Заполните поля «IP-адрес», «Маска подсети» и «Шлюз», при необходимости «Предпочитаемый DNS-сервер» и «Альтернативный DNS-сервер».
- Нажмите «Сохранить».
Microsoft рекомендует оставлять «Автоматически (DHCP)»: тогда адрес, маску и DNS выдаёт роутер. Ручной адрес нужен принтеру, камере, домашнему серверу и всему, к чему вы обращаетесь по постоянному адресу.
Частые ошибки с IPv4 и что с ними делать
- Адрес вида 169.254.x.x. Устройство не получило ответа от DHCP и назначило адрес себе само, по RFC 3927 такой адрес годится только для соседей по тому же сегменту. Решение: проверить кабель или Wi-Fi и перезагрузить роутер, затем снова запросить адрес.
- Шлюз из другой подсети. Прописали адрес 192.168.0.50/24, а шлюз 192.168.1.1. Внутри сети всё видно, интернета нет. Решение: возьмите шлюз из той же подсети, что и адрес; в Python это проверяет строка
ipaddress.ip_address("192.168.1.1") in ipaddress.ip_network("192.168.0.0/24"), она вернёт False. - Один адрес на двух устройствах. Ручной адрес попал в диапазон, который раздаёт DHCP, и роутер выдал его кому-то ещё. Решение: для статики брать адреса вне пула DHCP, пул виден в настройках роутера.
- Порт открыт, а снаружи не достучаться. Внешний адрес роутера из 100.64.0.0/10 или из частных блоков, значит, перед вами ещё один NAT у провайдера. Решение: просить у провайдера публичный адрес.
- Путают /24 и 255.255.255.0. Это одна и та же маска, разные системы просят её в разной форме. Windows в ручной настройке IPv4 спрашивает поле «Маска подсети».
Где научиться работать с сетями
С адресации обычно начинают курсы по сетям, а дальше идут маршрутизация, VLAN, DNS и настройка оборудования. Если хотите сделать из этого профессию, посмотрите, как стать сетевым инженером и чем занимается системный администратор. Курсы по сетевым технологиям мы сравнили по цене и программе в каталоге:
| Курс | Школа | Стоимость со скидкой | В рассрочку | Длительность | Обзор курса от Checkroi |
|---|---|---|---|---|---|
| Профессия «Сетевой инженер» Перейти на сайт курса | 85 800 ₽ | 3575 ₽/мес. | 12 месяцев | Обзор курса | |
| Сетевые технологии Перейти на сайт курса | 21 840 ₽ | 1578 ₽/мес. | 2 месяца | Обзор курса | |
| Сетевые технологии Huawei Перейти на сайт курса | 11 830 ₽ | 938 ₽/мес. | 2 месяца | Обзор курса | |
| Управление и администрирование сетевых устройств информационно-коммуникационных систем Перейти на сайт курса | 10 900 ₽ | 818 ₽/мес. | Обзор курса | ||
| Учебная программа “Кибербезопасность и Сетевые технологии” Перейти на сайт курса | Бесплатно | - | 2 года | Обзор курса |
Больше программ — в полном каталоге курсов по сетевым технологиям




