Ответ
Traceroute вычисляет задержку, измеряя время между отправкой пробного пакета и получением ответа об ошибке от каждого маршрутизатора на пути.
Алгоритм:
- Отправляется серия пакетов (обычно 3) с TTL (Time To Live) = 1.
- Первый маршрутизатор уменьшает TTL до 0, отбрасывает пакет и отправляет обратно ICMP-сообщение "Time Exceeded".
- Traceroute фиксирует время между отправкой и получением ICMP-ответа — это RTT (Round-Trip Time) для первого хопа.
- Процесс повторяется с TTL=2, затем 3 и так далее, пока пакеты не достигнут цели.
Пример вывода и расчет:
traceroute to google.com (142.250.185.78), 30 hops max
1 router.local (192.168.1.1) 1.234 ms 1.456 ms 1.678 ms
2 10.10.10.1 (10.10.10.1) 5.112 ms 5.234 ms 5.567 ms
- Три числа для каждого хопа — это RTT для трех отправленных пакетов.
- Задержка для хопа 2 (~5 мс) включает время до хопа 1 и обратно, а также время между хопом 1 и 2.
Ключевые моменты:
- Асимметричные пути: Путь до узла и обратно может быть разным, что влияет на точность.
- Фильтрация ICMP: Некоторые маршрутизаторы не отправляют "Time Exceeded", отображаясь как
*. - Разные методы:
tracerouteможет использовать UDP, ICMP или TCP пакеты (например,traceroute -Tдля TCP SYN).