TTL (Time To Live, «время жизни») — число, которое ограничивает, сколько живут данные в сети. В IP-пакете это счётчик пересылок: каждый маршрутизатор уменьшает его на единицу, а на нуле пакет уничтожают. В DNS и HTTP-кэше TTL считают в секундах: столько можно хранить копию ответа, прежде чем снова спросить источник.
Узнать TTL пакета можно командой ping, значение стоит в каждой строке ответа. TTL DNS-записи показывают dig и nslookup -debug. Где именно это поле лежит в пакете, мы показывали в разборе модели OSI на живом сетевом пакете.
Если вы искали ТТЛ-микросхемы, режим вспышки «через объектив» или маркетинговую модель Through The Line, это другие аббревиатуры из тех же букв. Здесь речь только о сетях.
SkillboxАдминистрирование ОС Linux90 157 ₽3 месяца
НетологияПрофессия «Сетевой инженер»85 800 ₽12 месяцев
MerionСетевые технологии21 840 ₽2 месяца
Академия ТОПУчебная программа “Кибербезопасность и Сетевые технологии”Бесплатно2 года
БруноямОнлайн-курс Администрирование Linux29 900 ₽2 месяца
ДипломиксУправление и администрирование сетевых устройств информационно-коммуникационных систем10 900 ₽
Три TTL с одним названием

Аббревиатура одна, а механизмов несколько. Их путают постоянно: спрашивают про «TTL в роутере», а читают про DNS, и наоборот.
| Где | В чём измеряется | Кто ведёт отсчёт | Что происходит на нуле |
|---|---|---|---|
| IP-пакет (IPv4) | переходы через маршрутизаторы | каждый маршрутизатор на пути | пакет уничтожают, отправителю уходит ICMP Time Exceeded |
| IPv6 | переходы, поле называется Hop Limit | каждый узел, который пересылает пакет | пакет отбрасывают |
| DNS-запись | секунды | кэш резолвера | запись запрашивают у авторитетного сервера заново |
| HTTP-кэш | секунды (директива max-age) |
браузер, прокси, CDN | копия считается устаревшей |
| Redis и другие хранилища | секунды или миллисекунды | сервер хранилища | ключ удаляется |
Общая идея у всех одна. TTL не даёт заблудившимся или устаревшим данным жить вечно. Отличаются единица счёта и тот, кто его ведёт. IP работает на сетевом уровне, DNS и HTTP на прикладном, а как протоколы делят между собой работу, мы разбирали в обзоре сетевых протоколов.
Как работает TTL в IP-пакете
Поле TTL занимает 8 бит в заголовке IPv4, поэтому его максимум равен 255. В RFC 791, где описан протокол IP, время формально считается в секундах. Но каждый узел, который обрабатывает пакет, обязан уменьшить TTL хотя бы на единицу, даже если управился быстрее секунды.
Поэтому RFC 791 велит считать TTL только верхней границей времени жизни пакета. На деле это лимит переходов: сколько маршрутизаторов пакет успеет пройти.
Требования к маршрутизаторам собраны в RFC 1812. Путь пакета выглядит так:
- Компьютер отправляет пакет со стартовым TTL, например 64.
- Первый маршрутизатор уменьшает значение до 63 и передаёт пакет дальше.
- Каждый следующий маршрутизатор снова вычитает единицу.
- Если TTL дошёл до нуля, маршрутизатор обязан отбросить пакет и отправить источнику сообщение ICMP Time Exceeded с кодом 0 («TTL Exceeded in Transit»), так записано в RFC 1812. Для групповой рассылки (multicast) сообщение не отправляют.
Без этого поля пакет, попавший в петлю маршрутизации, крутился бы между двумя роутерами бесконечно и забивал канал. С TTL он погибнет максимум через 255 переходов. Петли, маршруты и разбор пакетов по полям подробно проходят на курсах сетевого администрирования.
В IPv6 то же поле называется Hop Limit. Спецификация RFC 8200 описывает его прямо как счётчик: каждый узел, пересылающий пакет, уменьшает значение на 1.
Как трассировка использует TTL
Команды tracert в Windows и traceroute в Linux и macOS используют TTL нарочно. По справке Microsoft, tracert отправляет первый запрос с TTL 1 и прибавляет по единице, пока не ответит цель или пока не кончится лимит, по умолчанию 30 переходов.
Каждый маршрутизатор, на котором счётчик обнулился, возвращает Time Exceeded и тем самым называет свой адрес. Если какой-то роутер такие сообщения не отправляет, на его месте в трассировке будут звёздочки. Как читать трассировку и искать узел с задержкой, мы разбирали в статье про тест пинга.
То же самое можно увидеть вручную. Отправим пинг на ya.ru из Linux с TTL 3:
$ ping -c 2 -t 3 ya.ru
PING ya.ru (5.255.255.242) 56(84) bytes of data.
From 10.1.91.1 icmp_seq=1 Time to live exceeded
From 10.1.91.1 icmp_seq=2 Time to live exceeded
Трёх переходов не хватило: третий маршрутизатор обнулил счётчик и вернул «Time to live exceeded». Ключ, которым задают TTL у ping, в разных системах свой: в Windows -i, в Linux -t, в macOS -m. В macOS ключ -t означает таймаут, легко перепутать.
Как узнать TTL на компьютере
Проще всего пингануть любой сайт. В ответе вы увидите TTL пакета, который пришёл к вам от удалённого узла, то есть его стартовое значение минус пройденные переходы.
В Windows
- Нажмите Win + R, введите
cmdи нажмите Enter. - Наберите
ping ya.ru. - Посмотрите в конец каждой строки ответа: там стоит
TTL=и число. Пример такой строки есть в справке Microsoft по команде ping.
Собственное стартовое значение Windows хранится в параметре реестра DefaultTTL. В справочнике Microsoft по параметрам TCP/IP для него указано значение по умолчанию 128 и диапазон от 0 до 255.
В macOS и Linux
Так выглядит пинг ya.ru с сервера на Linux:
$ ping -c 3 ya.ru
PING ya.ru (77.88.44.242) 56(84) bytes of data.
64 bytes from ya.ru (77.88.44.242): icmp_seq=1 ttl=56 time=5.28 ms
64 bytes from ya.ru (77.88.44.242): icmp_seq=2 ttl=56 time=7.95 ms
64 bytes from ya.ru (77.88.44.242): icmp_seq=3 ttl=56 time=7.84 ms
Своё стартовое значение показывает sysctl. В Linux параметр называется net.ipv4.ip_default_ttl, в macOS net.inet.ip.ttl:
$ sysctl net.ipv4.ip_default_ttl
net.ipv4.ip_default_ttl = 64
$ sysctl net.inet.ip.ttl
net.inet.ip.ttl: 64
Значение 64 в Linux взято не с потолка. В документации ядра сказано, что так рекомендует RFC 1700.
Как прочитать число из ответа
Стартовых значений на практике немного, самые частые 64 и 128. Отсюда простой приём:
- пришло
ttl=56: ближайшее стандартное значение сверху 64, значит, пакет, скорее всего, прошёл 8 маршрутизаторов; - пришло
TTL=116: вероятно, узел стартовал со 128 и пакет прошёл 12 переходов; - пришло
TTL=64илиTTL=128: узел в вашей же локальной сети, маршрутизаторов между вами нет.
Это оценка, а не точный ответ. Стартовое значение администратор может поменять, поэтому определять операционную систему собеседника по одному TTL ненадёжно.
Второе число в строке ping, time, к TTL отношения не имеет: это задержка в миллисекундах. Если она прыгает от пакета к пакету, смотрите статью про джиттер сети.
TTL в роутере и при раздаче интернета с телефона
Чаще всего про TTL в роутере вспоминают из-за мобильного интернета. Когда телефон раздаёт интернет, он работает как маршрутизатор. Пакеты ноутбука проходят через телефон, и TTL у них уменьшается на единицу.
В базе знаний производителя роутеров Kroks стартовые значения перечислены так: Windows 128, Linux и macOS 64, Android и iOS на мобильном интернете тоже 64. Значит, в сеть оператора пакеты самого телефона уходят с 64, а пакеты ноутбука на Windows после телефона уходят со 127.
По этой разнице оператор может отличить трафик телефона от трафика раздачи. На части тарифов раздача платная или ограничена, условия написаны в описании тарифа у оператора.
В веб-интерфейсе роутеров Kroks для правил TTL есть отдельный раздел, а изменение TTL в обиходе называют «фиксацией TTL». В той же справке Kroks отдельно предупреждают: неправильная настройка TTL может привести к проблемам с доступом к некоторым ресурсам и сервисам.
Менять TTL, чтобы скрыть раздачу от оператора, значит нарушать условия тарифа, поэтому пошаговой инструкции для этого здесь не будет. Если раздача нужна постоянно, честнее выбрать тариф, где она разрешена.
TTL в DNS: сколько хранится запись

В DNS тот же термин значит другое. По RFC 1035, TTL записи задаёт интервал, в течение которого её можно хранить в кэше, прежде чем снова обратиться к источнику. Значение 0 означает, что запись годится только для текущего запроса и кэшировать её не следует.
Единица счёта здесь секунды. Позже RFC 2181 уточнил диапазон: число без знака от 0 до 2 147 483 647, то есть до 231 − 1.
Как посмотреть TTL DNS-записи
Сравним два ответа про один домен. Сначала спросим авторитетный сервер Яндекса, который хранит оригинал записи:
$ dig ya.ru A +noall +answer @ns1.yandex.ru
ya.ru. 600 IN A 77.88.55.242
ya.ru. 600 IN A 77.88.44.242
ya.ru. 600 IN A 5.255.255.242
Теперь публичный резолвер Яндекса:
$ dig ya.ru A +noall +answer @77.88.8.8
ya.ru. 413 IN A 77.88.44.242
ya.ru. 413 IN A 77.88.55.242
ya.ru. 413 IN A 5.255.255.242
Второе число в строке и есть TTL. Авторитетный сервер отдаёт полные 600 секунд, а резолвер показывает остаток: запись лежит у него в кэше, и счётчик идёт вниз. Когда он дойдёт до нуля, резолвер спросит ya.ru заново.
Сами DNS-запросы уходят на сетевой порт 53, его закрепляет тот же RFC 1035.
В Windows то же покажет nslookup -debug ya.ru: в подробном выводе будут строки ttl = ….
Ответ «такого домена нет» тоже кэшируется
Отрицательный ответ резолвер тоже запоминает. По RFC 2308, срок задаёт запись SOA: берётся меньшее из её поля MINIMUM и её собственного TTL.
$ dig yandex.ru SOA +noall +answer @8.8.8.8
yandex.ru. 3233 IN SOA ns1.yandex.ru. sysadmin.yandex-team.ru. 2023040331 600 300 2592000 900
Последнее число, 900, и есть MINIMUM. Если запросить несуществующий поддомен yandex.ru, резолвер будет помнить отказ не дольше 900 секунд, то есть 15 минут.
Отсюда частая ловушка: создали новый поддомен, а он «не работает». Скорее всего, вы проверили его до создания, и резолвер ещё хранит в кэше ответ, что такого имени нет.
Какой TTL ставить для DNS
Если домен компании ведёте вы, выбор TTL входит в обычные задачи системного администратора. Стандарта на «правильный» TTL нет, это компромисс между скоростью изменений и нагрузкой. Наши практические ориентиры:
| Ситуация | TTL | Почему |
|---|---|---|
| Адрес сайта меняется редко | 3600–86 400 секунд (от часа до суток) | меньше запросов к DNS, ответы из кэша быстрее |
| Готовите переезд на другой сервер | 300 секунд, выставить заранее | после смены адреса старый быстро вытеснится из кэшей |
| Аварийное переключение между серверами | 60–300 секунд | трафик уйдёт на резервный адрес за минуты |
| Почтовые MX и NS-записи | от 3600 секунд | их почти не меняют, частые запросы ни к чему |
Главное правило переезда: снижать TTL нужно заранее, не позже чем за срок старого TTL до смены адреса. Если у записи стояли сутки, а вы снизили TTL до 5 минут в день переезда, часть резолверов ещё до суток будет отдавать старый IP.
TTL в HTTP-кэше и Redis

В HTTP роль TTL играет директива max-age заголовка Cache-Control. По справке MDN, она задаёт максимальное время, в течение которого ресурс считается актуальным, и, в отличие от Expires, отсчитывается относительно времени запроса.
Для общих кэшей вроде прокси и CDN есть отдельная директива s-maxage: она переопределяет max-age, а частные кэши, например браузер, её игнорируют. Как CDN хранит копии файлов ближе к пользователю, мы рассказывали в статье про сети доставки контента.
Посмотреть TTL ответа можно через curl -sI. Картинка со статического сервера Яндекса:
$ curl -sI https://yastatic.net/s3/home-static/_/37/37a02b5dc7a51abac55d8a5b6c865f0e.png | grep -iE "^(HTTP|cache-control)"
HTTP/2 200
cache-control: max-age=31536000
31 536 000 секунд равны 365 дням: картинку разрешено хранить в кэше год. А вот главная страница нашего сайта:
$ curl -sI https://checkroi.ru/ | grep -iE "^(HTTP|cache-control)"
HTTP/2 200
cache-control: public, max-age=60, stale-while-revalidate=86400
Страница свежая 60 секунд. Директива stale-while-revalidate, по той же справке MDN, означает, что клиент готов получить просроченный ответ, пока в фоне идёт проверка свежих данных. Число задаёт, сколько секунд так можно делать.
TTL ключей в Redis
В Redis срок жизни ставят на ключ: командой EXPIRE или опцией EX у SET. Пример из документации Redis к команде TTL:
> SET mykey "Hello"
OK
> EXPIRE mykey 10
(integer) 1
> TTL mykey
(integer) 10
Команда TTL возвращает оставшиеся секунды. Два особых ответа стоит помнить:
-1: ключ есть, но срока жизни у него нет, он будет жить, пока его не удалят;-2: ключа нет совсем.
Миллисекундная версия той же команды называется PTTL.
Частые ошибки с TTL и что с ними делать
Большая часть проблем с TTL выглядит как «я всё поменял, а ничего не изменилось». Пять типичных случаев:
- Сменили IP в DNS, а у части людей сайт открывается по старому адресу. Резолверы хранят старую запись до конца её TTL. Решение: снижать TTL заранее и не выключать старый сервер, пока не истечёт прежний TTL.
- Ping пишет «Time to live exceeded». Пакет не дошёл до цели: вы сами задали маленький TTL ключом либо на пути петля маршрутизации. Решение: запустить трассировку. Если адреса в ней повторяются по кругу, это петля, и разбираться нужно с провайдером или своим роутером.
- Выкатили новый CSS, а у пользователей старый дизайн. Файлу отдали
max-ageна год, а имя не поменяли, и браузер берёт копию из кэша. Решение: менять имя файла или параметр версии вроде?ver=при каждом выпуске. - Поставили DNS TTL 0 или 30 секунд «на всякий случай». Резолверы спрашивают авторитетный сервер почти на каждый запрос, ответы медленнее, нагрузка выше. Решение: ставить короткий TTL только на время работ.
- Ключ в Redis должен был истечь, а живёт вечно. По документации к SET, успешный
SETсбрасывает прежний срок жизни ключа. Решение: передаватьEXпри каждой записи или использовать опциюKEEPTTL, которая сохраняет срок.
Где разобраться в сетях системно
TTL лишь одна из десятков деталей, из которых складывается работа сети, и разбирать их поштучно по мере поломок долго. Маршрутизацию, DNS и диагностику удобнее пройти один раз по порядку.
Если сети интересны как профессия, начните с разбора кто такой сетевой инженер. Курсы, где маршрутизацию, DNS и диагностику дают по порядку и с практикой, собраны в каталоге курсов для системных администраторов:
| Курс | Школа | Стоимость со скидкой | В рассрочку | Длительность | Обзор курса от Checkroi |
|---|---|---|---|---|---|
| Профессия «Системный администратор» Перейти на сайт курса | 73 300 ₽ | 5125 ₽/мес. | 11 месяцев | Обзор курса | |
| Системный администратор Перейти на сайт курса | 99 500 ₽ | 2764 ₽/мес. | 7 месяцев | Обзор курса | |
| Системный администратор (Бакалавриат) Перейти на сайт курса | 73 333 ₽ | - | 3 года | Обзор курса | |
| Онлайн-курс Системный администратор Перейти на сайт курса | 65 900 ₽ | 5491 ₽/мес. | 6 месяцев | Обзор курса | |
| Системный администратор + ИИ Перейти на сайт курса | 30 450 ₽ | 3171 ₽/мес. | 260 часов | Обзор курса |
Больше программ — в полном каталоге курсов для системных администраторов




