dr.Brain

doctor Brain

мир глазами веб-разработчика

Командная строка: traceroute

трассируем сеть с помощью traceroute

dr.Brain

время чтения 2 мин.

Photo by Martin Vysoudil on Unsplash

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

Итак, как узнать через какое количество сетевых узлов проходят наши данные?

Этот вопрос имеет большое практическое значение: например, происходит сбой при передаче данных. Команда ping позволит только установить факт недоступнсти конечного ресурса. Узнать на каком этапе происходит сбой при передаче данных можно с помощью трассировки сети. Именно для этого предназначена команда traceroute.

Общий синтаксис команды имеет вид:

traceroute <host>

Например, посмотрим, какой результат даст попытка достучаться до сервера, на котором размещен хост drbrain.ru

traceroute drbrain.ru

Пример фрагмента результата выполнения команды выглядит так:

23  74.125.253.115 (74.125.253.115)  194.986 ms
    172.253.66.177 (172.253.66.177)  199.870 ms
    142.250.57.49 (142.250.57.49)  335.145 ms
24  * * *
25  * * *
26  232.44.185.35.bc.googleusercontent.com (35.185.44.232)  203.374 ms  201.985 ms  191.035 ms

Для достижения целевого хоста пакет прошел через 26 сетевых узлов. Можно заметить, что в ответ на команду traceroute не каждый сервер возвращает значимую информацию (название хоста, IP-адрес и время обработки запроса), иногда в ответе можно увидеть:

* * *

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

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

Однако, количеством пакетов можно управлять с помощью опции -q:

traceroute -q 1 drbrain.ru

По умолчанию команда traceroute отправляет UDP-пакеты на любой порт, который с наибольшей вероятностью может быть свободным. В случае, когда приходит ответ о недоступности порта, команда считается завершенной. Однако, неудачная трассировка может быть связана и с тем, что firewall блокирует UDP-пакеты. В таком случае с помощью опции -l можно перейти на ICMP:

traceroute -l drbrain.ru

Спасибо за внимание.

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.