Между домашним компьютером и любым сайтом лежит не прямая линия, а длинная цепочка промежуточных маршрутизаторов. Пакет данных перепрыгивает с одного устройства на другое, пока не доберётся до цели, и на каждом таком прыжке его может задержать или потерять. Когда сайт открывается медленно или вовсе недоступен, а собственный канал работает, виновник почти всегда прячется где-то посреди этой цепочки. Увидеть весь путь и вычислить проблемный узел позволяет трассировка - встроенный механизм Windows, не требующий никаких сторонних программ. Она показывает каждый промежуточный маршрутизатор вместе со временем отклика, и по этой картине читается, где именно сломался путь.
Маршрут пакета строится по принципу прыжков. Каждый промежуточный узел называется прыжком, или hop на профессиональном языке. Трассировка работает хитро: она отправляет пакеты с нарастающим ограничением на число прыжков, и каждый узел, исчерпавший лимит, вынужден сообщить о себе. Так утилита поочерёдно вскрывает каждый шаг пути, измеряя время до него. В итоге получается полная карта маршрута с задержками на каждом участке.
Построение полного маршрута до целевого узла
Основной инструмент трассировки в Windows - команда tracert. Простейший вызов с именем или адресом цели строит весь путь:
tracert ya.ru
Вывод появляется построчно, по мере вскрытия каждого прыжка. Каждая строка содержит номер прыжка, три значения времени отклика в миллисекундах и адрес или имя узла. Три замера на строку нужны не случайно: они показывают стабильность отклика конкретного узла. Если все три близки, узел отвечает ровно. Если скачут, узел нестабилен. Звёздочка вместо времени означает, что узел не ответил в отведённый срок. Полный путь обычно укладывается в полтора-два десятка прыжков для большинства целей внутри страны, а до зарубежных серверов цепочка длиннее.
Ускорение трассировки отключением перевода адресов в имена
По умолчанию трассировка для каждого узла пытается узнать его буквенное имя, и это сильно замедляет вывод, потому что на каждый адрес уходит отдельный запрос к службе имён. Когда нужны только цифры и скорость, перевод отключают ключом -d:
tracert -d ya.ru
С этим ключом трассировка идёт заметно быстрее и показывает чистые числовые адреса узлов. Это особенно удобно, когда служба разрешения имён сама работает медленно: иначе долгие запросы имён маскируют реальную картину задержек на маршруте. Для первичной быстрой оценки пути этот режим предпочтителен, а полные имена узлов запрашивают потом отдельно, если они действительно нужны для понимания, чьё это оборудование.
Ограничение глубины трассировки для проверки ближних участков
Иногда не нужен весь длинный путь, достаточно проверить ближайшие узлы. Глубину трассировки задаёт ключ -h с максимальным числом прыжков:
tracert -h 5 ya.ru
С таким ограничением трассировка вскроет только первые пять прыжков и остановится. Это полезно для проверки именно домашнего и провайдерского участка, где обычно и кроются проблемы доступа. Первый прыжок - почти всегда собственный роутер, второй и третий - оборудование провайдера, дальше начинается магистральная сеть. Ограничив трассировку первыми прыжками, быстро понимают, на своей стороне затык или уже за пределами зоны провайдера. Управлять временем ожидания ответа от каждого узла помогает ключ -w с числом миллисекунд:
tracert -w 1000 ya.ru
Здесь утилита ждёт ответа от каждого узла до одной секунды, прежде чем поставить звёздочку. Увеличение ожидания убирает ложные звёздочки на медленных, но рабочих узлах, а уменьшение ускоряет трассировку ценой возможных пропусков.
Расширенный анализ потерь на каждом узле маршрута
У обычной трассировки есть слабое место: она показывает время отклика, но почти не считает потери на промежуточных узлах. Этот пробел закрывает команда pathping, которая объединяет трассировку с подробной статистикой потерь по каждому прыжку:
pathping ya.ru
Команда работает в две фазы. Первая фаза за секунды строит маршрут, как обычная трассировка. Вторая фаза - долгий сбор статистики, около 25 секунд опроса на каждый узел пути. По длинной цепочке полный отчёт собирается несколько минут, зато на выходе получается таблица с процентом потерь на каждом без исключения прыжке. Именно эта таблица отвечает на главный вопрос диагностики: не просто где медленно, а где конкретно теряются пакеты. Часто оказывается, что задержка растёт постепенно и это нормально для длинного пути, а вот резкий процент потерь на одном узле в середине - это и есть настоящий виновник проблем, перегруженный или неисправный маршрутизатор на стыке сетей.
Просмотр локальной таблицы маршрутов перед трассировкой
Прежде чем винить дальние узлы, стоит заглянуть в собственную таблицу маршрутов компьютера. Именно она решает, через какой шлюз отправить пакет к каждой цели. Если первый прыжок трассировки ведёт не туда, корень проблемы дома, а не в сети провайдера. Вывод таблицы делается командой:
route print
Главная строка здесь - маршрут по умолчанию, обозначенный адресом 0.0.0.0 с маской 0.0.0.0. Через него уходит весь трафик к внешним адресам, и шлюз в этой строке должен совпадать с адресом домашнего роутера. Если там стоит чужой или неверный шлюз, трассировка уйдёт по неправильному пути с самого первого прыжка. Иногда лишние ручные маршруты, добавленные когда-то программами или вручную, перехватывают трафик к отдельным сетям и уводят его в никуда. Удалить ошибочный маршрут помогает команда с указанием цели от имени администратора:
route delete 10.0.0.0
После очистки лишних маршрутов трассировка снова идёт через правильный шлюз. Этот шаг особенно важен, когда проблема касается только части ресурсов: одни сайты открываются, другие нет. Такая избирательность почти всегда выдаёт ошибочную запись в локальной таблице маршрутов, уводящую трафик к определённым сетям по неверному пути.
Сравнение маршрутов до разных целей для локализации сбоя
Один из сильнейших приёмов диагностики - сравнить трассировки до нескольких разных целей. Если все маршруты ломаются на одном и том же узле, виновник найден однозначно: это общий для них участок пути, обычно ближе к дому. Если же каждая цель ломается на своём узле, проблема рассеяна по дальним участкам и, скорее всего, не на стороне пользователя. Для сравнения снимают трассировки до нескольких разнесённых целей подряд:
tracert -d 8.8.8.8
tracert -d 1.1.1.1
tracert -d ya.ru
Три цели выбраны намеренно разными, чтобы их пути расходились как можно раньше. Совпадение точки обрыва на всех трёх указывает на общий ближний узел, чаще всего оборудование провайдера или собственный роутер. Расхождение точек обрыва означает, что ближний участок исправен, а проблемы возникают уже в дальних, не зависящих от пользователя частях сети. Этот перекрёстный анализ за три быстрые команды отвечает на главный вопрос: чинить у себя или ждать восстановления на стороне. Без сравнения одиночная трассировка такого ответа не даёт, потому что обрыв на дальнем узле легко принять за общую неисправность.
Современная трассировка средствами оболочки PowerShell
Помимо классической tracert, в оболочке PowerShell есть собственный инструмент трассировки, который возвращает результат удобными объектами и легче поддаётся автоматизации. Команда Test-NetConnection с ключом трассировки строит путь к цели:
Test-NetConnection ya.ru -TraceRoute
В выводе помимо самого маршрута видно, удалось ли вообще установить связь с целью, какой адрес у неё определился и через какие узлы прошёл путь. Преимущество этого инструмента в том, что он совмещает проверку связи и трассировку в одной команде, сразу отвечая, доступна цель или нет. Та же команда умеет проверять доступность конкретного порта на удалённом узле, что дополняет картину маршрута:
Test-NetConnection ya.ru -Port 443
Здесь проверяется не просто прохождение пакетов, а готовность удалённого узла принять соединение на нужном порте. Бывает, что трассировка доходит до цели, а нужная служба на ней всё равно недоступна, потому что закрыт конкретный порт. Сочетание трассировки маршрута и проверки порта отделяет проблему пути от проблемы самой службы на сервере. Если путь чист, а порт закрыт, дело не в сети между узлами, а в настройках или работе самого удалённого сервера, и дальнейшие поиски в сетевом пути бессмысленны. Это разграничение экономит много времени, направляя усилия туда, где действительно кроется причина, вместо бесконечной проверки исправного маршрута.
Чтение результатов трассировки и типичные картины
Грамотное чтение вывода важнее самой команды. Несколько типичных картин помогают сразу поставить диагноз. Если задержка плавно растёт от прыжка к прыжку и доходит до цели без резких скачков, маршрут здоров, просто цель далеко. Если на каком-то узле время резко подскакивает и остаётся высоким до конца, найден перегруженный участок, и все узлы за ним наследуют его задержку. Если трассировка обрывается звёздочками на середине и до цели не доходит, путь разорван на последнем отвечавшем узле или сразу за ним.
Отдельная распространённая ситуация - звёздочки на одном узле посреди пути, после которых трассировка спокойно продолжается дальше до цели. Это не поломка: многие маршрутизаторы намеренно игнорируют служебные запросы трассировки, экономя ресурсы, но при этом исправно пропускают обычный трафик. Поэтому пропуск одного узла при доходящей до цели трассировке - не повод для тревоги. Тревожен именно обрыв до цели или стабильно высокая задержка с одного конкретного прыжка и до конца. Различать эти картины - ключевой навык, который превращает набор цифр в ясный диагноз.
Практическое применение трассировки в разговоре с провайдером
Главная польза трассировки проявляется при общении с техподдержкой провайдера. Расплывчатая жалоба на медленный интернет легко отбивается ответом, что у них всё работает. Но трассировка даёт неоспоримый аргумент: она показывает конкретный узел с высокой задержкой или потерями, и если этот узел принадлежит самому провайдеру, отпираться сложнее. Чтобы сохранить результат для отправки в поддержку, вывод перенаправляют в файл:
tracert ya.ru > C:\trace.txt
Стрелка перенаправляет весь вывод в текстовый файл, который потом прикладывают к обращению. Снятая в момент проблемы трассировка с указанием проблемного узла превращает спор кто виноват в предметный разговор по фактам. Если же проблемный узел оказывается за пределами сети провайдера, в магистральной части интернета, это тоже ценное знание: значит, чинить на своей стороне нечего, остаётся ждать восстановления у дальнего оператора или искать обходной путь к нужному ресурсу.
Трассировка и расширенный анализ потерь - это рентген сетевого пути. Они превращают невидимую цепочку маршрутизаторов в наглядную карту с задержками и потерями на каждом шаге.
Стоит помнить и об ограничениях инструмента. Современные сети нередко устроены так, что пакеты к одной цели идут не всегда одним путём, а распределяются между несколькими параллельными маршрутами для балансировки нагрузки. В этом случае соседние прыжки трассировки могут относиться к разным физическим путям, и картина слегка размывается. Поэтому единичную трассировку полезно повторить несколько раз: если проблемный узел всплывает стабильно от запуска к запуску, он реален, а если мелькает то тут, то там, дело в балансировке, а не в поломке. Несколько повторов отделяют устойчивую неисправность от случайного разброса, и только устойчивая картина годится для выводов.
Освоив чтение этой карты, администратор перестаёт гадать и начинает точно указывать пальцем на сломанный участок, будь то собственный роутер, оборудование провайдера или дальний узел в глубине сети. Всё, что для этого нужно, уже встроено в систему, остаётся лишь научиться задавать правильные команды и спокойно читать их ответ, отделяя настоящие проблемы от безобидных особенностей работы промежуточных узлов.