КАК УСТРОЕНО ВСЁ - статья 3.4

IP-адреса и маршрутизация: у каждого свой адрес

IPv4, IPv6, почему адреса закончились - и как пакет находит получателя среди миллиарда устройств

В предыдущей статье мы разобрались, как данные режутся на пакеты и как каждый пакет самостоятельно путешествует по сети. Но мы намеренно обходили один вопрос: откуда пакет знает, куда лететь? Как он вообще находит нужный компьютер среди миллиарда других - в другом городе, стране, на другом конце планеты? Ответ - в системе адресации. У каждого устройства в интернете есть адрес. Этот адрес называется IP-адрес.

📮 Что такое IP-адрес

IP расшифровывается как Internet Protocol - протокол интернета. Это те самые правила, о которых мы говорили в статье 3.1: договорённость о том, как именно упаковать и адресовать пакет, чтобы его понял любой компьютер в любой точке мира.

IP-адрес - это уникальный числовой идентификатор устройства в сети. Представьте почтовый адрес: улица, дом, квартира. IP-адрес работает по тому же принципу - он описывает, где именно в глобальной сети находится устройство, чтобы пакеты могли туда добраться.

Существует две версии протокола: старая - IPv4 - и новая, пришедшая ей на смену - IPv6. Разница между ними принципиальная, и понять её легко, если начать с арифметики.

🔢 IPv4: четыре числа, четыре миллиарда адресов

IPv4-адрес - это 32 бита. Записывается он в виде четырёх чисел от 0 до 255, разделённых точками: например, 192.168.1.1 или 93.184.216.34. Каждое число - это один байт (8 бит), четыре байта итого.
💡 Откуда берётся 255: Один байт - это 8 бит. Восемь бит могут хранить числа от 0 (все нули: 00000000) до 255 (все единицы: 11111111). Поэтому каждая из четырёх частей адреса находится в диапазоне от 0 до 255. Итого 32 бита на весь адрес.

32 бита дают 2³² возможных комбинаций. Это примерно 4,3 миллиарда уникальных адресов. В 1981 году, когда стандарт IPv4 был официально принят, казалось, что этого хватит с запасом - компьютеры тогда были редкостью и стоили как автомобиль.

Проблема обозначилась в 1990-х, когда интернет вышел за пределы университетов и военных сетей. Адреса начали заканчиваться быстрее, чем ожидалось. К 2011 году последние свободные блоки IPv4-адресов были распределены региональными регуляторами. Технически адреса IPv4 закончились.

Почему именно тогда, а не раньше

Первоначальная система распределения IPv4-адресов была расточительной. Крупные организации получали целые блоки по 16 миллионов адресов - так называемые сети класса A. Например, Министерство обороны США до сих пор держит огромные блоки адресов, выданных ещё в 1980-х, большая часть которых годами не использовалась. MIT получил блок в 16 миллионов адресов - столько же, сколько всему Китаю выделили на первых порах.
Класс сети Количество адресов Кому давали Пример
Класс A 16 777 216 Крупнейшие организации MIT, ARIN, Министерство обороны США
Класс B 65 536 Крупные компании и университеты Корпоративные сети 1990-х
Класс C 256 Небольшие организации Типичный офис
Расточительность исправили, введя бесклассовую адресацию (CIDR) в 1993 году - блоки адресов стали нарезаться точно под нужный размер. Но это лишь отсрочило проблему, а не решило её.

🌐 IPv6: 128 бит и адресов хватит всем

Решение появилось ещё в 1998 году - IPv6, протокол с 128-битными адресами. Записывается он иначе: восемь групп по четыре шестнадцатеричных символа, разделённых двоеточиями. Например: 2001:0db8:85a3:0000:0000:8a2e:0370:7334.

128 бит дают 2¹²⁸ возможных адресов. Это число настолько велико, что привычные единицы для него не подходят. Приблизительно 340 ундециллионов - или 340 с 36 нулями. Для сравнения: атомов на Земле, по оценкам физиков, около 10⁵⁰. Адресов IPv6 хватит, чтобы присвоить уникальный номер каждому квадратному миллиметру поверхности нескольких триллионов планет размером с Землю.

📌 Почему переход на IPv6 идёт так медленно: Технически IPv6 готов с 1998 года. Но IPv4 и IPv6 несовместимы напрямую - пакет IPv4 и пакет IPv6 не понимают друг друга. Это значит, что интернет-провайдеры, маршрутизаторы и серверы должны поддерживать оба протокола одновременно. Крупные платформы (Google, Facebook) перешли на IPv6 ещё в 2012 году. По состоянию на 2025 год около 45-50% мирового трафика идёт по IPv6 - число растёт, но IPv4 никуда не делся.
Есть и ещё один механизм, который спас IPv4 от окончательного краха и по сей день держит его на плаву. Это NAT - и о нём чуть ниже.

🏠 Подсети и маски: как адреса делятся на части

IP-адрес - это не просто номер устройства. Он несёт в себе два разных адреса сразу: адрес сети и адрес конкретного устройства внутри этой сети. Это важно, потому что маршрутизаторы ориентируются именно по адресу сети - им не нужно знать каждое устройство в мире, достаточно знать, в каком направлении находится нужная сеть.

Чтобы понять, где заканчивается часть «сеть» и начинается часть «устройство», используется маска подсети. Она выглядит как ещё один IP-адрес, в котором сначала идут единицы, потом нули: например, 255.255.255.0. Единицы закрывают часть адреса, которая обозначает сеть; нули - часть, которая обозначает устройство.

Короткая запись той же маски - /24, потому что единиц в ней 24 штуки. Вы наверняка видели такую запись в настройках роутера или на сайтах о сетях: 192.168.1.0/24 означает «сеть, в которой первые 24 бита - это адрес сети, а последние 8 бит - адрес устройства». Устройств в такой сети может быть 254 (от 192.168.1.1 до 192.168.1.254).

Запись Маска Устройств в сети Типичное применение
/8 255.0.0.0 ~16 миллионов Огромные организации (устаревший класс A)
/16 255.255.0.0 ~65 тысяч Крупные корпоративные сети
/24 255.255.255.0 254 Домашняя или офисная сеть
/30 255.255.255.252 2 Соединение двух маршрутизаторов

🗺️ Как пакет находит получателя

Теперь к главному вопросу: как именно пакет с адресом назначения 93.184.216.34 добирается от вашего компьютера до сервера на другом континенте? Кто ему показывает дорогу?

Этим занимаются маршрутизаторы - специализированные устройства, единственная задача которых - принять пакет и решить, куда его передать дальше. У каждого маршрутизатора есть таблица маршрутизации - список правил вида «для пакетов, адресованных в такую-то сеть, отправляй их вот этому соседнему маршрутизатору».

💡 Аналогия с почтой: Представьте, что вы опустили письмо в ящик в Барановичах. Почтальон не везёт его сразу в Токио - он везёт его на местный сортировочный пункт. Там смотрят на адрес и говорят: «Япония - это в Минск, оттуда дальше». В Минске: «Япония - это в Москву». В Москве: «Япония - это на международный рейс». Никто из них не знает полный маршрут - каждый знает только следующий шаг.
Именно так работает маршрутизация в интернете. Маршрутизатор смотрит на IP-адрес назначения, находит в своей таблице наиболее подходящую запись и отправляет пакет дальше - к следующему маршрутизатору. Этот процесс повторяется на каждом узле, пока пакет не дойдёт до получателя. Обычно это занимает от 10 до 50 промежуточных узлов - шагов, которые в сетевой терминологии называются хопами (от английского hop - прыжок).

Как таблицы маршрутизации обновляются: BGP и OSPF

Интернет постоянно меняется: провайдеры подключают новые сети, каналы между узлами падают и поднимаются, маршруты становятся быстрее или медленнее. Маршрутизаторы не могут хранить статичные таблицы - они обмениваются информацией между собой по специальным протоколам.

Внутри одной организации или провайдера используется OSPF (Open Shortest Path First) - протокол, при котором каждый маршрутизатор знает полную карту своего «района» и считает кратчайшие пути самостоятельно, как навигатор.

Между разными организациями и странами работает BGP (Border Gateway Protocol) - «протокол пограничных маршрутизаторов». Именно BGP связывает между собой тысячи независимых сетей по всему миру. Каждая такая сеть называется автономной системой (AS) и имеет свой номер. Ваш провайдер - это одна автономная система. Google - другая. Крупный дата-центр в Амстердаме - третья. BGP - это язык, на котором они договариваются: «через меня можно добраться вот до таких-то адресов».

📌 Почему BGP - это ахиллесова пята интернета: BGP работает на доверии: маршрутизатор объявляет о маршрутах, и соседи ему верят. Это приводит к редким, но громким авариям. В 2010 году China Telecom случайно объявила, что через неё можно добраться до 37 000 сетей по всему миру - включая американские военные и правительственные. Около 15 минут часть мирового трафика шла через Китай. В 2021 году подобная ошибка у провайдера Vodafone привела к недоступности сайтов по всему миру на несколько часов. BGP-hijacking - захват маршрутов - одна из немногих атак, способных нарушить работу глобального интернета.

🏘️ NAT: один адрес на всю квартиру

Вернёмся к дефициту IPv4-адресов. Как миллиарды устройств существуют в интернете, если адресов IPv4 всего 4,3 миллиарда - и большинство уже распределено? Ответ: большинство устройств не имеют собственного публичного IP-адреса. Вместо этого они используют NAT - Network Address Translation, трансляция сетевых адресов.

Идея проста. Ваш домашний роутер получает от провайдера один публичный IP-адрес - скажем, 178.124.5.99. Это его «видимое лицо» в интернете. Внутри вашей домашней сети все устройства - телефон, ноутбук, телевизор, умная лампочка - получают приватные адреса из специальных диапазонов, зарезервированных именно для таких внутренних сетей.

Диапазон приватных адресов Запись CIDR Типичное применение
10.0.0.0 - 10.255.255.255 10.0.0.0/8 Крупные корпоративные сети
172.16.0.0 - 172.31.255.255 172.16.0.0/12 Средние корпоративные сети
192.168.0.0 - 192.168.255.255 192.168.0.0/16 Домашние и небольшие офисные сети
Именно поэтому почти у каждого дома роутер раздаёт адреса вида 192.168.1.x. Эти адреса - «серые», приватные: они не маршрутизируются в глобальном интернете. Если ваш ноутбук с адресом 192.168.1.5 отправит пакет напрямую в интернет, ни один маршрутизатор в мире не будет знать, как ответить обратно: адрес 192.168.1.5 существует в тысячах домашних сетей одновременно.

Как работает NAT изнутри

Роутер с NAT выполняет роль переводчика. Когда ваш ноутбук (192.168.1.5) обращается к серверу Google (142.250.74.46), происходит следующее:

1. Ноутбук отправляет пакет с адресом отправителя 192.168.1.5 и произвольным портом, например 54321. 2. Роутер перехватывает этот пакет и заменяет адрес отправителя на свой публичный адрес: 178.124.5.99. Порт тоже может быть изменён. Роутер запоминает в своей таблице: «порт 54321 у адреса 192.168.1.5 - это порт 49876 у моего публичного адреса». 3. Пакет уходит в интернет уже от имени роутера. 4. Сервер Google отвечает - на публичный адрес роутера, порт 49876. 5. Роутер смотрит в свою таблицу: «порт 49876 - это запрос от 192.168.1.5:54321». Заменяет адрес назначения обратно и доставляет ответ ноутбуку.
💡 Порты - что это такое: IP-адрес определяет устройство. Порт определяет конкретную программу или соединение внутри устройства. Это как номер квартиры в доме: дом - IP-адрес, квартира - порт. Порты - числа от 0 до 65 535. Веб-сервер обычно «слушает» порт 80 (HTTP) или 443 (HTTPS). Когда вы открываете браузер и ВКонтакте одновременно - для каждого соединения назначается свой исходящий порт, и роутер их не путает.
NAT позволил продлить жизнь IPv4 на десятилетия: за одним публичным адресом могут скрываться сотни устройств. У провайдера может даже применяться двойной NAT - «серый» адрес получает не только ваш ноутбук, но и сам ваш роутер. Это называется CG-NAT (Carrier-Grade NAT).

Ограничения NAT

NAT решил проблему нехватки адресов, но создал новые. Устройство за NAT может само инициировать соединение, но не может принять входящее соединение снаружи - роутер просто не знает, кому его адресовать. Именно поэтому сложнее организовать:

- серверы дома (игровой сервер, веб-сервер, камера наблюдения, доступная снаружи); - торрент и P2P-соединения, где устройства должны «найти» друг друга напрямую; - VoIP и видеозвонки (хотя здесь помогают специальные техники - STUN и ICE).

Для «пробивания» NAT придуманы разные обходные пути - проброс портов, UPnP, hole punching - но все они выглядят как заплатки на системе, изначально не предназначенной для входящих соединений. IPv6 решает эту проблему радикально: у каждого устройства снова есть свой глобально уникальный адрес, и NAT попросту не нужен.

🔍 Специальные адреса: не всё так просто

Не каждый IPv4-адрес можно использовать для обычных устройств. Часть диапазонов зарезервирована для специальных целей.
Адрес / диапазон Назначение
127.0.0.1 Loopback - «сам себе». Пакет не выходит в сеть, возвращается обратно. Используется для тестирования.
0.0.0.0 «Этот хост» при настройке сети. В таблицах маршрутизации запись 0.0.0.0/0 означает маршрут по умолчанию: «отправь сюда всё, для чего нет точного пути» - обычно это адрес роутера или провайдера.
255.255.255.255 Широковещательный адрес - пакет доставляется всем устройствам в локальной сети.
169.254.x.x Link-local - устройство назначило себе адрес само, потому что не нашло DHCP-сервера. Обычно означает проблему с сетью.
192.168.x.x, 10.x.x.x, 172.16-31.x.x Приватные адреса - только для внутренних сетей, не маршрутизируются в интернете.
Если ваш компьютер показывает адрес 169.254.x.x - это почти наверняка значит, что что-то не так с роутером или кабелем: устройство не получило нормальный адрес по DHCP и назначило себе «аварийный».

🔄 DHCP: кто раздаёт адреса

Чтобы каждому устройству не пришлось вручную прописывать IP-адрес, придуман DHCP - Dynamic Host Configuration Protocol. Когда ваш телефон подключается к домашней Wi-Fi сети, он отправляет в эфир сообщение: «Привет, я здесь, мне нужен адрес!» Роутер отвечает: «Держи: 192.168.1.7, маска /24, шлюз 192.168.1.1, DNS-сервер 8.8.8.8». Телефон принимает эти настройки и может выходить в сеть.

Адрес выдаётся «в аренду» на определённое время - обычно от нескольких часов до суток. Поэтому при повторном подключении вы можете получить тот же адрес или другой - зависит от настроек и нагрузки на сеть.

🗺️ Полный путь пакета: от нажатия до сервера

Теперь соберём картину целиком. Что происходит, когда вы открываете сайт?
Шаг Что происходит Кто участвует
1 Браузер узнаёт IP-адрес сайта по его доменному имени через DNS DNS-сервер (о нём подробно в статье 3.6)
2 Браузер формирует пакет с IP-адресом назначения и отправляет его ОС Браузер, ОС
3 ОС передаёт пакет сетевому адаптеру; тот отправляет кадр на роутер Сетевой адаптер, физический уровень (статья 3.2)
4 Роутер применяет NAT: подменяет приватный адрес на публичный Домашний роутер
5 Пакет попадает к провайдеру; маршрутизатор провайдера смотрит в таблицу маршрутизации Маршрутизатор ISP
6 Пакет передаётся по цепочке маршрутизаторов через автономные системы (BGP) Магистральные маршрутизаторы
7 Пакет достигает сервера назначения; тот отправляет ответ обратно по тому же принципу Сервер назначения
8 Роутер получает ответ, смотрит в NAT-таблицу, доставляет вашему устройству Домашний роутер
Всё это происходит за миллисекунды. Количество хопов от вашего компьютера до типичного европейского сервера - от 10 до 20. Если хочется увидеть это в действии - откройте терминал и введите tracert google.com (в Windows) или traceroute google.com (в Linux/macOS). Вы увидите каждый узел на пути пакета и время до него.
💡 TTL: почему пакеты не блуждают вечно. В заголовке каждого IP-пакета есть поле TTL (Time to Live) - обычно от 64 до 128. Каждый маршрутизатор уменьшает его на единицу. Когда TTL становится равен нулю - пакет уничтожается, а отправителю уходит сообщение об ошибке. Это защита от петель маршрутизации: если таблицы маршрутов на двух узлах вдруг начнут гонять пакет по кругу, TTL не даст ему блуждать вечно и засорять сеть. Именно на этом механизме работает traceroute - он отправляет пакеты с TTL=1, 2, 3... и смотрит, какой узел каждый раз отвечает об уничтожении.

IPv4 и IPv6: сосуществование двух эпох

Сегодня интернет работает на двух протоколах одновременно. Большинство устройств и серверов поддерживают оба - это называется dual stack. Браузер пробует сначала установить соединение по IPv6, и если не получается - переключается на IPv4.
IPv4 IPv6
Длина адреса 32 бита 128 бит
Количество адресов ~4,3 миллиарда ~340 ундециллионов
Запись 93.184.216.34 2606:2800:220:1:248:1893:25c8:1946
NAT Необходим из-за нехватки адресов Не нужен - у каждого устройства свой адрес
Приватные адреса 10.x.x.x, 172.16-31.x.x, 192.168.x.x fc00::/7 (ULA - уникальные локальные адреса)
Статус Адреса исчерпаны; держится за счёт NAT и повторного использования Активно развёртывается; ~50% трафика в 2025 году

Итог: адрес - это не просто номер

IP-адрес - это одновременно и «имя» устройства в сети, и его «координаты»: он несёт информацию о том, в какой части сети устройство находится. Маршрутизаторы используют эту информацию, чтобы передавать пакеты шаг за шагом - не зная полного маршрута, но всегда зная следующий узел.

Дефицит IPv4-адресов стал одной из главных инженерных проблем интернета 1990-х. NAT решил её хирургически: один публичный адрес на множество устройств. Это продлило жизнь IPv4 на тридцать лет, но привнесло ограничения и сложности. IPv6 убирает и NAT, и дефицит адресов - но переход на него растянулся на десятилетия, потому что сломать совместимость в работающем интернете крайне трудно.

Следующий вопрос логично вытекает из этой картины: мы знаем, что пакеты доходят до нужного адреса. Но как именно гарантируется, что они дойдут все и в правильном порядке? Или, наоборот - когда точная доставка не нужна и важнее скорость? Это тема следующей статьи: TCP и UDP - надёжность против скорости.


ANY.BY

Нужна помощь с техникой? Привозите - диагностика при заказе ремонта бесплатна. Контакты и запись.

Подвигать границу сети по битам адреса Интерактив: маска подсети на 32 битах, число устройств и проверка, кто из соседей остался в той же сети. Открыть демо →