IP и маршрутизация
Предпосылки: Ethernet и коммутация (MAC-адрес, кадр, коммутатор).
← Ethernet и коммутация | DHCP →
Коммутатор связывает устройства внутри одной сети, используя MAC-адреса. Но MAC — это серийный номер, прошитый на заводе. По нему невозможно определить, в какой сети устройство находится. Коммутатор не может хранить адреса миллиардов устройств в мире. Нужна адресация, которая отражает структуру сети и позволяет иерархически искать путь к получателю.
IP-адрес: адрес, отражающий местоположение
IP (Internet Protocol — межсетевой протокол, от “inter” — между, “net” — сеть) решает именно эту задачу. IP-адрес версии 4 выглядит так: 192.168.1.25 — четыре числа от 0 до 255, разделённые точками. Каждое число — один байт. Итого 4 байта = 32 бита.
Ключевое отличие от MAC: MAC-адрес прошит в железо и не меняется, IP-адрес назначается и может меняться в зависимости от того, к какой сети подключено устройство. IP-адрес отражает, где устройство находится в структуре сетей, а не что это за устройство.
Сетевая и хостовая части
IP-адрес состоит из двух частей. Сетевая часть (network part) идентифицирует сеть. Хостовая часть (host part) идентифицирует устройство внутри этой сети. Хост (host — “узел”) — любое устройство с IP-адресом.
Для адреса 192.168.1.25 с маской /24: 192.168.1 — сетевая часть, 25 — хостовая.
Маска подсети
Маска подсети (subnet mask) определяет границу между сетевой и хостовой частями. Формат: 255.255.255.0 или /24. В битах 255.255.255.0 выглядит как 11111111.11111111.11111111.00000000 — где единицы, там сетевая часть, где нули — хостовая. Запись /24 означает “первые 24 бита — сетевая часть”.
Маска позволяет быстро определить, находится ли другой адрес в той же сети:
192.168.1.25/24 --> 192.168.1.100 Сеть совпадает: 192.168.1.x -- отправить напрямую
192.168.1.25/24 --> 192.168.2.50 Сеть не совпадает: 192.168.1.x vs 192.168.2.x -- нужен роутер
Роутер: мост между сетями
Роутер (router, от “route” — маршрут) — устройство, соединяющее разные сети. Он подключён к нескольким сетям одновременно: у него несколько сетевых интерфейсов, каждый с IP-адресом в своей сети. Например: интерфейс 1 — 192.168.1.1 (сеть A), интерфейс 2 — 192.168.2.1 (сеть B), интерфейс 3 — 10.0.0.1 (сеть C, интернет).
Когда роутер получает пакет, он смотрит на IP-адрес получателя и по таблице маршрутизации (routing table) решает, в какой интерфейс отправить дальше.
Коммутатор работает с MAC-адресами внутри одной сети. Роутер работает с IP-адресами между сетями.
Пакет
На уровне IP данные упаковываются в пакеты — структуру с IP-заголовком:
+-------------+------------+-------------+---------------+
| Заголовок | IP-адрес | IP-адрес | Данные |
| (версия, | отправителя| получателя | (payload) |
| TTL, etc.) | (4 байта) | (4 байта) | |
+-------------+------------+-------------+---------------+
Инкапсуляция: два уровня адресации
IP-пакет помещается внутрь Ethernet-кадра как payload — это инкапсуляция (encapsulation):
Ethernet-кадр:
+-------------+-------------+-------------------------------+---------+
| MAC-адрес | MAC-адрес | IP-пакет | CRC |
| получателя | отправителя | (целиком, как данные кадра) | |
+-------------+-------------+-------------------------------+---------+
Два уровня адресов решают разные задачи. IP-адрес — куда данные должны попасть в конечном счёте. MAC-адрес — какому устройству передать прямо сейчас (следующий хоп).
Шлюз по умолчанию и ARP
Шлюз по умолчанию (default gateway) — IP-адрес роутера, которому отправляется всё, что не предназначено для локальной сети. “Gateway” — “ворота” из локальной сети во внешний мир.
Базовые сетевые настройки любого устройства: IP-адрес (например, 192.168.1.25), маска подсети (255.255.255.0) и шлюз по умолчанию (192.168.1.1).
Но чтобы отправить кадр роутеру, нужно знать его MAC-адрес. IP-адрес шлюза известен, а MAC — нет. Эту задачу решает ARP (Address Resolution Protocol — протокол разрешения адресов). Компьютер отправляет широковещательный кадр на MAC FF:FF:FF:FF:FF:FF (все устройства в сети получат) с вопросом: “У кого IP 192.168.1.1? Ответьте свой MAC”. Роутер отвечает своим MAC-адресом. Результат кешируется в ARP-таблице.
Путь пакета через интернет
Компьютер 192.168.1.25 отправляет данные серверу 142.250.74.46 (Google). Маска /24 говорит, что 142.250.74.46 — в другой сети, значит пакет идёт на шлюз по умолчанию.
Формируется IP-пакет: IP отправителя 192.168.1.25, IP получателя 142.250.74.46. Через ARP определяется MAC роутера. Создаётся Ethernet-кадр: MAC отправителя — свой, MAC получателя — роутера, внутри — IP-пакет.
Роутер принимает кадр, извлекает IP-пакет, смотрит в таблицу маршрутизации, определяет следующий хоп и создаёт новый кадр с новыми MAC-адресами, но тем же IP-пакетом внутри. Цепочка из 10–20 роутеров повторяет этот процесс, пока последний роутер не доставит кадр серверу.
Ключевое наблюдение: IP-адреса не меняются на протяжении всего пути. MAC-адреса меняются на каждом хопе.
TTL: защита от петель
При неправильной маршрутизации пакет может ходить по кругу бесконечно. TTL (Time To Live) — счётчик переходов, несмотря на название “время жизни”. При создании пакета TTL устанавливается в 64 или 128. Каждый роутер уменьшает TTL на 1. Когда TTL достигает 0, пакет уничтожается.
IP решает адресацию и маршрутизацию между сетями. Но IP-адрес идентифицирует машину, а на ней работает множество приложений — браузер, почта, мессенджер. Как понять, какому приложению предназначены данные? Эту задачу решает транспортный уровень (UDP и TCP).
← Ethernet и коммутация | DHCP →