$ sudo teach IT
Модуль 3

IP — адреса и доставка между сетями

Протокол, который дал интернету вторую половину названия TCP/IP. Его задача — довести пакет до нужного устройства на другом конце планеты.

Вы узнаете
  • как устроены адреса IPv4 и IPv6 и что такое маска;
  • как пакет находит дорогу и зачем нужен NAT;
  • что такое ICMP и как работают ping и traceroute.

3.1Что делает IP — и чего не обещает

IP (Internet Protocol) решает две задачи: даёт каждому устройству адрес и определяет, как пакет передаётся от сети к сети, пока не дойдёт до получателя. Устройства, которые пересылают пакеты между сетями, называются маршрутизаторами (роутерами).

При этом IP работает по принципу «сделаю, что смогу» (best effort) и ничего не гарантирует:

  • пакет может потеряться — например, если маршрутизатор перегружен;
  • пакеты могут прийти не в том порядке, в каком были отправлены;
  • пакет может прийти дважды или с опозданием.

Это не недостаток, а осознанное решение: сеть остаётся простой и быстрой, а надёжность при необходимости добавляет уровень выше — протокол TCP.

Аналогия: обычная почтовая открытка

Вы бросаете открытку в ящик и надеетесь, что она дойдёт. Уведомления о вручении нет, и если вы отправили десять открыток, прийти они могут в любом порядке. Обычно всё доходит — но гарантий никто не давал.

3.2Адрес IPv4, маска и особые диапазоны

Адрес IPv4 — это 32 бита, которые записывают четырьмя числами от 0 до 255 через точку:

192.168.1.25. Всего таких адресов около 4,3 миллиарда — меньше, чем устройств в мире, и к этой проблеме мы ещё вернёмся.

Адрес состоит из двух частей: номера сети и номера устройства в ней. Где проходит граница, показывает маска. Чаще её записывают коротко, через косую черту (запись CIDR): 192.168.1.25/24 означает, что первые 24 бита — это сеть, а оставшиеся 8 — устройство.

Запись Маска Адресов в сети Где встречается
/8 255.0.0.0 около 16,7 млн Очень крупные сети
/16 255.255.0.0 65 536 Сеть большой организации
/24 255.255.255.0 256 Типичная домашняя или офисная сеть
/32 255.255.255.255 1 Один конкретный адрес

По маске устройство решает простой вопрос: получатель в моей сети (тогда отправляю ему напрямую) или в чужой (тогда отдаю роутеру).

Адреса с особым смыслом

Диапазон Назначение
10.0.0.0/8 Частные адреса. Используются внутри домашних и рабочих сетей. В
172.16.0.0/12 интернете не маршрутизируются, поэтому одни и те же адреса есть в
192.168.0.0/16 миллионах сетей одновременно.
127.0.0.0/8 Локальная петля (localhost). Адрес 127.0.0.1 всегда означает «этот самый компьютер».
169.254.0.0/16 Автоматический адрес. Устройство назначает его себе само, если не смогло получить настройки от сети. Обычно это признак неполадки.
100.64.0.0/10 Адреса операторского NAT. Провайдеры выдают их абонентам, когда на всех не хватает публичных адресов.

3.3Что лежит в заголовке IPv4

Заголовок IPv4 занимает от 20 байт. Знать его наизусть не нужно, но несколько полей объясняют почти всё поведение протокола:

Поле Зачем нужно
Адрес отправителя Откуда и куда идёт пакет. По адресу получателя маршрутизаторы выбирают
Адрес получателя направление, по адресу отправителя возвращается ответ.
TTL (время жизни) Счётчик, который каждый маршрутизатор уменьшает на единицу. Дошёл до нуля — пакет уничтожается. Это защита от бесконечного блуждания по кругу.
Протокол Что лежит внутри: 6 — TCP, 17 — UDP, 1 — ICMP. По этому числу получатель понимает, кому передать содержимое.
Поле Зачем нужно
Общая длина Размер пакета вместе с заголовком, максимум 65 535 байт.
Идентификатор, флаги, Позволяют разрезать слишком большой пакет на фрагменты и собрать
смещение фрагмента обратно. Флаг DF («не фрагментировать») запрещает разрезание.
Контрольная сумма Проверка, что сам заголовок не исказился в пути. Данные она не защищает.
DSCP / ECN Пометки приоритета трафика и сигнал о перегрузке сети.

3.4Маршрутизация: как пакет находит дорогу

Ни один маршрутизатор не знает весь путь целиком. Каждый знает только одно: в какую сторону передать пакет дальше. Для этого у него есть таблица маршрутов — список вида «пакеты для такой- то сети отправляй туда-то». Если подходящей строки нет, пакет уходит на маршрут по умолчанию.

Схема: нажмите на шаг — что в нём происходит
Ваше устройство
192.168.1.25
Домашний роутер
шлюз по умолчанию
Провайдер
несколько узлов
Магистрали
другие операторы
Сервер
203.0.113.10

Каждая передача от одного маршрутизатора к другому называется хопом (hop — «прыжок»). До сервера в соседнем городе обычно 5–10 хопов, до другого континента — 15–25.

Откуда маршрутизаторы знают, где какая сеть? Крупные сети — провайдеры, дата-центры, большие компании — называются автономными системами. Они сообщают друг другу, какие адреса через них доступны, по протоколу BGP. Из этих объявлений и складывается карта всего интернета.

Аналогия: дорожные указатели

На перекрёстке нет карты всей страны — только указатель «Казань→ направо». Вы едете от

перекрёстка к перекрёстку, и на каждом вам подсказывают лишь следующий поворот. Так же и пакет: его путь никто не планирует заранее, он складывается из локальных решений.

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

Адресов IPv4 на всех не хватает, поэтому дома у вас один публичный адрес от провайдера, а у всех устройств —частные (вида 192.168.x.x). Подменой занимается роутер, и называется это NAT (Network Address Translation).

1.Ноутбук отправляет пакет с частного адреса 192.168.1.25, порт 51000.

2.Роутер заменяет адрес отправителя на свой публичный, например 198.51.100.7, порт 40001, и

запоминает это соответствие в таблице.

3.Сервер отвечает на 198.51.100.7:40001.

4.Роутер находит запись в таблице и пересылает ответ ноутбуку.

Два следствия NAT

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

3.6IPv6: адресов хватит всем

Свободные адреса IPv4 закончились ещё в 2010-х. Настоящее решение проблемы —IPv6 с адресами

длиной 128 бит. Их настолько много, что уникальный адрес можно выдать каждому устройству на планете, и NAT становится не нужен.

Адрес IPv6 записывают восемью группами шестнадцатеричных цифр через двоеточие:

2001:0db8:0000:0000:0000:0000:0000:0001. Ведущие нули в группе можно опускать, а одну последовательность нулевых групп — заменять на::, так что тот же адрес выглядит как

2001:db8::1.

Что сравниваем IPv4 IPv6
Длина адреса 32 бита, около 4,3 млрд адресов 128 бит, практически неисчерпаемо
Заголовок От 20 байт, переменной длины Ровно 40 байт, проще для обработки
Настройка адреса Вручную или через DHCP Устройство может составить адрес само (SLAAC) или получить через DHCPv6
Фрагментация Может делать любой Только сам отправитель маршрутизатор
Поиск соседей ARP NDP (работает поверх ICMPv6)
Локальная петля 127.0.0.1 ::1

IPv4 и IPv6 несовместимы напрямую, поэтому сейчас они работают параллельно: это называют двойным стеком (dual stack). У устройства есть оба адреса, и оно выбирает тот протокол, по которому сайт отвечает быстрее.

3.7ICMP: служба сообщений о неполадках

Раз IP ничего не гарантирует, нужен способ хотя бы сообщить отправителю, что что-то пошло не так. Для этого есть ICMP (Internet Control Message Protocol) — служебный протокол, который работает рядом с IP.

Сообщение Что означает
Эхо-запрос и эхо-ответ «Ты на связи?» — «Да». На этой паре построена команда ping.
Адресат недостижим Пакет некуда доставить: нет маршрута, закрыт порт или сеть запрещает доступ.
Время жизни истекло TTL дошёл до нуля, и пакет уничтожен.
Требуется фрагментация Пакет слишком велик для следующего участка, а разрезать его запрещено. По этому сообщению отправитель подбирает подходящий размер.

Команда ping измеряет, отвечает ли узел и сколько миллисекунд идёт ответ. Команда traceroute (в Windows — tracert) показывает весь путь: она отправляет пакеты с TTL 1, 2, 3 и так далее, и каждый следующий маршрутизатор, уничтожив пакет, выдаёт себя сообщением «время жизни истекло».

Вывод модуля
  • IP отвечает только за адреса и за путь от сети к сети. Он не знает о программах, не следит за порядком и не исправляет потери. Всё это — работа следующего уровня.
На следующий урок
IP-адреса и доставка между сетями — Протоколы интернета - простыми словами | $ sudo teach IT