Протокол IPv4
Протокол IPv4 (Internet Protocol version 4) — это сетевой протокол четвёртой версии, являющийся основным протоколом межсетевого взаимодействия (internetwork layer) в стеке TCP/IP. Он обеспечивает адресацию и маршрутизацию пакетов данных в компьютерных сетях, включая глобальную сеть Интернет. IPv4 был разработан в начале 1980-х годов и до сих пор остаётся наиболее широко используемым протоколом сетевого уровня, несмотря на постепенное внедрение его преемника — IPv6.
История
Разработка протокола IPv4 началась в рамках проекта ARPANET, финансируемого Министерством обороны США. Первая спецификация протокола была опубликована в 1981 году в документе RFC 791 (Request for Comments), авторами которого стали Джон Постел (Jon Postel), Винтон Серф (Vint Cerf) и другие инженеры. Этот документ определил основные принципы работы протокола, включая формат заголовка, адресацию и фрагментацию пакетов.
В 1983 году протокол IPv4 был официально внедрён в ARPANET, заменив более ранний протокол NCP (Network Control Protocol). Это событие считается началом функционирования современного Интернета. В последующие десятилетия протокол многократно дополнялся и уточнялся в серии RFC, но его базовая архитектура оставалась неизменной.
К началу 1990-х годов стало очевидно, что 32-битное адресное пространство IPv4 (около 4,3 миллиарда адресов) недостаточно для растущего числа устройств, подключаемых к сети. В 1998 году был разработан протокол IPv6 с 128-битной адресацией, однако его внедрение идёт медленно. По состоянию на 2024 год IPv4 по-прежнему обслуживает более 70 % мирового интернет-трафика.
Структура и формат пакета
Пакет IPv4 состоит из заголовка (header) и поля данных (payload). Заголовок имеет переменную длину (от 20 до 60 байт) и включает следующие поля:
- Version (4 бита) — версия протокола (для IPv4 значение равно 4).
- IHL (Internet Header Length, 4 бита) — длина заголовка в 32-битных словах. Минимальное значение — 5 (20 байт), максимальное — 15 (60 байт).
- Type of Service (ToS, 8 бит) — поле для указания приоритета и типа обслуживания пакета (например, низкая задержка или высокая пропускная способность). В современных реализациях часто используется для дифференцированного обслуживания (DiffServ).
- Total Length (16 бит) — общая длина пакета (заголовок + данные) в байтах. Максимальное значение — 65 535 байт.
- Identification (16 бит) — идентификатор пакета, используемый для сборки фрагментов.
- Flags (3 бита) — флаги управления фрагментацией: бит «Не фрагментировать» (DF) и бит «Больше фрагментов» (MF).
- Fragment Offset (13 бит) — смещение данных фрагмента относительно начала исходного пакета (в 8-байтовых единицах).
- Time to Live (TTL, 8 бит) — время жизни пакета, измеряемое в количестве переходов (hops). Каждый маршрутизатор уменьшает значение на 1; при достижении нуля пакет отбрасывается.
- Protocol (8 бит) — идентификатор протокола транспортного уровня, инкапсулированного в пакете (например, 6 для TCP, 17 для UDP).
- Header Checksum (16 бит) — контрольная сумма заголовка. Проверяется на каждом узле маршрутизации; при обнаружении ошибки пакет уничтожается.
- Source Address (32 бита) — IP-адрес отправителя.
- Destination Address (32 бита) — IP-адрес получателя.
- Options (переменная длина) — необязательные поля для расширения функциональности (например, запись маршрута, временные метки). Используются редко из-за соображений безопасности.
Поле данных может содержать пакет протокола более высокого уровня (TCP, UDP, ICMP и др.) или собственно пользовательские данные. Максимальный размер поля данных — 65 515 байт (с учётом минимального заголовка).
Адресация
IP-адрес IPv4 представляет собой 32-битное число, обычно записываемое в виде четырёх десятичных чисел, разделённых точками (например, 192.168.1.1). Каждое число соответствует одному октету (8 бит) и может принимать значения от 0 до 255.
Классовая адресация
Изначально адресное пространство было разделено на классы:
- Класс A — адреса от 1.0.0.0 до 126.0.0.0. Первый октет определяет сеть, остальные три — узел. Поддерживает до 16 777 214 узлов в одной сети.
- Класс B — адреса от 128.0.0.0 до 191.255.0.0. Первые два октета — сеть, последние два — узел. До 65 534 узлов.
- Класс C — адреса от 192.0.0.0 до 223.255.255.0. Первые три октета — сеть, последний — узел. До 254 узлов.
- Класс D (224.0.0.0–239.255.255.255) — зарезервирован для многоадресной рассылки (multicast).
- Класс E (240.0.0.0–255.255.255.255) — зарезервирован для экспериментальных целей.
Бесклассовая адресация (CIDR)
В 1993 году была внедрена бесклассовая междоменная маршрутизация (CIDR), которая заменила классовую систему. Адрес теперь записывается с указанием префикса сети в виде «IP-адрес/длина префикса» (например, 192.168.1.0/24). Длина префикса (от 0 до 32) определяет количество бит, отведённых под идентификатор сети. Это позволило более гибко распределять адресное пространство и замедлило исчерпание адресов.
Специальные адреса
Некоторые адреса имеют особое назначение:
- 0.0.0.0/8 — адрес текущей сети (используется для обозначения неизвестного адреса).
- 127.0.0.0/8 — loopback-адреса (обычно 127.0.0.1), указывающие на локальный компьютер.
- 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 — частные (private) адреса, используемые в локальных сетях и не маршрутизируемые в Интернете.
- 169.254.0.0/16 — адреса для автоматической конфигурации (APIPA) при отсутствии DHCP-сервера.
- 224.0.0.0/4 — многоадресные адреса.
- 255.255.255.255 — широковещательный адрес (broadcast).
Фрагментация
IPv4 поддерживает фрагментацию пакетов, если размер пакета превышает максимальную единицу передачи (MTU) канального уровня (обычно 1500 байт для Ethernet). Фрагментация может выполняться как на узле-отправителе, так и на промежуточных маршрутизаторах. Каждый фрагмент содержит часть исходных данных и заголовок с теми же идентификационными полями, что и исходный пакет. Сборка фрагментов производится только на узле-получателе. Фрагментация считается нежелательной, так как увеличивает нагрузку на сеть и снижает надёжность (потеря одного фрагмента приводит к потере всего пакета). В современных сетях часто используется механизм Path MTU Discovery (PMTUD) для определения минимального MTU на пути и избежания фрагментации.
Маршрутизация
Маршрутизация пакетов IPv4 осуществляется на основе таблиц маршрутизации, хранящихся в каждом маршрутизаторе. При получении пакета маршрутизатор анализирует адрес назначения и выбирает наиболее подходящий маршрут по принципу наибольшего совпадения префикса (longest prefix match). Для обмена информацией о маршрутах используются протоколы динамической маршрутизации, такие как RIP, OSPF, BGP. Внутри локальных сетей часто применяется статическая маршрутизация.
Исчерпание адресного пространства
К концу 1990-х годов стало очевидно, что адресное пространство IPv4 исчерпается. Несмотря на внедрение CIDR и частных адресов с трансляцией сетевых адресов (NAT), последние блоки адресов были распределены региональными интернет-регистраторами (RIR) в 2011–2019 годах. По состоянию на 2024 год большинство RIR сообщают об исчерпании свободных адресов. Для решения проблемы разработан протокол IPv6, однако его внедрение сдерживается необходимостью модернизации оборудования и программного обеспечения.
Применение
IPv4 используется в подавляющем большинстве компьютерных сетей, включая:
- Глобальная сеть Интернет — основная транспортная инфраструктура.
- Локальные сети (LAN) — в офисах, домах, учебных заведениях.
- Корпоративные сети (WAN) — для связи удалённых офисов.
- Мобильные сети — для передачи данных в стандартах 3G, 4G LTE, 5G (в сочетании с IPv6).
- Системы Интернета вещей (IoT) — многие устройства всё ещё используют IPv4 через NAT.
Критика и ограничения
Основные недостатки IPv4:
- Ограниченное адресное пространство — 32 бита недостаточно для современных потребностей.
- Сложность маршрутизации — таблицы маршрутизации в глобальной сети содержат сотни тысяч записей.
- Отсутствие встроенной безопасности — протокол не предусматривает шифрования или аутентификации (дополнительные протоколы, такие как IPsec, реализуются поверх IPv4).
- Фрагментация — увеличивает нагрузку на маршрутизаторы и снижает производительность.
- Зависимость от NAT — трансляция адресов усложняет прямое соединение между узлами и препятствует работе некоторых приложений (например, одноранговых сетей).
Источники
- RFC 791 — Internet Protocol (1981)
- RFC 1519 — Classless Inter-Domain Routing (CIDR) (1993)
- RFC 1918 — Address Allocation for Private Internets (1996)
- RFC 1122 — Requirements for Internet Hosts (1989)
- Таненбаум Э., Уэзеролл Д. — «Компьютерные сети» (5-е издание, 2012)
- Олифер В. Г., Олифер Н. А. — «Компьютерные сети. Принципы, технологии, протоколы» (5-е издание, 2016)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →