Открыть сервис

Tracert: утилита диагностики сетевых маршрутов

Tracert (от англ. trace route — «трассировка маршрута») — это сетевая утилита, предназначенная для определения пути прохождения IP-пакетов от компьютера пользователя до заданного узла назначения в компьютерной сети. Она входит в состав операционных систем семейства Microsoft Windows и позволяет диагностировать проблемы с маршрутизацией, измерять задержки на промежуточных узлах и выявлять точки потери пакетов. Аналогом утилиты в UNIX-подобных системах является программа traceroute.

Принцип работы

Работа утилиты основана на использовании поля Time to Live (TTL) в заголовке IP-пакета и протокола ICMP (Internet Control Message Protocol). При отправке пакета отправитель устанавливает значение TTL, которое уменьшается на единицу каждым маршрутизатором, через который проходит пакет. Когда значение TTL становится равным нулю, маршрутизатор уничтожает пакет и отправляет отправителю ICMP-сообщение Time Exceeded (превышено время жизни).

Алгоритм работы tracert выглядит следующим образом:

  1. Утилита отправляет первый пакет с TTL, равным 1. Первый же маршрутизатор на пути уменьшает TTL до нуля и возвращает ICMP-сообщение, по которому определяется его IP-адрес.
  2. Затем отправляется пакет с TTL, равным 2, что позволяет определить второй маршрутизатор.
  3. Процесс повторяется с увеличением TTL на единицу до тех пор, пока пакет не достигнет конечного узла назначения.

В Windows tracert использует ICMP Echo Request (эхо-запросы), тогда как в UNIX-системах traceroute по умолчанию применяет UDP-дейтаграммы, а ICMP используется лишь в некоторых реализациях. Конечный узел, получивший пакет с ненулевым TTL, отвечает ICMP-сообщением Echo Reply (эхо-ответ), что служит сигналом для завершения трассировки.

Формат вывода

По умолчанию утилита отображает до 30 хопов (прыжков) между маршрутизаторами. Для каждого хопа выводится его номер, три значения времени ответа в миллисекундах (для трёх отправленных пакетов) и IP-адрес или доменное имя узла. Если узел не отвечает в течение установленного тайм-аута, выводится символ *.

Пример вывода: `` 1 1 ms 2 ms 1 ms 192.168.1.1 2 10 ms 11 ms 9 ms 10.0.0.1 3 * Запрос превысил время ожидания. ``

Синтаксис и параметры

В командной строке Windows утилита вызывается с использованием следующего синтаксиса:

`` tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name ``

Основные параметры:

  • -d — отключение обратного разрешения имён (ускорение работы за счёт отказа от DNS-запросов);
  • -h maximum_hops — задание максимального количества хопов (по умолчанию 30);
  • -j host-list — использование свободной маршрутизации с указанным списком промежуточных узлов (поддерживается не всеми маршрутизаторами);
  • -w timeout — задание времени ожидания ответа в миллисекундах (по умолчанию 4000 мс).

В качестве target_name может выступать как IP-адрес, так и доменное имя.

Отличия от traceroute

Хотя tracert и traceroute выполняют одну функцию, между ними существуют технические различия:

  • Протокол: Windows-версия использует ICMP, в то время как классический traceroute в Linux и macOS работает с UDP-пакетами, отправляемыми на высокие порты (обычно начиная с 33434). Некоторые реализации поддерживают выбор протокола через параметры.
  • Порядок определения конечного узла: в ICMP-версии ответ конечного узла (Echo Reply) отличается от ответов промежуточных маршрутизаторов (Time Exceeded), что упрощает определение завершения трассировки. В UDP-версии завершение определяется по ICMP-сообщению Port Unreachable (порт недоступен).
  • Прохождение через межсетевые экраны: многие сетевые экраны блокируют ICMP-трафик, что может приводить к некорректным результатам работы tracert. UDP-трафик также часто фильтруется, поэтому современные версии traceroute поддерживают несколько режимов.

Применение

Tracert используется для решения следующих задач:

  • Диагностика сетевых соединений: определение участка сети, на котором происходит потеря пакетов или возникает высокая задержка.
  • Проверка маршрутизации: выявление неоптимальных маршрутов, петель маршрутизации и недоступных промежуточных узлов.
  • Определение сетевой топологии: получение информации о промежуточных маршрутизаторах между двумя точками сети.
  • Сравнение маршрутов: проверка того, через какие сети и страны проходит трафик до конкретного сервера.

Ограничения и особенности

Утилита имеет ряд ограничений, которые важно учитывать при интерпретации результатов:

  • Блокировка ICMP: многие маршрутизаторы и межсетевые экраны настроены на игнорирование ICMP-сообщений, из-за чего некоторые хопы отображаются как *, хотя пакеты фактически проходят через них.
  • Нестабильность маршрутов: в крупных сетях маршруты могут меняться динамически (особенно при использовании балансировки нагрузки), поэтому повторные трассировки могут показывать разные пути.
  • Асимметричность маршрутов: путь от источника к назначению может отличаться от обратного пути, поэтому результаты трассировки не всегда отражают полную картину соединения.
  • Три пакета на хоп: значения времени ответа могут существенно различаться из-за разной загрузки промежуточных узлов, поэтому для оценки стабильности канала рекомендуется выполнять несколько трассировок.

Смежные утилиты

Кроме tracert, для диагностики сетей используются и другие инструменты:

  • ping — проверка доступности узла и измерение задержки без определения маршрута;
  • pathping — комбинированная утилита Windows, которая сначала выполняет трассировку, а затем собирает статистику о потерях пакетов на каждом хопе в течение заданного времени;
  • mtr (My TraceRoute) — программа для UNIX-систем, объединяющая функции ping и traceroute в непрерывном режиме;
  • traceroute — базовая утилита UNIX-подобных систем, реализующая аналогичный функционал.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →