Бывают в сетевой жизни (особенно у dial-up юзеров 😉 моменты, когда невозможно достучаться до какого-нибудь хоста (у меня это часто www.microsoft.com ;-|) - здесь то на помощь и придет эта утилита (в Windows - tracert.exe). С ее помощью можно попытаться определить на каком участке IP-сети произошел сбой - то ли хост упал, то ли у провайдер тормоза, или у тебя с IP-соединением хреново :).

Но за что я по-настоящему люблю tracert - так это за те возможности исследования IP-сетей, которые он дает - а они бывают разные, по масштабам и по целенаправленности ;). Первым шагом может стать исследование подсети своего провайдера. С помощью traceroute ты можешь исследовать саму сети, применяя на практике полученные теоретические знания - о маршрутизации, серверах DNS, бэкбонах, системах подсетей, да мало ли о чем еще ;).

Как это работает?

Для начала нужно вспомнить формат заголовка IP-пакета, точнее одно из его полей - TTL (Time To Live). Это восьмибитное поле задает максимальное число хопов (hop - "прыжок" - прохождение дейтаграммы от одного маршрутизатора к другому) в течение которого пакет может находиться в сети. Каждый маршрутизатор, 
обрабатывающий эту дейтаграмму, выполняет операцию TTL=TTL-1. Когда TTL становится равным нулю, маршрутизатор уничтожает пакет,
отправителю высылается ICMP-сообщение Time
Exceeded.

Утилита посылает в направлении заданного хоста пакет с TTL=1, и ждет, от кого вернется ответ time exceeded. Отвечающий записывается как первый хоп (результат первого шага на пути к цели). Затем посылаются последовательно пакеты с TTL=2, 3, 4 и т.д. по порядку, пока при некотором значении TTL пакет не достигнет цели и не получит от нее ответ.

*nix traceroute посылает в сторону заданного хоста UDP-пакеты на произвольный порт - скорее всего не занятый другим сервисом (например 28942, 30471) или на зарезервированный, например 0, умолчанию - 33434. Сначала посылается серия из 3-х таких пакетов с TTL=1, по приходу ответов замеряется время прохождения и определяется доменное имя транзитного узла (хотя это зависит от заданных опций). Затем, посылаются очередные серии пакетов с одинаковым TTL, предназначенных для выявления одного и того же хопа. В конце мы получаем от конечного хоста отклик port unreachable (порт недоступен), что означает завершение трассировки.
Стандартный консольный Windows tracert работает точно также, но посылает только ICMP echo request пакеты.

Сам я охотно пользуюсь как стандартным tracert, так и вшитым в CyberKit (достаточно неплохой утилитой
еще является Necrosoft Quick Traceroute). Под Линукс ничего дополнительного посоветовать не могу - юзал только стандартный Debian'овский traceroute :).

В заключение скажу, не бойся экспериментировать - только так можно по настоящему "понять" сеть. Ищи информацию и пользуйся ею. Удачи.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии