Утилита traceroute в операционных системах на базе Linux работает путём отправки серии UDP- или ICMP-пакетов с постепенно увеличивающимся временем жизни (TTL). 4
По умолчанию используется UDP-протокол. 1 Утилита формирует UDP-датаграмму, которая упаковывается в IP-пакет. 1 В одном из заголовков этого пакета устанавливается значение параметра TTL, равное 1. 1 Этот параметр используется для ограничения количества переходов от одного маршрутизатора к другому, чтобы избежать бесконечной передачи пакета между ними. 1
Каждый маршрутизатор, получив пакет, уменьшает значение TTL на 1 перед отправкой далее в сеть. 1 Когда после очередного уменьшения TTL становится равным 0, пакет считается недоставленным и отбрасывается, при этом маршрутизатор отвечает отправителю сообщением об ошибке. 1
При TTL = 1 traceroute, получая ответ от первого маршрутизатора, определяет его IP-адрес и время, затраченное на обработку пакета. 1 После этого TTL увеличивается на единицу для определения следующего маршрутизатора, и так далее до момента попадания пакета на целевой хост. 1
Утилита использует указанный ей IP-адрес и порт 34434 по умолчанию. 1 Целевой хост принимает пакет и отправляет сообщение о недоступности порта 34434 (так как в большинстве случаев он не используется каким-либо сервисом и закрыт). 1
В итоге отслеживается вся цепочка следования пакета, которая завершается ответом от целевого хоста. 1 Анализируя время, затраченное на переход от одного маршрутизатора к другому, можно определить, на каком из них возникает задержка. 1