Битлента
Словарь терминов3 мин чтения·

TTL пакета: счётчик переходов и почему он нужен

Что такое TTL в IP-пакете, как он уменьшается на каждом маршрутизаторе, при чём тут traceroute и что означает значение TTL в ответе ping.

Предохранитель от бесконечной пересылки

TTL, Time To Live, представляет собой однобайтовое поле в заголовке IP-пакета, где хранится число от 0 до 255. Каждый маршрутизатор, обработавший пакет, уменьшает его на единицу. Если после уменьшения получается ноль, пакет уничтожается, а отправитель может получить уведомление ICMP «время истекло».

Зачем это нужно? В сложных сетях случаются маршрутные петли: из-за ошибки конфигурации два маршрутизатора отправляют пакет друг другу по кругу. Без ограничителя такой пакет жил бы вечно и нагружал каналы. TTL обеспечивает то, что любой пакет рано или поздно исчезнет.

Несмотря на название, в поле хранится не время в секундах, а именно число переходов. Историческое название сохранилось с первых версий протокола.

Начальные значения и что они говорят

Начальное значение задаёт отправитель, и оно зависит от системы: часто встречаются 64, 128 и 255. По умолчанию в Linux и macOS обычно ставят 64, в Windows 128, а сетевое оборудование иногда 255. Значение, которое вы видите в ответе ping, уже уменьшено маршрутизаторами на пути.

Отсюда грубая прикидка: если ответ пришёл с TTL 52, вероятно, начальное значение было 64, и путь занял двенадцать переходов. Это лишь оценка, поскольку начальное значение зависит от настроек, а обратный маршрут может отличаться от прямого. Делать по нему точные выводы о системе удалённого узла нельзя.

Как на нём построен traceroute

Утилита трассировки отправляет пакеты с последовательно растущим TTL. Первый пакет с единицей погибает на первом маршрутизаторе, который присылает в ответ сообщение ICMP и тем самым называет свой адрес. Второй пакет доходит до второго, и так далее, пока очередной не доберётся до цели. Список отвечающих узлов и время между ними показывают путь и места, где задержка растёт.

Звёздочки в выводе означают, что конкретный маршрутизатор не ответил на служебный пакет. Такое бывает из-за фильтрации, и оно не всегда говорит о неполадке, если дальнейшие узлы отвечают нормально.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Где ещё используется TTL

У слова «TTL» есть и другое значение: в DNS время жизни записи в кэше, которое измеряется в секундах. Это отдельный механизм, не связанный с IP-полем, но идея схожая: ограничить срок существования информации. Подробнее о нём рассказано на странице про dns-ttl.

В IPv6 аналогичное поле называют Hop Limit, чтобы подчеркнуть, что считаются именно переходы. Функция полностью сохранилась.

Некоторые провайдеры и мобильные операторы обращают внимание на значение TTL в трафике, чтобы определить, что за устройством находится ещё одно, раздающее интернет. Подробности такой практики зависят от оператора, и утверждать что-то определённое об условиях нельзя.

Как проверить у себя: TTL пакета

Выполните ping любого узла и обратите внимание на поле TTL в ответе. Затем запустите tracert в Windows или traceroute в Linux с тем же адресом и посчитайте число строк: оно примерно соответствует тому, на сколько уменьшилось значение. Если сомневаетесь, сравните с несколькими адресами: до близких узлов TTL в ответе будет выше, до далёких ниже.

Менять значение TTL на компьютере без причины не следует: слишком малое сделает удалённые узлы недостижимыми, а слишком большое лишь замедлит устранение петель.

Практические наблюдения

Для наблюдения за TTL достаточно пинга нескольких узлов. Отправьте запросы на адрес роутера: значение TTL в ответе будет равно начальному, поскольку промежуточных переходов нет. Затем пингуйте сервер в интернете: значение станет меньше, а разница с ближайшим круглым числом даст число переходов.

Если трассировка показывает подозрительно много строк, например больше двадцати, путь неоптимален, и стоит сравнить его с маршрутом до того же узла из другой сети. TTL не позволяет судить о качестве связи напрямую: короткий путь может быть медленным из-за загрузки, а длинный быстрым. Число переходов полезно скорее как одна из подсказок при поиске причин задержки.

Итак, полезнее всего помнить, что TTL защищает сеть от петель и служит основой трассировки, а не показателем скорости.

Если вы хотите закрепить материал, повторите опыт с ping и tracert на нескольких узлах и сопоставьте значения TTL с числом строк трассировки.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
сетиttliptraceroute

Часто задаваемые вопросы

Читайте также