Время жизни ( TTL ) или ограничение на количество переходов — это механизм, который ограничивает срок жизни или время существования данных в компьютере или сети. TTL может быть реализован как счетчик или временная метка , прикрепленная к данным или встроенная в них. После того, как предписанное количество событий или временной промежуток истекли, данные отбрасываются или повторно проверяются. В компьютерных сетях TTL предотвращает бесконечную циркуляцию пакета данных. В вычислительных приложениях TTL обычно используется для повышения производительности и управления кэшированием данных.
Оригинальный RFC протокола DARPA Internet Protocol описывает [1] : §1.4 TTL как:
Время жизни — это указание верхней границы срока службы интернет -дейтаграммы . Оно устанавливается отправителем дейтаграммы и уменьшается в точках маршрута, где она обрабатывается. Если время жизни достигает нуля до того, как интернет-дейтаграмма достигает пункта назначения, интернет-дейтаграмма уничтожается. Время жизни можно рассматривать как ограничение времени самоуничтожения.
В интернет-протоколе TTL — это 8-битное поле. В заголовке IPv4 TTL — это 9-й октет из 20. В заголовке IPv6 — это 8-й октет из 40. Максимальное значение TTL — 255, максимальное значение одного октета. Рекомендуемое начальное значение — 64. [2] [3]
Значение времени жизни можно рассматривать как верхнюю границу времени, в течение которого IP- дейтаграмма может существовать в системе Интернета. Поле TTL устанавливается отправителем дейтаграммы и уменьшается каждым маршрутизатором на пути к ее месту назначения. Если поле TTL достигает нуля до того, как дейтаграмма достигает места назначения, то дейтаграмма отбрасывается, а отправителю отправляется датаграмма с ошибкой протокола управления сообщениями Интернета (ICMP) ( 11 - Time Exceeded ). Цель поля TTL - избежать ситуации, в которой недоставленная дейтаграмма продолжает циркулировать в системе Интернета, и такая система в конечном итоге оказывается заваленной такими "бессмертными".
Теоретически, в IPv4 время жизни измеряется в секундах, хотя каждый хост, который передает датаграмму, должен уменьшить TTL как минимум на одну единицу. На практике поле TTL уменьшается на единицу на каждом hop . Чтобы отразить эту практику, поле переименовано в hop limit в IPv6 .
TTL также встречаются в системе доменных имен (DNS), где они устанавливаются авторитетным сервером имен для определенной записи ресурса. Когда кэширующий (рекурсивный) сервер имен запрашивает у авторитетного сервера имен запись ресурса, он кэширует эту запись на время (в секундах), указанное в TTL. Если заглушка-резолвер запрашивает у кэширующего сервера имен ту же запись до истечения TTL, кэширующий сервер просто ответит уже кэшированной записью ресурса, а не извлечет ее снова из авторитетного сервера имен. TTL для ответов NXDOMAIN (несуществующий домен) устанавливается из минимума поля MINIMUM записи SOA и TTL самого SOA и указывает, как долго резолвер может кэшировать отрицательный ответ. [4] [ жаргон ]
Более короткие значения TTL могут привести к увеличению нагрузки на авторитетный сервер имен, но могут быть полезны при изменении адреса критически важных служб, таких как веб-серверы или записи MX , и поэтому часто снижаются администратором DNS перед перемещением службы, чтобы уменьшить возможные сбои.
Используемые единицы — секунды. Более старое общее значение TTL для DNS составляло 86400 секунд, что составляет 24 часа. Значение TTL 86400 означало бы, что если запись DNS была изменена на авторитетном сервере имен, серверы DNS по всему миру могли бы показывать старое значение из своего кэша в течение 24 часов после последнего обновления клиентом.
Более новые методы DNS, которые являются частью системы аварийного восстановления (DR), могут иметь некоторые записи, намеренно установленные на чрезвычайно низком уровне TTL. Например, 300-секундный TTL поможет ключевым записям истекать через 5 минут, чтобы помочь гарантировать, что эти записи будут быстро сброшены по всему миру. Это дает администраторам возможность редактировать и обновлять записи своевременно. Значения TTL указаны «на запись», и установка этого значения для определенных записей иногда автоматически соблюдается всеми стандартными системами DNS по всему миру. Однако проблема сохраняется, поскольку некоторые кэширующие серверы имен DNS устанавливают свои собственные TTL независимо от авторитетных записей, поэтому нельзя гарантировать, что все нижестоящие серверы DNS будут иметь новые записи после истечения TTL.
Время жизни может также выражаться как дата и время истечения срока действия записи. Expires:
Заголовок в HTTP-ответах , Cache-Control: max-age
поле заголовка в запросах и ответах, а также expires
поле в HTTP-cookies выражают время жизни таким образом.
Текущее рекомендуемое время жизни (TTL) по умолчанию для интернет-протокола (IP) составляет 64 [RFC791], [RFC1122].