Traceroute и Tracert — утилиты-близнецы? Что такое трассировка сети
Для большинства поставщиков управляемых услуг (MSP), системных администраторов и технических специалистов, команды Traceroute и Tracert являются первыми сигналами для устранения неполадок, связанных с задержкой сети или проблемами с подключением. Но что это?
Что такое Traceroute и Tracert
Traceroute или Tracert – это утилита, служащая для диагностики сети. Она отслеживает пути, по которым пакеты данных проходят от источника к хосту назначения, что позволяет администраторам оперативно решить проблемы с подключением.
В Windows эта команда называется Tracert, а в Linux и MacOS – Traceroute.
Traceroute и Tracert в основном работают одинаково – они предоставляют информацию о пути пакета данных из одной точки сети на конкретный IP-сервер. Когда данные передаются между двумя точками, они должны проходить через несколько устройств (например, маршрутизаторы).
Traceroute сопоставляет каждый переход, предоставляет подробную информацию и время приёма-передачи (RTT), а также, по возможности, сообщает имя устройства и IP-адрес.
В то время как команда Ping может сообщить, есть ли проблема, Traceroute поможет вам точно определить, где именно она образовалась.
Представьте, что вы посещаете веб-сайт, и его страницы долго загружаются. В этом случае вы можете использовать Traceroute, чтобы определить, где происходят самые длительные задержки, чтобы добраться до источника самого сбоя.
Как работает Traceroute и Tracert?
- По протоколу UDP (User Datagram Protocol – «протокол пользовательских датаграмм») Traceroute отправляет последовательность IP-пакетов. Всего таких пакетов по умолчанию может быть 3.
- Первый пакет имеет время жизни (также известное как TTL (Time To Live) или лимит переходов), равное 1, второй пакет имеет TTL=2 и так далее.
- Каждый раз, когда пакет передается новому маршрутизатору, TTL уменьшается на 1. Это сделано для предотвращения проблем с зацикливанием между серверами. Если бы не было TTL, пакет мог бы бесконечно долго перебрасываться между серверами.
Когда время жизни достигает 0, пакет отбрасывается, а маршрутизатор возвращает сообщение об ошибке. Отправляя пакеты таким образом, Traceroute гарантирует, что каждый маршрутизатор на пути отклонит пакет и отправит ответ.
Всё о трассировке
Трассировка или точнее распределённая трассировка – это возможность отслеживать запросы по мере их прохождения через распределённые системы путём сбора данных о том, как они передаются от одной службы к другой.
Данные трассировки помогают понять поток запросов и определить, где в системе возникают сбои или проблемы с производительностью и почему.
Например, запрос может пройти через несколько служб и пройти туда и обратно через различные микрослужбы, чтобы достичь завершения.
Хотя трассировки существуют уже давно, тенденция к распределённым архитектурам, микросервисам и контейнеризации сделала их важной частью большой системы наблюдения. Ведь наличие механизма, позволяющего понять поток данных, необходимо для обслуживания серверов и устранения неполадок.
Трассировка, наряду с журналами и метриками, занимает важное место в системе. В то время как журналы предоставляют сведения о конкретных событиях, таких как обращение к базе данных и запись в файл или сообщение об ошибке, трассировка соединяет цепочку связанных событий.
Одна трассировка маршрута даёт представление о:
- каждом шаге, через который прошёл запрос;
- количестве времени, затраченном на каждое действие;
- общем времени, которое понадобилось на его обработку.
В то время, как журналы предоставляют подробные сведения об активности, выполняемой каждой службой в процессе, ведение журнала трассировки обеспечивает полную запись цепочки событий, инициированных первоначальным запросом.
Эта информация бесценна для отладки сложных проблем и оптимизации вашей системы.
Как работает трассировка?
Прежде чем перейти к трассировке, важно узнать, что приложения могут быть монолитными или микросервисными.
Монолитное приложение разрабатывается как единый функциональный модуль, в то время как приложение с микросервисной архитектурой разбивается на модульные службы, каждая из которых выполняет основную функцию приложения и часто управляется специальной командой.
Микросервисы используются для создания многих современных приложений, поскольку они упрощают тестирование и развёртывание быстрых обновлений, а также предотвращают возникновение единой точки отказа.
Но устранение неполадок с микрослужбами может оказаться сложной задачей, поскольку они часто работают на базе сложной серверной архитектуры, а запросы могут включать в себя последовательности вызовов нескольких служб.
Используя трассировку, разработчики могут визуализировать весь путь запроса – от интерфейса к серверу – и точно определить любые сбои производительности, которые возникают на этом пути.
Платформы трассировки начинают собирать данные в момент подачи запроса. Например, когда пользователь отправляет форму на веб-сайте. Это создаёт уникальный идентификатор трассировки.
Этот процесс позволяет идентифицировать каждый запрос, вызов и процесс и соответствующим образом расставлять приоритеты в своих усилиях по устранению неполадок.
Для получения результатов трассировки в том числе используются команды Traceroute и Tracert.
Разница между Traceroute и Tracert
Принцип работы у Traceroute и Tracert один, однако разница между ними состоит не только в операционных системах.
Напоминаем, что команда Tracert обслуживает Windows, а Traceroute работает на Linux и MacOS.
- Tracert, в отличие от своего Linux-двойника, реализован на основе протокола ICMP, а не UDP.
- Tracert отправляет эхо-запрос ICMP (ICMP Echo Request) с TTL=1.
- Первый маршрутизатор проверяет адрес назначения, чтобы выяснить был ли отправлен запрос именно ему.
- Узнав, что цель пакета – другой хост, маршрутизатор отбрасывает его, и TTL становится равным 0.
- Затем маршрутизатор 1 отправляет ICMP-сообщение с указанием информации о себе и причине проблемы источнику пакета: «Time-To-Live Exceeded» или «Time Exceeded in transit».
- Благодаря этому сообщению Tracert записывает маршрутизатор 1 как первый транзитный участок или, как его ещё называют, «хоп, прыжок».
Процесс передачи пакета между промежуточными маршрутизаторами продолжится, пока переменная (TTL ICMP-запроса), не станет равна количеству «прыжков» между узлом-отправителем и узлом-получателем, и пакет не будет получен хостом назначения или количество сетевых переходов не превысит максимальное значение для Tracert – 30.
- Когда целевой хост проверит IP-адрес назначения и узнает, что запрос был направлен именно ему, он отправит эхо-ответ ICMP (ICMP Echo Request), что даст утилите понять, что процесс передачи завершён.
В чём ещё отличие Traceroute от Tracert? В Traceroute схема схожая, практически идентичная.
Целевому хосту направляется фрагментированный UDP-запрос. Таким образом, отправляется сразу несколько пакетов с TTL: TTL=1, TTL=2 и TTL=3.
Вот только раз эта утилита не отправляет эхо-запрос ICMP, как она понимает, что трассировка подошла к концу?
Всё просто: в каждом пакете содержатся данные о порте отправителя (Source) и порте получателя (Destination). Destination порт по умолчанию закрытый (34434), поэтому утилита Traceroute сразу понимает, что процесс передачи данных завершён, когда получает ответ с сообщением о недоступности порта «Destination port unreachable» (Хост/Порт недостижим). Иными словами, запрос достиг целевого хоста.
Как использовать Traceroute и Tracert?
В основном пользователи могут использовать команду Traceroute или Tracert через обычную командную строку. Однако точный метод его запуска зависит от операционной системы компьютера.
Давайте посмотрим, как запустить команду Traceroute или Tracert в Windows, Linux и macOS.
- Перейдите в меню Пуск.
- Выберите Выполнить.
- Введите cmd и нажмите ОК. Это откроет командную строку.
- Введите команду tracert и затем впишите имя хоста или IP-адрес назначения. Пример: tracert www.nic.ru
- Нажмите Enter.
- Откройте приложение Терминал. Это можно сделать при помощи сочетания клавиш CTRL + Shift + T.
- Впишите команду traceroute вместе с именем хоста или IP-адресом. Пример: traceroute www.nic.ru
- Нажмите Enter.
Раньше это действие можно было выполнить через встроенное приложение Сетевая утилита, но на данный момент она не поддерживается компанией Apple. Поэтому:
- Запустите приложение Терминал.
- Введите команду traceroute и имя хоста или IP-адрес назначения. Пример: traceroute www.nic.ru
- Нажмите Enter.
Также можно добавить дополнительные параметры в команду Traceroute или Tracert, чтобы сделать ваши результаты более точными. Вот некоторые расширенные параметры трассировки:
Команда | Описание |
-d | Команда Traceroute в Linux по умолчанию отправляет пробные пакеты UDP. Вы можете использовать эту опцию, чтобы преобразовать их в пакеты ICMP. |
-h maximum_hops | Укажите максимальное количество переходов, включённых в процесс Tracert. Если вы не измените значение, оно будет соответствовать максимальному значению по умолчанию, равному 30 хопам. |
-n | Поможет исключить доменные имена из результатов Traceroute. |
-q number of packets | По умолчанию Traceroute отправляет три пакета. Вы можете изменить это число с помощью этой опции, за которой следует указать нужное количество пакетов. |
-m max_ttl | Укажите максимальное количество переходов для процесса трассировки. Значение по умолчанию равно 30. |
-w wait_time | Установите максимальное время ожидания для каждого ответа. |
-p | Установите порт назначения для запроса. |
-f | Укажите с какого TTL начать. По умолчанию значение равно 1. |
-4 | Задействование протокола IPv4. |
-6 | Задействование протокола IPv6. |
Как читать результаты Tracert
После выполнения команды Tracert или Traceroute система представит результаты в виде множества строк. Отчёт может несколько отличаться в зависимости от вашей операционной системы, но обычно он содержит одну и ту же информацию.
Стандартные результаты Tracert или Traceroute включают в себя несколько строк, описывающих каждый переход, который проходит пакет для достижения хоста назначения. Каждая строка разделена на столбцы с различной информацией.
Давайте рассмотрим каждый столбец и его детали.
Число хопов | Имя хоста/IP-адрес | RTT 1 | RTT 2 | RTT 3 |
5 | 83.169.204.90 | 182.729 ms | 174.127 ms | 165.767 ms |
8 | 192.168.43.1 | 5.735 ms | 8.287 ms | 6.694 ms |
9 | 198.18.8.1 | 24.408 m | 33.209 ms | 26.241 ms |
Число хопов – первый столбец количество сделанных “прыжков”.
IP-адрес или имя хоста – этот столбец раскрывает IP-адрес или имя хоста устройства на этом конкретном переходе.
RTT – это круговая задержка или время приёма-передачи, которое показывает, сколько времени требуется каждому пакету, чтобы достичь определенного IP-адреса и вернуться на ваш компьютер. Существует три разных столбца RTT, так как Traceroute по умолчанию отправляет три UDP-пакета.
Если время трассировки истекает на определенном узле, это может означать, что в данном месте возникла проблема или что маршрут неверен, что не позволяет пакету достичь пункта назначения. В результатах это представлено как:
Число хопа | Имя хоста/IP-адрес | RTT 1 | RTT 2 | RTT 3 |
13 | (Request timed out.) | * | * | * |
Заключение
Команда Traceroute и Tracert – это полезный и простой в использовании инструмент диагностики сети. Как правило, это ещё и первый способ устранения неполадок с подключением.
В этой статье вы узнали, чем эта утилита может отличаться в зависимости от вашей операционной системы, как использовать команду и читать полученные результаты.