Компьютерные сети
Маршрутизаторы (Router)
При открытии google.com запрос проходит через 10-20 роутеров по всему миру за миллисекунды. Каждый роутер - перекрёсток, который мгновенно решает, куда направить пакет. Как это работает?
- **Traceroute:** Диагностика «где тормозит» сеть
- **BGP hijacking:** Атака через подмену маршрутов (как угнали YouTube в 2008)
- **Отказоустойчивость:** Если роутер падает, трафик автоматически идёт другим путём
Предварительные знания
Что делает роутер
**Роутер (маршрутизатор)** - устройство L3, которое соединяет разные сети и принимает решения о пересылке пакетов на основе IP-адресов. Коммутатор работает внутри сети, роутер - между сетями.
Роутер имеет **несколько интерфейсов**, каждый в своей сети. Пакет приходит на один интерфейс, роутер смотрит destination IP и отправляет через другой интерфейс ближе к цели.
**Ключевое отличие:** коммутатор пересылает фреймы по MAC внутри сети. Роутер пересылает пакеты по IP между сетями. Домашний «роутер» - обычно роутер + коммутатор + Wi-Fi + NAT в одном корпусе.
Какой уровень OSI использует роутер для принятия решений?
Таблица маршрутизации
**Таблица маршрутизации** - база данных роутера, которая связывает сети назначения с интерфейсами или next-hop адресами. Роутер ищет наиболее специфичный маршрут для каждого пакета.
**Longest prefix match:** если пакет подходит под несколько маршрутов, выбирается самый специфичный. 192.168.1.50 подойдёт и под /24 и под /0, но выберется /24 (более длинный префикс).
Маршруты бывают **статические** (настроенные вручную) и **динамические** (изученные через протоколы OSPF, BGP, RIP). В домашней сети обычно достаточно default route.
Пакет для 192.168.1.50. Есть маршруты: 192.168.0.0/16 и 192.168.1.0/24. Какой выберется?
Default Gateway
**Default Gateway** - роутер, которому устройство отправляет пакеты, если не знает маршрута к назначению. Это «выход» из локальной сети. Записывается как маршрут 0.0.0.0/0.
**Нет gateway = нет интернета.** Если DHCP не выдал gateway или он неправильный - устройство сможет общаться только внутри своей сети.
Когда устройство использует default gateway?
Хопы и путь пакета
**Hop** (прыжок) - переход пакета через один роутер. Путь от ПК до сервера может включать 10-20 хопов. На каждом роутер принимает независимое решение о следующем шаге.
**TTL (Time To Live)** - счётчик хопов в IP-заголовке. Каждый роутер уменьшает TTL на 1. Когда TTL = 0, пакет отбрасывается. Это защита от бесконечных петель.
Traceroute использует TTL: отправляет пакеты с TTL=1, 2, 3... Каждый роутер, где TTL истекает, отправляет ICMP "Time Exceeded" - так мы узнаём весь путь.
Пакет всегда идёт одним и тем же маршрутом
Маршрут может меняться в зависимости от нагрузки, отказов, политик
Интернет динамичен. Роутеры обмениваются информацией через BGP/OSPF и перестраивают маршруты. Два последовательных пакета могут пойти разными путями.
Что происходит, когда TTL пакета достигает 0?
Ключевые идеи
- **Роутер** соединяет сети и принимает решения по IP (L3)
- **Таблица маршрутизации** связывает сети с интерфейсами/next-hop
- **Longest prefix match** - выбирается самый специфичный маршрут
- **Default gateway** - выход из локальной сети (0.0.0.0/0)
- **TTL** защищает от петель, используется в traceroute
Связанные темы
Маршрутизация - сердце интернета:
- ICMP и Ping — Диагностика маршрутов и доступности
- ARP — Как найти MAC gateway для отправки пакета
- Статическая маршрутизация — Ручная настройка маршрутов
Вопросы для размышления
- Почему traceroute иногда показывает * * * для некоторых хопов?
- Что произойдёт, если удалить default route с ПК?
- Почему latency до первого хопа обычно <1ms, а до Google - 20-50ms?