Какой протокол использует traceroute по умолчанию?

«Какой протокол использует traceroute по умолчанию?» — вопрос из категории Сети, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

По умолчанию это зависит от ОС:

  • В Linux/Unix стандартная утилита traceroute использует UDP-пакеты с порта назначения 33434 и увеличивает его для каждого следующего хопа.
  • В Windows утилита tracert использует ICMP Echo Request пакеты (как ping).

Практическое значение для DevOps: Различие важно, потому что сетевые политики безопасности (файрволы, ACL) могут по-разному обрабатывать UDP, ICMP и TCP трафик. Если маршрут не отображается, это может быть связано с блокировкой используемого по умолчанию протокола.

Альтернативы в Linux:

# Использовать ICMP (как Windows tracert)
traceroute -I google.com

# Использовать TCP (часто обходит фильтры, т.к. похоже на обычное соединение)
traceroute -T -p 80 google.com  # Использует TCP SYN на порт 80

# Современная утилита mtr (My TraceRoute) предоставляет интерактивный мониторинг
mtr google.com

В средах, где важна диагностика сети (например, между Availability Zones или в гибридных облаках), я часто использую traceroute -T к известному открытому порту (например, 443), так как TCP-трафик реже блокируется полностью, чем ICMP или высокоуровневый UDP.