linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
Intro
Lessons
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Уроки
  • How it works
  • Симулятор
  • База знаний
  • Собеседование
home/linux/how/traceroute

how/network

Как traceroute видит путь до сервера

Ни один пакет не возвращается с маршрутом внутри. Чтобы увидеть путь - traceroute хитро эксплуатирует TTL: «убивает» пакеты на каждом хопе и собирает ICMP-ответы.

Когда сайт «медленно открывается» - где затык? У тебя? У провайдера? На магистрали? Без видимости пути это слепое гадание.

traceroute показывает каждый роутер на пути до целевого сервера

  • задержку на каждом из них. Но как? Сетевые пакеты не несут в себе «список всех хопов», и роутеры не обязаны их раскрывать.

Решение - трюк с TTL. traceroute намеренно посылает пакеты, которые умрут на нужном роутере, и собирает их «предсмертные извещения» (ICMP time-exceeded). Каждое извещение приходит от конкретного роутера - так строится список.

Нажми ▶ - посмотрим как 4 пакета с возрастающим TTL дают полный путь.

step 1/5·00 · хотим увидеть путь до google.com
youtracerouteROUTERR1home/ISPROUTERR2ISP backboneROUTERR3peeringgoogle.com142.250.46.1$ TRACEROUTE GOOGLE.COMхотим узнать путь до google.com - обычные пакеты не помогут, нужен трюк с ttl

§ шаги

  1. Между нами и google.com - несколько роутеров (обычно 8-15). Какие именно - мы не знаем, и обычные пакеты не отвечают на этот вопрос.

    Ответ google.com приходит как «ответ от google.com», без информации о промежуточных хопах. Нужен другой подход.

итого

Что важно запомнить:

  • Trick прост: каждый traceroute-пробник имеет свой TTL - 1, 2, 3, 4... При TTL=N пакет умирает на N-ном роутере, тот шлёт ICMP time-exceeded → traceroute узнаёт IP роутера + измеряет RTT
  • На каждый TTL обычно отправляется 3 пробника (видишь в выводе 3 RTT-значения). Так получаем разброс задержки и видим стабильность
  • Linux traceroute дефолтно шлёт UDP на «непонятный» высокий порт. Windows tracert - ICMP echo. macOS - UDP. Если фаервол дропает один тип - попробуй traceroute -I (ICMP) или -T -p 443 (TCP к открытому порту)
  • Звёздочки * * * на хопе = роутер не отвечает. Часто это политика безопасности - роутер форвардит трафик, но молчит на ICMP. Не значит что путь сломан
  • mtr = traceroute + ping в одном - постоянно прозванивает каждый хоп и показывает % потерь. Незаменим для дебага «иногда тупит»
  • Asymmetric routing: traceroute показывает только путь туда. Назад пакеты могут идти другим маршрутом. На сложных топологиях это надо учитывать

Если хочется глубже - есть [[traceroute|расширенная статья]] с описанием mtr и tcptraceroute.

§ копнуть в базу знаний

  • traceroutetraceroute - расширенная статья
  • icmpICMP - что такое time-exceeded
  • routing-tablerouting - как формируется путь
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки