Трассировка: что это такое, для чего нужна и как правильно пользоваться?

By admin Дек 18, 2020

Определение

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

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

Что такое трассировка к IP адресу

Когда вы заходите на любой сайт в интернете, ваш компьютер в этот момент посылает запрос к серверу. Путь этот проходит сквозь маршрутизаторы. Если все прошло успешно, тогда нужный сайт отобразится у вас в браузере. Если нет — появится уведомление об ошибке.

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

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

Назначение и применение Tracert на практике

Tracert – не просто некая абстрактная команда, которую понимает командная строка, а полноценная программа. Точнее, служебное консольное (не имеющее оконного интерфейса) Windows-приложение, предназначенное для определения пути, по которому направляются сетевые пакеты от одного узла к другому. Имя приложения образовано от «trace route», что означает «трассировка маршрута».

Программа Tracert является собственным компонентом Windows (устанавливается на компьютер вместе с ОС), ее исполняемый файл – TRACERT.exe, постоянно находится в папке %windir%/system32.

Для простоты понимания работы трассировщика представим сетевой пакет как обычную посылку, которую вы отправили по почте в соседний город. На пути следования к адресату (конечному узлу), посылка делает несколько остановок на сортировочных пунктах (промежуточных узлах), где ее регистрируют и отсылают дальше. Вы, как отправитель, зная почтовый трек-номер посылки, можете следить за ее передвижением на специальных сайтах. Если отправление вовремя не доставлено, вы легко узнаете, на каком этапе пути оно потерялось.

Подобным образом работает и Tracert. Только он предоставляет информацию о не почтовых, а о сетевых отправлениях.

Обратите внимание на сходство этих записей:

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

  • На каком уровне происходит блокировка недоступного веб-ресурса: на уровне домашней сети (пакеты не отсылаются дальше шлюза), в сети провайдера или за ее пределами.
  • Где пакеты сбиваются с правильного маршрута. Например, причиной того, что вместо запрашиваемого сайта открывается страница с рекламой, может быть и вредоносная программа на компьютере пользователя, и перенаправление с какого-либо сетевого узла.
  • Является ли веб-ресурс тем, за что себя выдает.

Как работает трассировка

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

tracert URL_сайта или IP_сайта. Например, tracert Mts.ru, tracert 91.216.147.50

Ответом на нее будет примерно следующее:

Ниже я поясню, что означают эти числа и записи, а сначала, чтобы было понятно, рассмотрим принцип работы трассировщика.

Как только вы введете вышеуказанную инструкцию в командную сроку и нажмете Enter, приложение отправит заданному веб-ресурсу серию из трех ICMP-пакетов. В одном из служебных полей каждого пакета указано значение TTL – количество допустимых передач между узлами сети или, как говорят,«время жизни» запроса. При переходе отправления от роутера к роутеру значение TTL уменьшается на единицу. Когда оно достигает нуля, пересылка прекращается, пакет отбрасывается, а компьютер-отправитель получает об этом ICMP-уведомление.

Значение TTL первой партии ICMP-запросов равно 1. Первый же узел, на который она поступит, вычтет из этого значения единицу. Так как «время жизни» пакетов станет равным нулю, они будут выброшены «на свалку истории», а отправитель получит ответное «письмо» с указанием имени и IP-адреса этого узла.

Значение TTL второй партии будет равно двум (ответ будет получен от второго узла), третьей – трем и т. д. Отправка с увеличением TTL на 1 будет продолжаться до тех пор, пока данные не получит адресат.

Как сделать трассировку до сервера?

Не знаете, как проверить трассировку до сервера? Тогда вам поможет приведенная ниже последовательность действий:

  • Открывается командная строка

    Сделать это можно по-разному:

    1. Если нужна команда трассировки в CMD, то командную строку можно вызвать, нажав сочетание клавиш Win+R, после чего набрав cmd и нажав клавишу Enter. Как вариант, вы можете нажать «Пуск» или клавишу Win, найти пункт «Выполнить», после чего набрать cmd и нажать клавишу Enter.
    2. Нажмите «Пуск» — «Программы» («Все программы») — «Стандартные» — «Командная строка».

    Независимо от способа открытия, в итоге вы получаете доступ к командной строке.

  • Вводится команда tracert в командной строке

    Команда обладает следующим синтаксисом: tracert имя_узла, где имя_узла — имя трассируемого узла или хоста в сети. Также возможен вариант tracert IP_адрес, где IP_адрес — это IP адрес нужного вам хоста или узла. После ввода команды нажмите клавишу Enter.

  • Анализируется результат выполнения команды

После нажатия Enter запускается процесс выполнения команды. По его окончании вы получите отчет, в котором будут отображены все этапы прохождения пакета между узлами, а также время отклика каждого узла в миллисекундах. Ниже представлен пример того, как была проведена трассировка интернет-соединения с веб-ресурсом Yandex.ru.

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

  • ! Этот символ в одной из строчек означает, что соответствующий порт недоступен.
  • !N Данный символ означает недоступность сети.
  • !H Появление этого символа означает недоступность нужного узла.
  • !P Этот символ предупреждает об использовании недопустимого протокола.
  • !F Появляется в тех случаях, когда превышена допустимая длина отправленного или принятого пакета.
  • !X Данный символ появляется при обнаружении административного запрета на доступ к узлу, фильтру, прокси или любой другой точке.
  • * Появление этого символа означает, что данный узел не откликается.

Вызов командной строки в операционной системе Windows

Для того, чтобы максимально точно определить, в чем заключается проблема доступа к сайту, следует провести действия по диагностике связи с сервером при помощи командной строки. Вызвать командную строку в системе Windows можно несколькими способами:
  1. Запустить меню «Пуск», далее выбрать пункт «Все программы/приложения», в котором кликнуть по подпункту «Служебные» и выбрать приложение «Командная строка».
  2. Запустить меню «Пуск», выбрать пункт «Выполнить», в открывшемся диалоговом окне набрать «cmd» и нажать Enter, тем самым запустив окно командной строки.

Сетевая команда для проверки пинга сервера

Для того, чтобы проверить пинг узла в интернете, необходимо использовать в командной строке специализированную команду «ping», через пробел после которой следует ввести web-адрес интересующего сайта или его ip и нажать клавишу Enter. После этого система произведет тестовый обмен пакетами по 32 байта с назначенным узлом в сети, и в результатах выведет статус обмена для каждого пакета и время передачи. На основании полученных данных можно сделать вывод относительно доступности сервера и качества связи с ним. В системах семейства Windows выполняется обмен 4-мя пакетами.

Сетевая команда Telnet

Специальная команда Telnet дает возможность пользователю определить возможность установки связи с каким-либо удаленным серверным компьютером или сайтом при помощи заданного сетевого порта. Чтобы данная команда работала, необходимо в настройках Windows включить соответствующий компонент.
Для того, чтобы выполнить эту команду, в командную строку необходимо ввести Telnet и далее через пробелы адрес серверного компьютера и номер желаемого порта, и потом нажать клавишу «Enter».
В случае появления пустого экрана и мигающего курсора, соединение с требуемым узлом было осуществлено успешно.
Если же соединение установить не удается, то в окне появится соответствующее сообщение.

Параметры и ключи утилиты TRACERT

tracert [-d] [-h максимальное_число_переходов] [-j список_узлов] [-w интервал [имя_конечного_компьютера]

  • -d — Предотвращает попытки команды tracert разрешения IP-адресов промежуточных маршрутизаторов в имена. Увеличивает скорость вывода результатов команды tracert.
  • -h максимальное_число_переходов — Задает максимальное количество переходов на пути при поиске конечного объекта. Значение по умолчанию равно 30.
  • -j список_узов — Указывает для сообщений с эхо-запросом использование параметра свободной маршрутизации в заголовке IP с набором промежуточных мест назначения, указанных в списке_узлов. При свободной маршрутизации успешные промежуточные места назначения могут быть разделены одним или несколькими маршрутизаторами. Максимальное число адресов или имен в списке — 9. Список_адресов представляет набор IP-адресов (в точечно-десятичной нотации), разделенных пробелами.
  • -w интервал — Определяет в миллисекундах время ожидания для получения эхо-ответов протокола ICMP или ICMP-сообщений об истечении времени, соответствующих данному сообщению эхо-запроса. Если сообщение не получено в течение заданного времени, выводится звездочка (*). Таймаут по умолчанию 4000 (4 секунды).
  • имя_конечного_компьютера — Задает точку назначения, указанную IP-адресом или именем узла.
  • -? — Отображает справку в командной строке по утилите tracert.

Основные особенности команды Tracert

  1. Данная команда может определить точный путь при помощи отправки ICMP-сообщений и вывести на дисплей сведения относительно каждого пройденного маршрутизатора и времени обмена информацией с ними, однако фильтрование пакетов шлюзами безопасности может запретить передачу подобной информации.
  2. В случае неудачной трассировки маршрута при помощи tracert, основываясь на результатах, можно точно выяснить, какой из промежуточных маршрутизаторов не выполняет перенаправление информации или осуществляет это медленно.
  3. Для того, чтобы получить подробные сведения относительно перенаправления и потери пакетов на каждом из маршрутизаторов, по которым идет запрос, можно использовать специальную команду «pathping».
  4. Для того, чтобы tracert не осуществляла вывод на дисплей имен всех маршрутизаторов, можно использовать параметр «-d», что позволяет существенно упростить вид пути следования запроса.

Примеры команды TRACERT

  • Чтобы отобразить справку в командной строке по команде введите: tracert /?
  • Чтобы выполнить трассировку пути к узлу, введите команду: tracert ya.ru;
  • Чтобы выполнить трассировку пути к узлу и предотвратить разрешение каждого IP-адреса в имя, введите: tracert -d ya.ru.

Как читать результат трассировки

Вернемся к анализу вывода Tracert. Мой запрос к сайту Yandex.ru совершил 16 прыжков – прошел через 15 «перевалочных пунктов» и шестнадцатым шагом достиг конечной цели. Порядковые номера прыжков отображены в столбце, обведенном красной рамкой. По умолчанию их максимальное число составляет 30.

Второй, третий и четвертый столбцы содержат значения RTT – времени, прошедшего от момента отправки запроса до получения ответа (как вы помните, партия состоит из трех пакетов). Чем оно меньше, тем быстрее осуществляется передача. Если оно больше 4 секунд, интервал ожидания считается превышенным.

Последний столбец – это имена и адреса промежуточных и конечного узлов.

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

Причиной сбоя доставки ICMP-пакетов (если запрос так и не дошел до адресата) может быть неработоспособность (отключение или неисправность) сетевого устройства или политика безопасности (блокировка данного действия администратором сети).

Если у вас Windows

  1. Откройте меню «Пуск», кликните по пункту Выполнить или нажмите сочетание клавиш Win + R.

  2. В поиске введите команду «cmd» и кликните Enter.

  3. В открывшемся окне терминала введите команду:

tracert имя_сайта (домен) или tracert IP_сервера.

Linux

Итак, в Windows мы уже разобрались, что трассировку выполняет утилита «tracert.exe». В Linux утилита имеет другое название: «traceroute», – и также выполняет данную функцию, но немного по-другому.

Вспомним немного как работает tracert на примере нижней картинки:

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

А проблем в том, что у «tracert» нет возможности сделать запрос с портом, что делает его немного узконаправленным. «Traceroute» работает на основе совершенно другого протокола – UDP. По сути UDP протокол делает запрос именно по портам. А окончание трассировки при достижении пакетом конечного узла происходит в том случае, когда при каждом шаге при увеличении номера порта он становится закрытым на конечном сервере.

Запускаем программу аналогично через консоль. Также у неё есть свои параметры.

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

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

Если у вас MacOS

  1. В Spotlight выберите и запустите сетевую утилиту Network Utility.

  2. В открывшемся окне перейдите на нужную вкладку.

На вкладке Traceroute введите имя домена (или IP-адрес) и кликните Отследить:

[spoiler title=»Источники»]

  • https://WiFiGid.ru/poleznoe-i-interesnoe/trassirovka
  • https://free.proxy-sale.com/trace/
  • https://f1comp.ru/internet/kakie-sekrety-pomozhet-uznat-komanda-tracert/
  • https://RigWEB.ru/support/soft/komanda-tracert-chto-eto-i-dlya-chego-ispolzuetsya/
  • https://www.Majordomo.ru/articles/traceroute
  • http://Cmd4Win.ru/administrirovanie-seti/diagnostika-sety/51-tracert
  • https://2domains.ru/support/hosting/ping-and-tracert

[/spoiler]

By admin

Related Post