Введение

Временное ограничение существования сообщений в сетевой инженерии

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

IP-пакеты

Согласно протоколу Интернет, TTL – это 8-битное поле. В заголовке IPv4 TTL является 9-м октетом из 20. В заголовке IPv6 – 8-м октетом из 40. Максимальное значение TTL – 255, что соответствует максимальному значению одного октета. Рекомендуемое начальное значение – 64. Значение TTL можно рассматривать как верхнюю границу времени существования IP-датаграммы в сети Интернет. Поле TTL устанавливается отправителем датаграммы и уменьшается каждым маршрутизатором на пути к получателю. Если поле TTL достигает нуля до того, как датаграмма достигнет места назначения, она отбрасывается, и отправителю отправляется датаграмма ошибки протокола управления сообщениями Интернета (ICMP) с кодом 11 – "Превышено время жизни" (Time Exceeded). Назначение поля TTL – предотвратить ситуацию, когда недоставимая датаграмма бесконечно циркулирует в сети Интернет, перегружая её такими "бессмертными" пакетами. Теоретически, в IPv4 время жизни измеряется в секундах, хотя каждый хост, обрабатывающий датаграмму, должен уменьшить TTL как минимум на единицу. На практике поле TTL уменьшается на единицу на каждом участке пути (hop). Чтобы отразить эту практику, в IPv6 поле было переименовано в "предел числа переходов" (hop limit).

Записи DNS

TTL также встречаются в системе доменных имен (DNS), где они устанавливаются авторитетным сервером имен для определенной записи ресурса. Когда кэширующий (рекурсивный) сервер имен запрашивает авторитетный сервер имен для записи ресурса, он кэширует эту запись на время (в секундах), указанное в TTL. Если клиентский резолвер запрашивает кэширующий сервер имен для той же записи до истечения TTL, сервер кэширования просто ответит уже закэшированной записью ресурса, не запрашивая ее повторно у авторитетного сервера имен. TTL для ответов NXDOMAIN (несуществующий домен) устанавливается как минимальное значение из поля MINIMUM записи SOA и TTL самой записи SOA, и указывает, как долго резолвер может кэшировать отрицательный ответ. Более короткие TTL могут создавать большую нагрузку на авторитетный сервер имен, но могут быть полезны при изменении адреса критически важных служб, таких как веб-серверы или записи MX, и поэтому часто снижаются администратором DNS перед перемещением службы, чтобы уменьшить возможные перебои. Единицы измерения – секунды. Ранее распространенным значением TTL для DNS было 86400 секунд, что составляет 24 часа. Значение TTL 86400 означает, что если запись DNS была изменена на авторитетном сервере имен, DNS-серверы по всему миру могут продолжать показывать устаревшее значение из своего кэша до 24 часов после последнего обновления. Новые методы DNS, являющиеся частью системы аварийного восстановления (DR), могут предусматривать намеренную установку очень низких значений TTL для некоторых записей. Например, TTL в 300 секунд позволит ключевым записям устареть через 5 минут, обеспечивая их быструю очистку во всем мире. Это дает администраторам возможность своевременно редактировать и обновлять записи. Значения TTL задаются для каждой записи в отдельности, и установка этого значения для конкретных записей иногда автоматически поддерживается всеми стандартными DNS-системами во всем мире. Однако сохраняется проблема: некоторые кэширующие DNS-серверы устанавливают свои собственные TTL, игнорируя авторитетные записи, поэтому нельзя гарантировать, что все нижестоящие DNS-серверы получат новые записи после истечения TTL.

HTTP-адрес

Время жизни также может быть выражено как дата и время истечения срока действия записи. Заголовок "Expires:" в HTTP-ответах, поле "Cache-Control: max-age" как в запросах, так и в ответах, и поле "expires" в HTTP-cookie выражают время жизни таким образом.