Маршрутизация, ICMP и ping
Понимаем, как пакет находит дорогу через множество сетей и как ICMP помогает диагностировать путь.
Маршрутизация — это процесс выбора пути для пакета от отправителя к получателю через цепочку промежуточных маршрутизаторов (роутеров).
Проблема: как пакет находит путь
Интернет — это миллионы соединённых сетей. Когда пакет уходит к серверу на другом континенте, он не знает весь путь заранее. Каждый маршрутизатор на пути принимает локальное решение: «куда переслать дальше, чтобы приблизить пакет к цели». Это похоже на езду по указателям: вам не нужна карта всего пути, достаточно знать следующий поворот.
Таблица маршрутизации
У каждого маршрутизатора (и у вашего компьютера) есть таблица маршрутизации — список правил «для такой-то сети — отправляй туда-то». Упрощённо:
Назначение Шлюз (next hop) Интерфейс
192.168.1.0/24 напрямую eth0 (своя локальная сеть)
10.8.0.0/24 192.168.1.1 eth0 (через роутер)
0.0.0.0/0 192.168.1.1 eth0 (всё остальное — шлюз по умолчанию)
Ключевая запись — шлюз по умолчанию (default gateway) 0.0.0.0/0: «если для адреса нет более точного правила — отправь сюда». Для домашнего компьютера это адрес роутера. Маршрутизатор выбирает самое точное совпадение (longest prefix match).
Посмотреть свою таблицу можно командой:
ip route # Linux
route print # Windows
netstat -rn # macOS / Unix
Откуда роутеры знают маршруты
Внутри одной организации таблицы заполняют протоколы маршрутизации, которые автоматически обмениваются информацией о сетях:
| Протокол | Где применяется | Идея |
| OSPF | внутри организации | выбор кратчайшего пути по «стоимости» |
| RIP | малые сети (устаревает) | путь по числу хопов |
| BGP | между провайдерами (весь интернет) | маршрутизация между автономными системами |
BGP — «клей интернета»: именно он связывает сети разных провайдеров. Когда из-за ошибки BGP «пропадает» крупный сервис на полпланеты — это новость уровня мировых СМИ.
ICMP: служебный протокол
ICMP (Internet Control Message Protocol) — это протокол служебных сообщений сетевого уровня. Он не передаёт пользовательские данные, а сообщает об ошибках и состоянии: «узел недостижим», «время жизни пакета истекло», «хост, ответь». На ICMP построены два главных диагностических инструмента.
ping — доступен ли узел
ping отправляет ICMP-запрос «echo request» и ждёт ответа «echo reply». Если ответы приходят — узел жив и сеть до него работает; по времени ответа видно задержку (RTT).
ping example.com
PING example.com (93.184.216.34): 56 data bytes
64 bytes from 93.184.216.34: icmp_seq=0 ttl=56 time=11.8 ms
64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=12.1 ms
--- example.com ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
traceroute — путь до узла
traceroute (в Windows — tracert) показывает все промежуточные маршрутизаторы. Хитрость — поле TTL (Time To Live): пакет с TTL=1 «умирает» на первом роутере, тот шлёт ICMP-ошибку и так себя выдаёт. Увеличивая TTL, мы по очереди «вскрываем» весь путь.
traceroute example.com
1 192.168.1.1 1.2 ms
2 10.0.0.1 5.4 ms
3 172.16.31.1 12.0 ms
4 93.184.216.34 18.7 ms
Зачем это веб-разработчику
Когда сайт «не открывается», ping и traceroute отвечают на вопросы «сервер вообще жив?» и «на каком участке пути теряется связь?». Это первый шаг диагностики до того, как лезть в код приложения.
Итог
- Маршрутизация — пошаговый выбор следующего узла по таблице маршрутизации.
- Шлюз по умолчанию (
0.0.0.0/0) — куда слать всё, для чего нет точного правила. - Маршруты заполняют протоколы OSPF, RIP (внутри сетей) и BGP (между провайдерами).
- ICMP — служебный протокол; на нём работают
ping(жив ли узел) иtraceroute(путь до узла).