Что такое трассировка маршрута в Windows (tracert) и Linux (traceroute): разбор Сисадминыча

Приветствую всех читателей! Сегодня я хочу рассказать вам о трассировке маршрута в локальных и глобальных сетях. Я также подробно рассмотрю различия в измерении трассировки маршрута в операционных системах Windows и Linux. Многие считают, что результаты выполнения похожих команд будут одинаковыми, но на самом деле это не так – об этом я расскажу чуть ниже. Если у вас возникнут вопросы или у вас есть что добавить, пишите в комментариях.

Определение

Трассировка — это тестирование, позволяющее пользователю видеть путь передвижения пакета данных до конечного сервера, включая узлы и задержки. Например, при использовании команды «Ping» вы получите информацию о времени отклика или времени отправки и приема пакета. А при трассировке вы увидите, через какие IP-узлы проходит пакет до конечного сервера.

Этой утилитой часто пользуются инженеры и системные администраторы для выявления слабых мест в сети. В общем, она полезна почти для всех. Далее я расскажу, как выполнить трассировку до сайта или выделенного игрового сервера, а также как правильно пользоваться данной функцией.

Windows

Для выполнения данной функции в операционной системе Windows можно использовать встроенный модуль или утилиту под названием «Tracert». Она расположена в папке «System32», вместе с другими подобными программами, и обычно запускается через командную строку. Утилита способна работать как с доменными именами, так и с IP-адресами, включая IPv4 и IPv6. Её не требуется устанавливать, так как она включена в стандартный пакет Windows для всех версий: XP, 7, 8, 8.2 и 10.

Если вы хотите использовать эту утилиту, вам необходимо запустить командную строку. В Windows 7 это можно сделать, перейдя в «Пуск» – «Все программы» – открыв папку «Стандартные», затем щелкнув правой кнопкой мыши на командной строке и выбрав «Запуск от имени администратора».

ПРИМЕЧАНИЕ! Также можно открыть командную строку, нажав сочетание клавиш + R и введя команду «CMD».

Что такое трассировка маршрута в Windows (tracert) и Linux (traceroute): разбор Сисадминыча

Для получения административных прав в операционной системе Windows 10 достаточно выполнить клик правой кнопкой мыши на кнопке «Пуск» и выбрать соответствующий пункт в контекстном меню.

Запуск командной строки от имени администратора в Windows 10

После этого процесс становится довольно простым — сначала необходимо ввести команду «tracert», а затем через пробел указать IP-адрес сервера. В качестве примера я выбрал один из известных DNS-серверов:

Команда tracert - трассировка по IP

Одним из плюсов является возможность использовать не только IP-адрес, но и доменное имя, состоящее из букв. Давайте, к примеру, проведем тест с поиском Яндекс:

tracert yandex.ru

tracert yandex.ru - трачировка доменного имени

Здесь мы наблюдаем несколько этапов. Каждый этап представляет собой передачу пакета от одной точки к другой. Также вы видите время прохождения, измеряемое в миллисекундах. Затем вы увидите название точки и IP-адрес, указанный в скобках. Если же точка не ответит или время ожидания будет превышено, то в колонке времени вы увидите звездочку (*).

Теперь давайте обсудим проблему этого тестирования. Проблема заключается в том, что команда не отображает некоторые точки, а именно коммутаторы, которые работают на втором уровне модели OSI. И все это из-за отсутствия интерфейсного представления подключенных устройств в IP-формате. Другими словами, коммутация происходит на втором уровне, где нет IP-адресов, а связь устанавливается с помощью таблицы MAC-адресов. И, разумеется, что такие точки не отображаются в таблице.

Рекомендую вам углубиться в изучение модели OSI и коммутаторов.

В результате для данной команды все коммутаторы, работающие на втором уровне модели OSI, становятся невидимыми. «Tracert» использует протокол ICMP (Internet Control Message Protocol), который передает данные только в IP-пакете с учетом значения TTL. TTL — это время жизни пакета.

Исходно при отправке пакета к первому узлу значение TTL составляет один. При трассировке сразу отправляются три пакета, что объясняет три столбца времени. Если все пакеты возвращаются, мы видим время во всех трех столбцах. Затем TTL увеличивается на единицу, и отправляются еще три пакета к следующему узлу. И так продолжается, пока последний запрос не дойдет до конечного узла.

Следует отметить, что если вы увидите звездочку, но пакет все же проходит через этот узел, то вероятно на данном маршрутизаторе или сервере установлена настройка, которая игнорирует ICMP запросы. Часто такие настройки используются для проведения DDoS атак, поэтому иногда отключают обработку таких запросов.

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

tracert /? вывод параметров трассировки в Windows

Эта команда не только полезна для работы и тестирования сетей, но также может помочь выявить проблемы с интернет-соединением. Вспоминаю, у моего друга была высокая задержка в «Counter-Strike», и он не мог понять причину, ведь у меня в соседнем доме пинг был значительно ниже. При использовании команды трассировки он обнаружил, что на первом (провайдерском) узле происходит значительное замедление передачи пакетов. В итоге он обратился к провайдеру, и им заменили устаревший коммутатор, который там установили еще в давние времена, возможно, еще в эпоху Российской Империи.

Linux

Итак, в операционной системе Windows мы уже описали, что для выполнения трассировки используется утилита tracert.exe. В Linux же данная функция выполняется утилитой с другим названием — traceroute, которая также выполняет трассировку, но с некоторыми отличиями.

Давайте вспомним, как работает tracert, на примере изображения ниже:

  1. Хост отправляет запрос с TTL = 1 к узлу «Router1».
  2. Запрос приходит на «Router1», и он, увидев, что TTL равен 1, уменьшает его и отправляет ответ.
  3. Ответ приходит от первого узла и Хост записывает его в таблицу трассировки.
  4. Затем идет запрос ко второму узлу уже с увеличенным на единицу TTL.
  5. Этот процесс продолжается до тех пор, пока запрос не достигнет конечного сервера. Все это основано на использовании протокола ICMP.

Проблема заключается в том, что «tracert» не имеет возможности отправить запрос с указанием порта, что делает его достаточно ограниченным. В отличие от этого, «Traceroute» использует совершенно другой протокол — UDP. Фактически, протокол UDP отправляет запросы именно через порты. При достижении конечного узла трассировка завершается, когда порт становится закрытым на конечном сервере при увеличении номера порта на каждом шаге.

Выполнение программы возможно также через командную строку с использованием соответствующих параметров.

Кстати, при трассировке можно использовать не UDP, а ICMP протокол, для этого нужно добавить параметр «-I».

Но что делать, если необходимо выполнить трассировку по UDP протоколу с использованием портов на Windows? Для этого потребуется использовать стороннюю микропрограмму: «tcptrace». Для трассировки маршрута по TCP (и UDP) можно воспользоваться «tcptraceroute».

Оцените статью
Мои Советы
Добавить комментарий