Tracert

Примеры использования утилиты route

Хватит теории, переходим к практике. Сейчас мы с Вами пропишем маршрут, который разрешит нам получить доступ к локальной сети при включенном VPN соединении, пригодится обычным пользователям, у которых дома более одного компьютера, а в Интернет выходят по средствам VPN.

Имеем локальную сеть: 192.168.1.0/24

Локальный IP первого компьютера (пусть он будет компьютер — A) – 192.168.1.2 (на котором присутствует VPN соединение)

Локальный IP второго компьютера (а этот компьютер — B) – 192.168.1.3

IP адрес шлюза т.е. модема – 192.168.1.1

Нам нужно прописать маршрут на компьютере A, чтобы он смог видеть компьютер B при включенном VPN соединении. Делается это следующем образом: запускаем командную строку Пуск->Выполнить->cmd и набираем следующую команду:

route –p add 192.168.1.0 mask 255.255.255.0 192.168.1.1

где:

route – сама программа, которая работает с таблицей маршрутизации;

-p – ключ, который говорит, что маршрут будет постоянный, так как (Важное замечание!) без этого ключа все маршруты, которые Вы добавите удалятся после перезагрузке, поэтому если Вы хотите использовать маршрут всегда, то пропишите этот ключ, если только один раз, то его можно не писать;

add – команда, добавляющая запись в таблицу маршрутизации;

192.168.1.0 – сеть, с которой Вы хотите иметь связь;

mask 255.255.255.0 – маска подсети;

192.168.1.1 – адрес шлюза, обычно это адрес модема.

Добавив всего один маршрут, Вы получаете доступ к своей сети при подключенном Интернете, т.е. VPN соединении.

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

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

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

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

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

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

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

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

PingPlotter

PingPlotter — еще одно из лучших программ для трассировки и составления карты маршрутов для вашего сетевого трафика. Благодаря этому инструменту мы можем обнаруживать и проверять проблемы, связанные с маршрутом и скоростью, с помощью предупреждений и условий. Мы можем считать это полезным для целей сетевого мониторинга.

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

Кроме того, в нем есть графики, которые упрощают визуализацию и понимание проблем более простым и интуитивно понятным способом. У нас есть 14-дневная пробная версия. Затем мы можем выбрать стандартную версию, предназначенную для небольших компаний и домашних пользователей, и другую профессиональную версию, предназначенную для крупных компаний. Его можно загрузить для операционной системы Windows с сайта здесь .

Chrome DevTools, Step Debugger

  1. Есть баги, завязанные на скорость выполнения. Если вы будете выполнять вашу программу слишком медленно или слишком быстро, у вас не будет воспроизводиться баг.
  2. Есть множество платформ (Node.js, веб, мобильный веб, смарт-ТВ) и runners (Jest, Selenium), которые мы просто не сможем одновременно сконфигурировать и везде запустить отладчики. В лучшем случае — потратим на это очень много времени.
  3. Есть Web Workers, Service Workers, postMessage, разнообразные коммуникации между разными iframe. Даже в рамках базового JavaScript у нас может возникнуть множество проблем с отладкой.
  4. Есть ограничения нашей среды разработки. Иногда, к примеру, мы не можем получить доступ к исходникам и у нас нет SourceMaps. Из за того, как проект собирается и деплоится. Мы можем вообще не иметь прямого доступа к машине, на которой выполняется код, — к примеру, мы можем разрабатывать на dev-сервере и docker-образе). Конечно, мы можем настроить отладку там, но какой ценой?
  5. И самое главное: с пошаговым отладчиком, если вы не видите всей картины, не знаете свою кодовую базу идеально и не знаете, где искать этого Уолли, то можете потратить на это безумное количество времени.

Трассировка программой ping

Программа ping также умеет записывать маршрут — для этого программу нужно запустить с опцией -R. Она в пакет ECHO_REQUEST добавляет опцию RECORD_ROUTE и отображает буфер маршрута возвращаемых пакетов. Эта та же опция, которую использует Nmap. Ограничения такие же: максимум 9 слотов, многие хосты игнорирует или отбрасывают эту опцию.

Пример запуска:

ping -R suip.biz

Пример вывода:

IP маршрута выводятся при каждом пинге. Если маршрут не меняется, то выводится надпись, что маршрут не изменился.

Несмотря на все ограничения опции RECORD_ROUTE, иногда она бывает единственным вариантом получить хоть какую-то информацию о маршруте, поскольку команда ping практически всегда присутствует и не требует повышенных привилегий для запуска.

Трассировка маршрута

Использование утилиты «Tracert».

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

1. Пуск — Выполнить — В графе «Открыть» написать «cmd» и нажать Ок.

2. Сочетание клавиш Win (кнопка с логотипом Windows) + R (должны быть нажаты одновременно) — В графе «Открыть» написать «cmd» и нажать Ок.

3. Пуск — Все программы (или просто «Программы», зависит от версии операционной системы) — Стандартные — Командная строка.

Далее вам необходимо произвести трассировку до заданного ip адреса или доменного имени.

Использование утилиты «Pathping

PathPing предоставляет информацию о латентности сети и потерях данных на промежуточных узлах между исходным пунктом и пунктом назначения. Команда pathping в течение некоторого периода времени отправляет многочисленные сообщения с эхо-запросом каждому маршрутизатору, находящемуся между исходным пунктом и пунктом назначения, а затем на основании пакетов, полученных от каждого из них, вычисляет результаты. Поскольку pathping показывает коэффициент потери пакетов для каждого маршрутизатора или связи, можно определить маршрутизаторы или подсети, имеющие проблемы с сетью. Команда pathping выполняет эквивалентное команде tracert действие, идентифицируя маршрутизаторы, находящиеся на пути.

Запуск программы производится из командной строки. Для этого вы должны войти в неё. Для операционных систем семейства Windows существует несколько способов запуска командной строки:

1. Пуск — Выполнить — В графе «Открыть» написать «cmd» и нажать Ок.

2. Сочетание клавиш Win (кнопка с логотипом Windows) + R (должны быть нажаты одновременно) — В графе «Открыть» написать «cmd» и нажать Ок.

3. Пуск — Все программы (или просто «Программы», зависит от версии операционной системы) — Стандартные — Командная

Внимание! Выполнение данной команды потребует некоторое время, необходимо дождаться полного выполнения, как указано в примере ниже

Копирование текста из командной строки.

Чтобы скопировать текст к кликаем правой кнопкой мышки по командной строке и вызываем контекстное меню. В открывшемся меню выбираем пункт «Пометить». После этого текст в командной строке можно выделить обычным движением мышкой и скопировать с помощь комбинации клавиш Ctrl+C.

Далее результаты необходимо будет переслать на электронный адрес почты 911@profintel.ru, с указанием вашего id номера и кратким описанием вашей проблемы.

Принципы работы трассировки

Пересылаемые сетевые пакеты состоят из двух областей: заголовки и данные. В заголовках находится разная информация, например, IP адреса пункта отправки и пункта назначения, порты отправки и назначения, тип пакета, контрольная сумма пакета и прочее. Среди полей заголовка, у IP протокола есть такое поле как time to live (TTL) — время жизни пакета. Это счётчик с числом, которое уменьшается на единицу каждый раз, когда пакет проходит новый узел. Этот счётчик сделан для того, чтобы проблемный пакет (например, при ошибке, повлекшей закольцованный маршрут) не путешествовал по сети бесконечно. То есть любой пакет пройдя определённое количество узлов в конце-концов достигнет точки назначения или будет отброшен одним из узлов сети, когда закончится «время жизни».

Когда счётчик TTL становится равным нулю, очередной шлюз просто не пересылает этот пакет дальше. Но при этом шлюз на тот IP адрес, откуда пришёл пакет с истёкшим временем жизни, отправляет по протоколу ICMP ответ TIME_EXCEEDED (время жизни кончилось). И этот ответ содержит IP адрес шлюза, где пакет закончил своё существование.

Так вот, суть трассировки в том, что отправляется один пакет с временем жизни (TTL) установленным на единицу — первый шлюз уменьшает значение на единицу, смотрит, что счётчик стал равен нулю, никуда не отправляет этот пакет, зато нам отправляет ответ, что пакет «умер». Мы и так знаем, что пакет умер — из этого ответа нас интересует только IP адрес шлюза, где с пакетом случилось это несчастье. Затем отправляется пакет со счётчиком установленным на 2 — пакет проходит первый шлюз (его IP мы уже знаем), но несчастье (счётчик достигает нуля) с ним случается уже на втором шлюзе — мы получаем ICMP ответ с IP этого шлюза. Затем отправляется следующий пакет и т. д., пока не будут определены все узлы до нужного нам сетевого хоста.

Слушатели трассировки

По умолчанию трассировочная информация пишется в окно Output отладчика Visual Studio. Изменяя конфигурацию приложения, этот вывод можно направить в другое место. Куда будет записан вывод трассировки — зависит от слушателей. Слушатель наследуется от абстрактного базового класса TraceListener.

В .NET поставляется несколько слушателей трассировки для записи событий трассировки в различные места. Для файловых слушателей трассировки используется базовый класс TextWriterTraceListener, а также производные классы XmlWriterTraceListener — для записи XML-файлов и DelimitedListTraceListener — для записи файлов с разделителями. Запись в журнал событий осуществляется с помощью либо EventLogTraceListener, либо EventProviderTraceListener.

Слушатель EventProviderTraceListener использует формат файла событий, который появился в Windows Vista. Можно также комбинировать веб-трассировку с трассировкой System.Diagnostics и записывать сведения в файл trace.axd.

.NET Framework предлагает множество слушателей, в которые может быть записана трассировочная информация. В случае если слушатели не отвечают существующим требованиям, можно написать собственный слушатель, наследуя специальный класс от базового класса TraceListener. С помощью такого специального слушателя можно, например, записывать трассировочную информацию в веб-службу, отправлять сообщения на мобильный телефон и т.д.

Слушатель трассировки можно сконфигурировать программно, создав объект слушателя и присвоив его свойству Listeners класса TraceSource. Однако обычно намного интереснее просто изменить конфигурацию, чтобы определить другой слушатель.

Слушатели можно сконфигурировать как дочерние элементы элемента <source>. В этом случае определяется тип класса слушателя и с помощью initializeData указывается направление вывода слушателя. В показанной ниже конфигурации определяются слушатели XmlWriterTraceListener для записи в файл demotrace.xml и DelimitedListTraceListener для записи в файл demotrace.txt:

С таким слушателем можно указывать дополнительную информацию, которая должна быть записана в журнал трассировки. Эта информация задается в XML-атрибуте traceOutputOptions и определена перечислением TraceOptions. Доступными значениями перечисления являются Callstack, DateTime, LogicalOperationStack, ProcessId, Threadld и None. В XML-атрибут traceOutputOptions можно добавлять сразу несколько необходимых значений, разделяя их запятыми, как в слушателе delimitedListener из предыдущего примера.

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

Для этого вам понадобится служебная программа (утилита) traceroute. Принцип ее действия прост: программа посылает в проблемном направлении информационный сигнал – пакет данных, получая ответ от каждого из узлов – своеобразное информационное эхо. Таким образом, можно замерить время прохождения сигнала от одного узла к другому, без труда выявив «слабое звено».

Не нужно бросаться искать, где бы скачать такую полезную вещь: утилита traceroute уже встроена в вашу операционную систему. Для ее запуска служит команда tracert. Итак, что вам необходимо сделать:

  1. Вызываем командную строку. Для этого:
    • Нажимаем кнопку пуск на экране либо клавишу win на клавиатуре (клавиша win на стандартной клавиатуре находится между Alt и Control, на ней изображен всемирно известный логотип всеми любимой операционной системы Windows);
    • В появившемся меню (стартовом меню) выбираем пункт «выполнить». Команда «выполнить» позволяет задействовать служебные программы системы Windows, спрятанные подальше от рук любопытных пользователей, так как неумелое пользование некоторыми программами может нанести вред работе операционной системе и хранящимся на компьютере данным. Своего рода «защита от дурака». Но мы уж точно не дураки, поэтому продолжаем;
    • В появившейся после выбора «выполнить» строке вводим вручную латинским шрифтом cmd и нажимаем Ok. Командная строка вызвана.

Справка: быстро вызвать строку «выполнить» можно нажав на клавиатуре комбинацию win+r. После чего можно ввести cmd.

  1. В командную строку вводим команду tracert имя или IP сайта (с подсоединением к которому возникли проблемы). Например, tracert ru.
  2. Ожидаем результат. В результате мы увидим несколько строк (до 30), каждая из которых – узел, через который проходит информация. В строке будет написано имя или IP узла и время прохождения сигнала в миллисекундах (ms – тысячная доля секунды).

Выше описанное актуально для операционной системы Windows, а как выполняется трассировка маршрута под Linux? В общих чертах аналогично, только терминал (аналог командной строки) вместо cmd вызывается сочетанием клавиш Ctrl+Alt+t, а вместо tracert вводим traceroute. Стоит также отметить, что трассировка в Linux будет продолжаться, пока пользователь не прервет ее сам, нажав ctrl+c.

Что нам даст результат? Чем больше время прохождения пакета, тем больше сайт «тормозит», таким образом, мы выявим узел, виновный в «тормозах». Непроходимый же узел будет обозначен надписью «Превышен интервал ожидания маршрута». Чем выше в списке проблемная строка, тем более локальна проблема. «Непроходимость» внизу списка указывает на проблемы с сайтом или доменом, а вверху – у вашего провайдера либо в локальной сети.

Стратегическое размещение операторов трассировки

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

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

Как работают Tracert и Traceroute

Когда вы пытаетесь открыть сайт, браузер отправляет сообщение (запрос) серверу, на котором этот сайт находится. Сообщение на своём пути проходит через маршрутизаторы. Они решают, куда дальше передать сообщение, чтобы гарантированно его доставить адресату. В трассировке маршрутизаторы ещё называют хопами (хоп — прыжок) или узлами. Количество узлов, через которые на своём пути пройдёт запрос, можно узнать при помощи утилит Tracert и Traceroute. Узлы, которые не являются целевыми для запроса, называют транзитными.

Утилита Traceroute формирует UDP-датаграмму (сообщение, которое нужно доставить целевому серверу), упаковывает её в IP-пакет и передаёт первому транзитному узлу. В заголовке такого IP-пакета есть поле TTL (Time To Live) — время жизни пакета. Оно определяет количество хопов, через которые пакет может пройти. На каждом узле TTL уменьшается на единицу. Если на пути к удалённому адресату время жизни пакета станет равно 0, маршрутизатор отбросит пакет и отправит источнику ICMP-сообщение об ошибке «Time Exceeded» (время истекло).

Этот принцип лежит в основе работы утилит Tracert и Traceroute, однако между ними есть отличия. Рассмотрим каждую утилиту отдельно.

Tracert отправляет на хост назначения ICPM-запрос «Echo Request» с TTL=1. Первый маршрутизатор, который получит запрос, проверяет, кому он предназначен. Если маршрутизатор не является целевым хостом, он уменьшает TTL на 1, отбрасывает пакет и отправляет ICMP-сообщение источнику, так как время жизни теперь равно 0. В этом сообщении маршрутизатор указывает информацию о себе и причину дропа пакета. Получив сообщение, Tracert запоминает этот маршрутизатор как первый хоп (прыжок) и отправляет следующий пакет, но уже с TTL=2. Первый хоп успешно обрабатывает новый пакет, уменьшает время его жизни на 1 и передаёт дальше. Следующий маршрутизатор тоже выполняет проверку хоста назначения и, если пакет предназначен не ему, уменьшает TTL, отбрасывает пакет и отправляет ICMP-сообщение источнику. Tracert запоминает второй хоп, снова увеличивает TTL на 1 и отправляет следующий пакет. Эти действия будут повторяться до тех пор, пока пакет не достигнет целевого хоста. Когда запрос попадёт к целевому хосту, этот хост в ответ направит ICMP «Echo Reply». Источник воспримет это как завершение трассировки.

Утилита Traceroute вместо ICMP-запроса отправляет 3 UDP-пакета на определенный порт целевого хоста и ожидает ответа о недоступности этого порта. Первый пакет отправляется с TTL=1, второй с TTL=2 и так далее, пока запрос не попадёт адресату. Отличие от Tracert в том, как Traceroute понимает, что трассировка завершена. Так как вместо ICMP-запроса он отправляет UDP-запрос, в каждом запросе есть порт отправителя (Sourсe) и порт получателя (Destination). По умолчанию запрос отправляется на закрытый порт 34434. Когда запрос попадёт на хост назначения, этот хост отправит ответ о недоступности порта «Destination port unreachable» (порт назначения недоступен). Это значит, что адресат получил запрос. Traceroute воспримет этот ответ как завершение трассировки.

Если Tracert работает по протоколу ICMP, то какой протокол используется командой Traceroute? По умолчанию используется протокол UDP, но traceroute может отправить и ICMP-запрос «Echo Request», как Tracert. Такой способ пригодится, если хоп не отвечает на UDP-пакет.

Как использовать Traceroute

Traceroute запускается из командной строки или окна терминала. В Windows нажмите клавишу Win+x и выберите Windows PowerShell.

Чтобы запустить traceroute, запустите команду tracert, после которой укажите адрес веб-сайта. Например, если вы хотите запустить трассировку на ZaWindows, вы должны выполнить команду:

tracert zawindows.ru

На Mac или Linux вместо этого запустите

traceroute zawindows.ru

Постепенно вы увидите, как маршрут обретает форму, по мере того как ваш компьютер будет получать ответы от маршрутизаторов по пути.

Если вы запустите трассировку для другого веб-сайта, в частности, размещённого в другом регионе мира, вы увидите, как пути различаются. Первые «переходы» совпадают с трафиком, поступающим к вашему интернет-провайдеру, в то время как более поздние переходы отличаются, поскольку пакеты идут в другое место. Например, ниже вы можете увидеть пакеты, отправляемые на сайт Baidu.com в Китае.

Как выполнить трассировку многопутевого маршрута

Чтобы выполнить трассировку с поиском всех маршрутов запустите команду вида:

sudo dublin-traceroute ХОСТ

Например, для трассировки мультимаршрутов до хоста suip.biz:

sudo dublin-traceroute suip.biz

Пример вывода (только первые два экрана — информации на самом деле ещё больше):

Вам могут пригодиться следующие опции:

  -N --no-dns                   не пытаться делать обратные DNS преобразования для хопов
  -o --output-file              файл вывода (по умолчанию: trace.json)

Чтобы начертить график маршрутов на основании полученных данных:

python3 -m dublintraceroute plot trace.json

Пример построенных маршрутов показан в начале статьи.

Если вы использовали опцию -o и указали другое имя файла для сохранения результатов, то впишите его вместо trace.json.

Ещё один пример трассировки мальтимаршрутов:

sudo dublin-traceroute w-e-b.site

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».

Несколько советов о том, как читать и интерпретировать выводы результатов работы команды tracert

Во-первых, отмечу, что пользоваться командой tracert очень легко, на самом деле очень легко пользоваться любыми сетевыми утилитами, легко писать команды на сетевых устройствах, но понимать, как это всё работает, задача гораздо более сложная. Понимать выводы команды tracert тоже непросто, иногда даже невозможно их правильно интерпретировать.

Вы наверняка думает, что tracecrt позволяет вам правильно оценить задержку прохождения пакетов по сети, ведь так? Всё вроде бы очевидно, три раза отправили, три раза получили, взяли среднее арифметическое и получили среднее время, так? Нет, не так. У пакетов есть время распространения по сети, а у сетевых устройств есть такие факторы как сериализация и буферизация, они довольно сложные.

Когда вы используете tracert или traceroute не забывайте, что маршрутизатор, который будет отвечать на ваши запросы, обрабатывает эти запросы несколько иначе, чем полезный сетевой трафик, который проходит через него транзитом. Мы с вами делали трассировки до узлов Яндекса, Гугла и Майкрософта, мы получали определенные задержки на хопах, но при трассировке мы видим только маршрут «туда», обратный маршрут с вероятностью 90% будет отличаться, но у вас нет возможности сделать трассировку до себя с указанных серверов.

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

Провайдеры используют протоколы динамической маршрутизации, у которых есть функция балансировки трафика, часто до одного и того же сервера можно добраться по нескольким маршрутам. Иногда, когда вы делаете трассировку, ваш первый пакет «туда» идет одним маршрутом, а ваш второй пакет «туда» пойдет другим маршрутом.

Команда tracert только на первый взгляд кажется простой, на самом деле это не так, я сейчас даже не говорю про простых пользователей, многие админы умеют пользоваться tracert на уровне обезьяны и не хотят это исправлять, иначе не объяснишь их восприятие звездочек в выводе («это потери, ужас, мрак, хостер, провайдер, дата-центр, за что я плачу тебе 100 рублей?» обычно именно такие ребята поднимают поросячий визг из-за своей некомпетентности в вопросе, потому что те кто может платить больше, позволяют себе нанимать более компетентных людей, хотя это и не всегда так), например, вот так:

Если вы посчитали первый ответ потерей, то вам нужно изучать принцип работы tracert, а также помнить, что сетевое оборудование можно настраивать, в том числе и на работу с ICMP, а может это не потери, а роутер настроен таким образом, чтобы игнорировать часть запросов?

Tracert прекрасно справляется со своей задачей – она отображает путь, по которому проходит IP-пакет, а также время ответа транзитных роутеров/маршрутизаторов, но при помощи данной утилиты невозможно точно оценить потери и нельзя с уверенностью сказать – на каком участке сети потери происходят, чтобы оценить потери в компьютерной сети (здесь можно почитать про основные характеристики компьютерной сети), лучше воспользоваться стандартной утилитой Windows, которая называется pathping, либо более удобной программой WinMTR или mtr в операционных системах семейства Linux.