IP-адрес — это числовой идентификатор сетевого интерфейса устройства в сети, работающей по протоколу IP. Он решает две задачи сразу: говорит, в какой сети находится устройство (номер сети), и какое именно это устройство внутри сети (номер хоста). Адресация — это правила, по которым такие идентификаторы назначаются и делятся на части. Ниже разберем структуру IPv4 и IPv6, маску подсети и префикс, публичные и приватные адреса и то, как NAT позволяет многим устройствам выходить в интернет через один адрес.
Содержание
Чтобы не путать близкие понятия, держите короткий словарь:
- IP-адрес — логический адрес интерфейса, назначается настройкой или DHCP, может меняться.
- MAC-адрес — аппаратный адрес сетевой карты (48 бит, вида
00:1A:2B:3C:4D:5E), работает в пределах одного сегмента, обычно не меняется. - Номер сети и номер хоста — две части одного IP-адреса; где проходит граница, задает маска.
- Маска подсети и префикс (
/24) — два способа записать одно и то же: сколько старших бит отведено под сеть.
Из чего состоит IPv4-адрес
Самый распространенный формат — IPv4. Это 32 бита, записанные как четыре десятичных числа (октета) через точку: 192.168.1.130. Каждый октет — это 8 бит, поэтому его значение лежит в диапазоне от 0 до 255. Всего адресное пространство IPv4 — это 2 в степени 32, около 4,29 млрд адресов.
Адрес делится на две части: старшие биты — номер сети, младшие — номер хоста. Важно: граница между ними НЕ фиксирована на «трех октетах». Ее задает маска подсети, и в современных сетях она может проходить в любом месте, хоть посреди октета.
Маска подсети и префикс CIDR
Маска подсети — это тоже 32 бита. В старших разрядах стоят единицы (это биты сети), в младших — нули (биты хоста). Например, маска 255.255.255.0 в двоичном виде — это 24 единицы и 8 нулей. Короткая запись того же самого — префикс /24 (число единиц в маске). Такую запись называют CIDR (Classless Inter-Domain Routing).
| Префикс | Маска | Бит под хост | Адресов всего | Доступно хостам |
|---|---|---|---|---|
| /24 | 255.255.255.0 | 8 | 256 | 254 |
| /25 | 255.255.255.128 | 7 | 128 | 126 |
| /26 | 255.255.255.192 | 6 | 64 | 62 |
| /30 | 255.255.255.252 | 2 | 4 | 2 |
Из общего числа адресов в сети два всегда служебные: младший — адрес сети (все биты хоста нули), старший — широковещательный (все биты хоста единицы). Поэтому под реальные устройства остается на два меньше. Для /30 это 2 адреса — ровно на канал между двумя маршрутизаторами.
Как маска делит адрес: операция логического И
Чтобы получить номер сети, устройство выполняет побитовое логическое И между IP-адресом и маской. Проверим это на реальном примере через модуль ipaddress из стандартной библиотеки Python.
import ipaddress
ip = ipaddress.ip_address("192.168.1.130")
mask = ipaddress.ip_address("255.255.255.0")
# побитовое И даст адрес сети
network = ipaddress.ip_address(int(ip) & int(mask))
print("Адрес сети:", network)
net = ipaddress.ip_network("192.168.1.0/26")
print("Диапазон /26:", net.network_address, "-", net.broadcast_address)
print("Доступно хостам:", net.num_addresses - 2)
Вывод:
Адрес сети: 192.168.1.0
Диапазон /26: 192.168.1.0 - 192.168.1.63
Доступно хостам: 62
Если у двух адресов после наложения маски получается одинаковый номер сети, устройства находятся в одной подсети и общаются напрямую. Если номера сети разные, пакет уходит на шлюз по умолчанию — маршрутизатор, который знает путь в другие сети.
Публичные и приватные адреса, NAT
Не каждый IP-адрес виден из интернета. Часть диапазонов зарезервирована под приватные сети (RFC 1918) — они используются внутри дома или офиса и не маршрутизируются в глобальной сети.
| Диапазон | Префикс | Назначение |
|---|---|---|
| 10.0.0.0 — 10.255.255.255 | /8 | крупные приватные сети |
| 172.16.0.0 — 172.31.255.255 | /12 | средние приватные сети |
| 192.168.0.0 — 192.168.255.255 | /16 | домашние и офисные сети |
| 127.0.0.0 — 127.255.255.255 | /8 | loopback (само устройство) |
| 169.254.0.0 — 169.254.255.255 | /16 | link-local (адрес не выдал DHCP) |
Проверить принадлежность к приватному диапазону можно тем же модулем:
import ipaddress
for addr in ["10.0.0.1", "192.168.1.1", "8.8.8.8", "127.0.0.1"]:
a = ipaddress.ip_address(addr)
print(addr, "приватный" if a.is_private else "публичный",
"loopback" if a.is_loopback else "")
Вывод:
10.0.0.1 приватный
192.168.1.1 приватный
8.8.8.8 публичный
127.0.0.1 приватный loopback
Здесь на помощь приходит NAT (Network Address Translation). Домашний роутер имеет один публичный адрес от провайдера, а все устройства за ним живут на приватных адресах. При выходе в интернет роутер подменяет приватный адрес отправителя на свой публичный и запоминает соответствие, чтобы вернуть ответ нужному устройству. Так десятки устройств делят один публичный IPv4-адрес. Это упрощенное описание самого частого сценария (NAT для исходящих подключений); входящие подключения к устройству за NAT требуют отдельной настройки (проброс портов).
Классы адресов: почему это уже история
Раньше границу между сетью и хостом определяли не маской, а классом адреса — по старшим битам первого октета. Класс A отдавал под сеть первый октет, B — два, C — три. Эта модель (classful addressing) официально вытеснена подходом CIDR еще в 1993 году, потому что жестко фиксированные размеры сетей быстро исчерпывали адреса.
Термины «класс C» иногда встречаются в разговоре как синоним /24, но настраивать современные сети по классам не нужно: маска или префикс задаются явно и могут быть любыми. Если видите «класс C» в старой документации — читайте это как приблизительный синоним /24.
IPv6: зачем он нужен и как записывается
Свободные IPv4-адреса закончились: пул IANA был исчерпан еще в 2011 году, региональные регистраторы раздали остатки позже. Ответ на это — IPv6: адрес длиной 128 бит, что дает 2 в степени 128 комбинаций — запас, несопоставимый с IPv4.
IPv6 записывается как восемь групп по четыре шестнадцатеричные цифры через двоеточие. Разрешены сокращения: ведущие нули в группе отбрасываются, а одна цепочка нулевых групп заменяется на :: (не более одного раза в адресе).
import ipaddress
v6 = ipaddress.ip_address("2001:0db8:0000:0000:0000:0000:0000:0001")
print("Сжатая форма: ", v6.compressed)
print("Полная форма: ", v6.exploded)
Вывод:
Сжатая форма: 2001:db8::1
Полная форма: 2001:0db8:0000:0000:0000:0000:0000:0001
Сравнение двух версий кратко:
| Признак | IPv4 | IPv6 |
|---|---|---|
| Длина адреса | 32 бита | 128 бит |
| Запись | 4 октета, десятичные | 8 групп, шестнадцатеричные |
| Пример | 192.168.1.1 | 2001:db8::1 |
| Разделитель | точка | двоеточие |
| NAT | часто обязателен | как правило не нужен |
IPv4 и IPv6 работают параллельно (dual stack): устройство может иметь адреса обеих версий. Полностью отказаться от IPv4 пока нельзя, потому что часть ресурсов доступна только по нему.
Выводы
- IP-адрес всегда состоит из двух частей: номера сети и номера хоста; где проходит граница, определяет маска, а не число октетов.
- Маска подсети и префикс CIDR (
/24) — это одна и та же информация в разной записи; два адреса в одной сети, если их номера сети после наложения маски совпадают. - Приватные диапазоны (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) не видны из интернета; выход наружу дает NAT через один публичный адрес.
- Классовая адресация устарела с 1993 года; современные сети описываются префиксом.
- IPv6 (128 бит) решает проблему нехватки IPv4-адресов и постепенно вытесняет его, работая параллельно.
Где применяется / связь с практикой
Расчет подсетей, планирование адресного пространства, настройка NAT и переход на IPv6 — повседневные задачи сетевого инженера и системного администратора. Ошибка в маске приводит к тому, что устройства «не видят» друг друга или не выходят в интернет, поэтому умение вручную посчитать границы подсети ценится на собеседованиях.
Освойте тему на практике
Системно эти темы разбирают на курсе Сетевой инженер: от адресации и маршрутизации до диагностики. Попробовать формат и глубину занятий можно на бесплатных открытых уроках Otus — там разбирают реальные сетевые задачи и отвечают на вопросы.
FAQ
Может ли у одного устройства быть несколько IP-адресов?
Да. У каждого сетевого интерфейса свой адрес, а на одном интерфейсе можно настроить несколько адресов; плюс устройство обычно имеет и IPv4, и IPv6.
В чем разница между статическим и динамическим IP-адресом?
Статический назначается вручную и не меняется. Динамический выдает сервер DHCP на время (аренда), и при переподключении он может смениться.
Почему в сети /24 доступно 254 адреса, а не 256?
Два адреса зарезервированы: младший — это адрес самой сети, старший — широковещательный. Под устройства остаются оставшиеся 254.



