Traceroute отображает цепочку маршрутизаторов (хопов), через которые проходит пакет до целевого хоста. Для каждого хопа показывается IP-адрес и round-trip time (RTT) — время туда-обратно в миллисекундах.
Как работает
Утилита использует поле TTL (Time To Live) в IP-заголовке. Первый пакет отправляется с TTL=1: первый маршрутизатор уменьшает TTL до 0 и возвращает ICMP-сообщение «Time Exceeded». Traceroute фиксирует адрес этого маршрутизатора и RTT. Затем TTL=2, 3, 4... — поочерёдно раскрываются все хопы до цели.
В классическом Unix-варианте (Van Jacobson, 1987) пакеты отправляются как UDP на высокие порты (33434+). В Windows tracert использует ICMP Echo. Современные инструменты (mtr, tcptraceroute) поддерживают TCP на порту 80 или 443 — полезно, когда ICMP/UDP блокируется файрволом.
История
Traceroute написал Ван Якобсон (Van Jacobson) в 1987 году. Он работал в Lawrence Berkeley Laboratory над анализом перегрузок в интернете. Утилита распространялась как часть BSD Unix и быстро стала стандартным инструментом диагностики. Якобсон также создал tcpdump в 1988 году.
Интерпретация вывода
* * *— хоп не отвечает на ICMP/UDP (блокирует трафик или настроен без ответа). Это не всегда означает потерю — следующий хоп может отвечать нормально.- Высокий RTT на одном хопе и нормальный на следующем — хоп де-приоритизирует ICMP, это норма.
- Постоянный высокий RTT начиная с определённого хопа — задержка в конкретном участке сети.
Применение в хостинге
При жалобах на медленный сайт или потери пакетов traceroute позволяет локализовать проблему: на уровне провайдера клиента, в транзитной сети или уже на стороне хостинга. Команда: traceroute -n example.com (Linux) или tracert -d example.com (Windows). Ключ -n отключает DNS-резолвинг и ускоряет вывод.
Для трассировки через CDN или балансировщик используют tcptraceroute на порт 443 — это показывает реальный путь до origin-сервера.
Как работает traceroute
Traceroute использует механизм TTL (Time-To-Live) IP-пакетов. Первый пакет отправляется с TTL=1 — первый маршрутизатор уменьшает TTL до 0 и отправляет ICMP Time Exceeded обратно отправителю. Второй пакет — TTL=2, второй маршрутизатор отвечает. Процесс повторяется до достижения цели. Каждая «звёздочка» (***) означает: маршрутизатор не отвечает на ICMP или UDP пакеты. Три пробы на каждый хоп — среднее время ответа.
Linux/macOS: traceroute использует UDP-пакеты по умолчанию (порты 33434+). Windows: tracert использует ICMP Echo Request. Опция traceroute -T -p 80 — TCP traceroute на порт 80, обходит блокировки ICMP/UDP файрволами. Оба инструмента показывают путь пакетов и задержку на каждом хопе.
Traceroute для диагностики хостинга
Типичные задачи: определить, где именно теряются пакеты (потеря между хопами 8 и 9 → проблема на этом участке), проверить маршрутизацию до сервера (через какие точки обмена трафиком идёт путь), измерить задержку до ЦОД провайдера перед покупкой сервера. Для хостинга в России: MSK-IX обменивает трафик, и traceroute часто показывает его как хоп.
Современные инструменты: mtr (Matt's Traceroute) — комбинирует traceroute и ping в реальном времени, обновляет статистику непрерывно. pathping (Windows) — аналог mtr. tracepath (Linux) — упрощённый traceroute без root-прав.
История traceroute
Traceroute написан Ван Якобсоном (Van Jacobson) в 1987 году — автором также TCP slow start и tcpdump. Первая версия работала на BSD Unix. Windows tracert появился в Windows NT 3.51 (1995). Инструмент не изменился принципиально с 1987 года, оставаясь стандартным методом диагностики сети.