что такое трассировка сети
Утилиты Traceroute и Tracert
Traceroute — это утилита, которая позволяет проследить маршрут следования данных до удалённого адресата в сетях TCP/IP. В Linux используется команда Traceroute, а в Windows — Tracert. При помощи этих команд можно увидеть путь пакета данных от вашего компьютера до целевого сервера или сайта.
Как работают 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-пакет.
Что такое трассировка маршрута в Windows (tracert) и Linux (traceroute): разбор Бородача
Всем привет! Как вы уже поняли, сегодня я подробно, но максимально кратко попробую рассказать про то – что же такое трассировка маршрута в локальных и глобальных сетях. Также расскажу, в чем отличие измерения трассировки в Windows и Linux. Некоторые думают, что при вводе примерно одинаковых команд инженер будет получать одну и ту же информацию, но на деле это не совсем так – об этом поподробнее чуть ниже. Если у вас будут какие-то вопросы и дополнения, то пишите в комментариях.
Определение
Трассировка – по сути это тестирование, при котором пользователь может увидеть, по какому пути проходит пакет данных до конечного сервера. То есть через какие узлы он проходит и с какой задержкой. Например, при стандартной команде «Ping» вы получите информацию о времени отклика или время отправки и приема пакета. А при трассировке вы увидите через какие IP узлов проходит этот самый пакет до конечного сервера.
Часто данной утилитой пользуются инженеры или системные администраторы, чтобы выявить слабые стороны сети. В общем, штуковина полезная почти для всех. Далее я расскажу, как сделать трассировку до сайта или до выделенного игрового сервера, а также как вообще ею пользоваться.
Windows
В «окнах» данную функцию выполняет системный модуль или утилита «Tracert». Как вы понимаете она расположена в папке «System32», как и другие подобные микропрограммы. Для запуска обычно нужно использовать командную строку. Утилита спокойно работает как с доменными именами, так и с IP адресами, в том числе IPv4 и IPv6. Также плюс в том, что её не нужно устанавливать и она идет в стандартном пакете Windows на всех версиях: XP, 7, 8, 8.2 и 10.
А теперь давайте попробуем её использоваться. Для этого вам нужно запустить командную строку. В Windows 7 переходим в «Пуск» – «Все программы» – открываем папку «Стандартные», а после этого нажимаем правой кнопкой по командной строке и открываем с правами администратора.
ПРИМЕЧАНИЕ! Также можно открыть через + R и команду «CMD».
В Windows 10 достаточно нажать правой кнопкой по «Пуску» и далее выбрать консоль с админ правами.
Далее все делается достаточно просто – сначала прописываем команду «tracert», а потом через пробел выписываем IP адрес сервера. Я в качестве примера использовал один известный DNS серверов:
Плюс ещё в том, что можно использовать не только IP, но также и доменное имя, которое состоит из букв. Давайте для примера проведем тест с Яндексом:
tracert yandex.ru
Тут мы видим вид нескольких шагов. Каждый шаг – это прохождение пакета от одного узла к другому. Так же вы видите время прохождения, которое пишется в миллисекундах. Далее вы видите название узла и IP адрес, который указан в скобках. Если же узел не сможет ответить или время ожидания будет превышено, то в столбце времени вы увидите звёздочку (*).
А теперь давайте я расскажу про проблему данного тестирования. Проблема состоит в том, что команда не показывает некоторые узлы, а именно коммутаторы, которые работают со вторым уровнем модели OSI. А все из-за того, что у них нет интерфейсного представления подключенных устройств в IP виде. То есть коммутация происходит на втором уровне, где нет IP адресов, а связь идет с помощью таблицы MAC-адресов. И понятно дело, что в таблице такие узлы не отображаются.
Более подробно советую также почитать про модель OSI и про коммутаторы.
В итоге для данной команды все коммутаторы, работающие со вторым уровнем модели OSI – просто невидимы. «Tracert» использует ICMP (Internet Control Message Protocol) протокол, которые передает данные только в IP пакете, со значением TTL. TTL – это время жизни пакета.
Изначально при отправке пакета на первый узел значение TTL равно единице. И при трассировке отправляется сразу три пакета – именно поэтому мы видим три столбца времени. Если все пакеты приходят обратно, то мы видим время по всем трем столбцам. Далее TTL увеличивается на единицу, и отправляется ещё три пакета на следующий узел. И так до победного конца, пока последний запрос не достигнет конечного узла.
ПРИМЕЧАНИЕ! Если вы видите звездочку, но пакет все равно идет через данный узел, то скорее всего на данном маршрутизаторе или сервере есть настройка, которая не обрабатывает ICMP запросы. Очень часто их используют для DDoS атак – поэтому их обработку иногда отключают.
Как у любой утилиты тут есть список дополнительных параметров, которые могут немного изменить тестирования. Для вызова нужно ввести:
Команда очень полезная не только для работы и тестирования рабочих сетей, но даже для выявления проблем с интернетом. Помню у моего друга постоянно был высокий отклик в «Counter-Strike», но он все никак не мог понять почему – ведь у меня в соседнем доме был пинг на порядок меньше. При трассировке он увидел, что на первом (провайдерском) узле есть сильный застой пакетов. В итоге он обратился к оператору, и им поменяли старый коммутатор, который стоял там, неверное ещё с эпохи Российской Империи.
Linux
Итак, в Windows мы уже разобрались, что трассировку выполняет утилита «tracert.exe». В Linux утилита имеет другое название: «traceroute», – и также выполняет данную функцию, но немного по-другому.
Вспомним немного как работает tracert на примере нижней картинки:
А проблем в том, что у «tracert» нет возможности сделать запрос с портом, что делает его немного узконаправленным. «Traceroute» работает на основе совершенно другого протокола – UDP. По сути UDP протокол делает запрос именно по портам. А окончание трассировки при достижении пакетом конечного узла происходит в том случае, когда при каждом шаге при увеличении номера порта он становится закрытым на конечном сервере.
Запускаем программу аналогично через консоль. Также у неё есть свои параметры.
Кстати, есть возможность при трассировке использовать не UDP, а ICMP протокол, для этого нужно дописать параметр «-I».
Но что делать, если надо на Windows сделать трассировку по UDP протоколу и использование портов? Для этого нужно будет использовать стороннюю микропрограмму: «tcptrace». Для трассировки маршрута по TCP (и UDP) можно использовать «tcptraceroute».
Что такое трассировка (tracert)
В это теме мы подробно расскажем как это и зачем это нужно. Рассказывать будем все это для пользователей Windows. Предполагается, что пользователи других ОС достаточно продвинуты, что бы и так знать как им сделать аналогичные манипуляции, либо могут найти инструкции в Интернет сети без моей помощи. Сначала немного теории:
Зачем нужна трассировка? Иногда тот или иной сайт (как правило, вас волнует ваш сайт) вам недоступен. У этого могут быть разные причины:
Трассировка поможет идентифицировать ситуацию. И, обращаясь в службу поддержки с проблемой о недоступности сайта, вам стоит сразу присылать данные команды tracert. Это сэкономит время, и позволит быстрее начать решать проблемы по существу. Так же, перед тем как писать о том, что ваш сайт недоступен, стоит попытаться определить ваша личная это проблема или носит глобальный характер.
Если сайт недоступен полностью, скорее всего мы об этом знаем, хотя никто не запрещает вам еще раз нам напомнить об этом. Главное что бы ваши гневные письма не отвлекли нас от решение самой проблемы, переключив внимание на ответ вам.
Для того, чтобы ориентировочно определить с чем связана проблема, вам стоит попробовать открыть сайт в другом браузере и убедиться, что в нем он так же не открывается, если в другом браузере открылся, значит это проблема с вашими настройками браузера или фаервола. Попросить кого-то из ваших знакомых, пользующихся другим провайдером, а лучше живущих в другом регионе зайти на сайт. Если им удается благополучно зайти, а вам нет, скорее всего проблемы у вашего провайдера или на канале, хотя возможно и другие варианты. В этом случае как раз и стоит сделать трассировка, она поможет идентифицировать проблему.
Так же, в качестве аналога обращения к знакомым, можем порекомендовать воспользоваться специализированными сервисами мониторинга доступности сайтов. Например: http://host-tracker.com/
Зайдя по указанной ссылке, вводите адрес сайта и нажимаете кнопку «check». Спустя некоторое время сервис покажет статусы доступности проверяемого сайта из разных точек мира. Если выдается результат «Ok», значит, опять же, речь идет о вашей локальной проблеме.
Как же сделать трассировку? Нажимаем «Пуск» далее нажимаем «Выполнить». Там латинскими буквами без кавычек пишем «cmd» и нажимаем «Ок» (либо «Enter»):
В появившемся командной строке опять же без кавычек пишем «tracert адрес интересующего сайта». Например, если трассеруем ucoz.ru, пишем «tracert ucoz.ru» и нажимаем ввод («Enter»).
Как проверить ping и трассировку через командную строку
В сети интернет, в частности, на форумах, в случае возникновения проблемы с подключением к какому-либо узлу (серверу), рекомендуют проверить пинг или выполнить трассировку маршрута и таким образом проверить доступность сервера.
Но что такое пинг и что такое трассировка? Пинг (ping) – это инструмент (утилита) для проверки целостности соединения в сетях на основе TCP/IP. Трассировка (traceroute или tracert команда) – это программа для определения маршрутов следования данных в сетях TCP/IP.
Однако не всегда можно встретить информацию о том, как именно выполняется эта проверка: как пинговать или как сделать трассу.
Содержание
Проверка пинга
Для проверки пинга используется одноименная команда ping, которую необходимо вводить в командной строке. Запустить командную строку можно следующими способами:
В данной ОС существует множество терминалов, поэтому для этих целей можно использовать любой из установленных на ПК. Обычно стандартный терминал можно запустить сочетанием клавиш CTRL+ALT+T.
Итак, чтобы пропинговать определенный сервер, необходимо выполнить команду:
Например, для пинга адреса 11.222.33.44 необходимо выполнить команду:
Ниже приведён пример результатов выполнения пинга одного из IP адресов.
Как видно из результатов, было передано и получено 4 пакета размером 32 байта. Время обмена одним пакетом составило 47 милисекунд.
Стоит отметить, что в Windows по умолчанию выполняется отправка только 4 пакетов. В Linux обмен пакетами продолжается до тех пор, пока пользователь самостоятельно не остановит процесс сочетанием клавиш CTRL+C. Чтобы запустить ping аналогичным образом в Windows, необходимо использовать параметр -t. Например:
Остановка обмена пакетами выполняется тем же сочетанием клавиш – CTRL+C.
Установка количества отправляемых пакетов
Чтобы задать максимальное количество отправляемых пакетов, необходимо использовать команду следующего вида:
Изменение размера отправляемых пакетов
Чтобы выполнить ping с использованием пакетов определенного размера (в байтах), необходимо использовать следующую команду:
В данном случае производилась отправка пакетов размером в 64 байта.
Проверка трассировки
Трассировка маршрута может показать скорость прохождения пакетов между маршрутизаторами, которые соединяют ПК, с которого идут запросы, и конечный сервер.
Для выполнения трассировки используется следующая команда:
Стоит отметить, что по умолчанию при трассировке также выполняется DNS-запрос на разрешение IP адреса в доменное имя для каждого проходящего маршрутизатора. Эту опцию можно отключить, таким образом, сократив время получения результатов трассировки.
Чтобы активировать эту опцию необходимо использовать следующий вид команды:
Как использовать трассировку для выявления сетевых проблем
Traceroute — это инструмент командной строки, входящий в состав Windows и других операционных систем. Наряду с командой ping, это важный инструмент для понимания проблем с подключением к Интернету, включая потерю пакетов и высокую задержку.
Если у вас возникли проблемы с подключением к веб-сайту, traceroute может сказать вам, в чем проблема. Она также может помочь визуализировать путь трафика между вашим компьютером и веб-сервером.
Как работает Traceroute
Когда вы подключаетесь к веб-сайту — скажем, zawindows.ru — трафик должен пройти через нескольких посредников, прежде чем попасть на сайт. Трафик проходит через ваш локальный маршрутизатор, маршрутизаторы вашего интернет-провайдера в более крупные сети и так далее.
Traceroute показывает нам путь, по которому трафик достигает веб-сайта. Она также отображает задержки, возникающие на каждой остановке. Если у вас возникают проблемы с доступом к веб-сайту, и этот веб-сайт работает правильно, возможно, проблема где-то на пути между вашим компьютером и серверами веб-сайта. Traceroute покажет вам, где эта проблема.
Мы использовали traceroute, чтобы объяснить и продемонстрировать, кто предоставляет интернет-услуги вашему интернет-провайдеру.
Говоря техническим языком, traceroute отправляет последовательность пакетов, используя протокол ICMP (тот же протокол, который используется для команды ping). Первый пакет имеет время жизни (также известное как TTL или предел скачков), равное 1, второй пакет имеет TTL 2 и так далее. Каждый раз, когда пакет передаётся новому маршрутизатору, TTL уменьшается на 1. Когда он достигает 0, пакет отбрасывается, и маршрутизатор возвращает сообщение об ошибке. Отправляя пакеты таким образом, traceroute гарантирует, что каждый маршрутизатор на пути отбрасывает пакет и отправляет ответ.
Как использовать Traceroute
Traceroute запускается из командной строки или окна терминала. В Windows нажмите клавишу Win+x и выберите Windows PowerShell.
Чтобы запустить traceroute, запустите команду tracert, после которой укажите адрес веб-сайта. Например, если вы хотите запустить трассировку на ZaWindows, вы должны выполнить команду:
На Mac или Linux вместо этого запустите
Постепенно вы увидите, как маршрут обретает форму, по мере того как ваш компьютер будет получать ответы от маршрутизаторов по пути.
Если вы запустите трассировку для другого веб-сайта, в частности, размещённого в другом регионе мира, вы увидите, как пути различаются. Первые «переходы» совпадают с трафиком, поступающим к вашему интернет-провайдеру, в то время как более поздние переходы отличаются, поскольку пакеты идут в другое место. Например, ниже вы можете увидеть пакеты, отправляемые на сайт Baidu.com в Китае.
Что означает вывод tracert
Основная идея не требует пояснений. Первая строка представляет ваш домашний роутер (при условии, что вы находитесь за маршрутизатором, может быть вариант, что ваш компьютер подключён к Интернет-провайдеру напрямую, без роутера), следующие строки представляют вашего интернет-провайдера, а каждая нижняя строка представляет маршрутизатор, который находится дальше.
Формат каждой строки следующий:
Теперь вы сможете использовать команду tracert и понимать её вывод.