IP-адресация: IPv4 и CIDR

Изучаем устройство IPv4-адреса, почему классы адресов ушли в прошлое и как их заменил CIDR.

IPv4-адрес — это 32-битное число, обычно записываемое как четыре десятичных октета через точку, например 192.168.1.10.

Что такое IPv4-адрес

IPv4-адрес — это 32 бита, разбитые на 4 байта (октета) по 8 бит. Каждый октет — число от 0 до 255. Всего адресов 2³² ≈ 4,3 миллиарда. По нынешним меркам это мало, отсюда дефицит IPv4 и переход на IPv6 (о нём отдельный урок).

Адрес логически делится на две части: номер сети (общий для всех устройств подсети) и номер хоста (уникальный внутри сети). Где проходит граница между ними — определяет маска подсети.

Адрес — это просто число

Запись через точки удобна людям, но по сути IP-адрес — одно 32-битное число. Это легко показать на Python через стандартный модуль ipaddress:

import ipaddress

a = ipaddress.ip_address('192.168.1.10')
print('Адрес:        ', a)
print('Как число:    ', int(a))
print('В двоичном:   ', format(int(a), '032b'))
print('Обратно из числа:', ipaddress.ip_address(3232235786))

Вывод:

Адрес:         192.168.1.10
Как число:     3232235786
В двоичном:    11000000101010000000000100001010
Обратно из числа: 192.168.1.10

Видно, что 192.168.1.10 и число 3232235786 — одно и то же. Именно с числами оперирует «железо»; точечная запись — лишь удобная форма для людей.

Почему классы (A/B/C) устарели

Раньше адреса делили на жёсткие классы:

КлассПервый октетСетей / хостов
A0–127мало сетей, ~16 млн хостов каждая
B128–191средние сети, ~65 тыс. хостов
C192–223много сетей, 254 хоста

Проблема: классы слишком грубые. Компании на 2000 машин класс C (254 хоста) мал, а класс B (65 тыс.) — расточительно велик: тысячи адресов простаивают. Жёсткие границы транжирили и без того дефицитное адресное пространство.

CIDR: гибкая граница сети

В 1993 году классы заменили на CIDR (Classless Inter-Domain Routing). Идея: граница между «сетью» и «хостом» может проходить где угодно, а не только на границе октетов. Её задают суффиксом /N — числом бит, отведённых под номер сети.

192.168.1.0/24  -> 24 бита на сеть, 8 на хост -> 256 адресов
192.168.1.0/26  -> 26 бит на сеть,  6 на хост -> 64 адреса
10.0.0.0/8      -> 8 бит на сеть,   24 на хост -> ~16 млн адресов

Запись /24 называется префиксом. Чем больше число, тем меньше хостов в сети. Это даёт точную нарезку: нужно ровно 500 адресов — берём /23 (512), а не целый класс B.

Зачем это веб-разработчику

CIDR-нотацию вы встретите в настройках firewall и security groups («разрешить доступ из 10.0.0.0/8»), в VPN, в конфигах облаков (AWS VPC, подсети). Понимание, что /24 — это 256 адресов, экономит часы при настройке инфраструктуры.

Итог

  • IPv4 — 32-битное число, ~4,3 млрд адресов, записывается четырьмя октетами.
  • Адрес делится на номер сети и номер хоста.
  • Классы A/B/C устарели — слишком грубое деление, трата адресов.
  • CIDR (/N) задаёт гибкую границу сети по числу бит.
Проверьте себя
1. Сколько бит в IPv4-адресе?
A16
B32
C64
D128
2. Что означает запись /24 в CIDR?
A24 хоста в сети
B24 бита отведены под номер сети, остальные 8 — под хост
C24 подсети
DАдрес 24-й версии
3. Почему классовую адресацию (A/B/C) заменили на CIDR?
ACIDR работает быстрее
BКлассы давали слишком грубое деление и расходовали дефицитные адреса впустую
CКлассы небезопасны
DCIDR проще запомнить
Поддержать проект