Как работает tracert и traceroute

Применение данных утил позволяет проследить маршрут до удаленного хоста, определить время круговой задержки (RTT-round-trip delay time), IP-адрес и в некоторых случаях доменное имя промежуточного маршрутизатора. В основе их работы лежат ICMP-сообщения об ошибках.

Как работает Tracert.

Значение времени жизни (TTL) первого отправляемого пакета устанавливается равным 1. Когда протокол IP первого маршрутизатора принимает этот пакет, то он в соответствии со своим алгоритмом уменьшает TTL на единицу и получает 0. Маршрутизатор отбрасывает пакет с нулевым временем жизни и возвращает узлу-источнику ICMP-сообщение об ошибке истечения времени дейтаграммы (ICMP-сообщение тип 11 код 0). Это сообщение содержит имя маршрутизатора и его IP-адрес. Когда это ICMP-сообщение прибывает к отправителю, тот по значению таймера узнает время оборота пакета(RTT), а также (из ICMP-сообщения) имя и IP-адрес промежуточного маршрутизатора. Затем посылается следующий IP-пакет, но теперь со значением TTL равным 2. Этот пакет уже доходит до второго маршрутизатора, но опять там «умирает» о чем аналогичным, же образом сообщается узлу отправителю. И так до тех пор, пока не достигнет конечного узла. На основании данных ответов строится трассировка. Например:

Трассировка маршрута к rt.ru [109.207.14.4] с максимальным числом прыжков 30:
1 3 ms 1 ms 2 ms net235-72.ufa.ertelecom.ru [212.33.234.72]
2 2 ms 2 ms 1 ms bb2.bsr02.ufa.ertelecom.ru [212.33.234.109]
3 2 ms 1 ms 1 ms lag-10-438.bbr01.samara.ertelecom.ru [212.33.233.111]
4 18 ms 18 ms 18 ms 46.61.227.202
5 19 ms 19 ms 18 ms 46.61.227.201
6 19 ms 19 ms 19 ms so-0-0-0.m10-ar2.msk.ip.rostelecom.ru [87.226.139.74]
7 19 ms 19 ms 19 ms 109.207.0.226
8 19 ms 19 ms 19 ms www.rt.ru [109.207.14.4]
Трассировка завершена.

Из данной трассы мы видим, что хост www.rt.ru доступен с числом прыжков(хопов) — 8, его ip 109.207.14.4, и время круговой задержки до данного ресурса составляет 19ms.

Как работает Traсeroute.

Принцип идентичный, за одним исключением. Утила по умолчанию, посылает в сторону заданного хоста UDP-датаграммы на какой-то произвольный порт, обычно — на «высокий», скорее всего не занятый другим сервисом (например 12500, 30678) или на зарезервированный (например 0), в свежих версиях порт по умолчанию — 33434. Сначала посылается серия из 3-х таких пакетов с TTL=1, по приходу ответов замеряется время прохождения и  определяется доменное имя транзитного узла. Затем, как сказано выше, посылаются очередные серии пакетов с TTL=2 и т.д. В конце мы получаем от конечного хоста отклик «Порт недоступен» (PORT_UNREACHABLE), что означает завершение трассировки.

Пример трассировки до того же ресурса:

traceroute to rt.ru (109.207.14.4), 30 hops max, 40 byte packets
 1 * * *
 2 bb1.bsr02.ufa.ertelecom.ru (212.33.234.101) 13.059 ms 13.222 ms 13.597 ms
 3 lag-10-438.bbr01.samara.ertelecom.ru (212.33.233.111) 0.360 ms 0.382 ms 0.612 ms
 4 46.61.227.202 (46.61.227.202) 17.484 ms 17.511 ms 17.512 ms
 5 46.61.227.201 (46.61.227.201) 17.803 ms 17.791 ms 17.778 ms
 6 so-0-0-0.m10-ar2.msk.ip.rostelecom.ru (87.226.139.74) 18.179 ms 18.211 ms 17.988 ms
 7 109.207.0.226 (109.207.0.226) 18.213 ms 18.697 ms 18.288 ms
 8 * * *
^C

Из результата вывода возникает вопрос, почему в этом случае трассировка не дошла до конца, и появились в выводе так называемые звездочки (* * *), а ответ как раз и заключается в различие (в данном примере). Очень часто, маршрутизаторы/хосты настраиваются таким образом, чтобы они не отвечали на подобного рода запросы, в таком случае и появляются звездочки. Это совершенно не значит, что имеются какие-то проблемы. Делается это для того, чтобы разгрузить оборудование.  В данном примере 1 и 8 хоп не отвечает на UDP-датаграммы, однако если запустить утилу traceroute c ключиком -I, то трассировка дойдет, т.к. данный ключ заставляет посылаю уже ICMP-датаграммы.

$ traceroute -I rt.ru
traceroute to rt.ru (109.207.14.4), 30 hops max, 40 byte packets
 1 net233-86.ufa.ertelecom.ru (212.33.233.86) 162.924 ms 163.654 ms 163.666 ms
 2 bb1.bsr02.ufa.ertelecom.ru (212.33.234.101) 8.095 ms 38.117 ms 50.262 ms
 3 lag-10-438.bbr01.samara.ertelecom.ru (212.33.233.111) 0.382 ms 0.407 ms 0.417 ms
 4 46.61.227.202 (46.61.227.202) 17.592 ms 17.623 ms 17.613 ms
 5 46.61.227.201 (46.61.227.201) 17.597 ms 17.609 ms 17.613 ms
 6 so-0-0-0.m10-ar2.msk.ip.rostelecom.ru (87.226.139.74) 17.943 ms 17.924 ms 18.001 ms
 7 109.207.0.226 (109.207.0.226) 18.092 ms 18.026 ms 18.010 ms
 8 www.rt.ru (109.207.14.4) 18.205 ms 18.301 ms 18.308 ms

Заключение.

Следует отметить, что звездочки могут возникать и при трассировке ICMP-пакетами,  это также не значит, что существует проблема. Все зависит от того, как настроил оборудование администратор. Это его железо и настраивается оно с его потребностями. Данное явление вполне нормально. Также не следует паниковать, если конечный хост не пингуется. Вполне возможно, что ресурс просто от них закрылся.