Время жизни пакетов: TTL и Hop Limit в сетевых технологиях
Time to live
TTL в сетевых технологиях: ограничение времени жизни пакетов данных для предотвращения бесконечной циркуляции и повышения производительности сети. Ключевой механизм!
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Временное ограничение существования сообщений в сетевой инженерии
Time limit of messages in network engineering
Время жизни (TTL) или предел числа пересылок – это механизм, ограничивающий срок существования данных в компьютере или сети. TTL может быть реализован как счетчик или временная метка, прикрепленная к данным или встроенная в них. По истечении заданного количества событий или временного интервала данные отбрасываются или повторно проверяются. В компьютерных сетях TTL предотвращает бесконечную циркуляцию пакетов данных. В вычислительных приложениях TTL обычно используется для повышения производительности и управления кэшированием данных.
Time to live (TTL) or hop limit is a mechanism which limits the lifespan or lifetime of data in a computer or network. TTL may be implemented as a counter or timestamp attached to or embedded in the data. Once the prescribed event count or timespan has elapsed, data is discarded or revalidated. In computer networking, TTL prevents a data packet from circulating indefinitely. In computing applications, TTL is commonly used to improve the performance and manage the caching of data.
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).
Under the Internet Protocol, TTL is an 8 bit field. In the IPv4 header, TTL is the 9th octet of 20. In the IPv6 header, it is the 8th octet of 40. The maximum TTL value is 255, the maximum value of a single octet. A recommended initial value is 64. The time to live value can be thought of as an upper bound on the time that an IP datagram can exist in an Internet system. The TTL field is set by the sender of the datagram, and reduced by every router on the route to its destination. If the TTL field reaches zero before the datagram arrives at its destination, then the datagram is discarded and an Internet Control Message Protocol (ICMP) error datagram (11 Time Exceeded) is sent back to the sender. The purpose of the TTL field is to avoid a situation in which an undeliverable datagram keeps circulating on an Internet system, and such a system eventually becoming swamped by such "immortals". In theory, under IPv4, time to live is measured in seconds, although every host that passes the datagram must reduce the TTL by at least one unit. In practice, the TTL field is reduced by one on every hop. To reflect this practice, the field is renamed hop limit in IPv6.
Записи 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.
TTLs also occur in the Domain Name System (DNS), where they are set by an authoritative name server for a particular resource record. When a caching (recursive) nameserver queries the authoritative nameserver for a resource record, it will cache that record for the time (in seconds) specified by the TTL. If a stub resolver queries the caching nameserver for the same record before the TTL has expired, the caching server will simply reply with the already cached resource record rather than retrieve it from the authoritative nameserver again. TTL for NXDOMAIN (non existent domain) responses is set from the minimum of the MINIMUM field of the SOA record and the TTL of the SOA itself, and indicates how long a resolver may cache the negative answer. Shorter TTLs can cause heavier loads on an authoritative name server, but can be useful when changing the address of critical services like web servers or MX records, and therefore are often lowered by the DNS administrator prior to a service being moved, in order to reduce possible disruptions. The units used are seconds. An older common TTL value for DNS was 86400 seconds, which is 24 hours. A TTL value of 86400 would mean that, if a DNS record was changed on the authoritative nameserver, DNS servers around the world could still be showing the old value from their cache for up to 24 hours after the last update by client. Newer DNS methods that are part of a disaster recovery (DR) system may have some records deliberately set extremely low on TTL. For example, a 300 second TTL would help key records expire in 5 minutes to help ensure these records are flushed quickly worldwide. This gives administrators the ability to edit and update records in a timely manner. TTL values are "per record" and setting this value on specific records is sometimes honored automatically by all standard DNS systems worldwide. However, a problem persists in that some caching DNS nameservers set their own TTLs regardless of the authoritative records, thus it cannot be guaranteed that all downstream DNS servers have the new records after the TTL has expired.
HTTP-адрес
Время жизни также может быть выражено как дата и время истечения срока действия записи. Заголовок "Expires:" в HTTP-ответах, поле "Cache-Control: max-age" как в запросах, так и в ответах, и поле "expires" в HTTP-cookie выражают время жизни таким образом.
Time to live may also be expressed as the date and time on which a record expires. The Expires: header in HTTP responses, the Cache Control: max age header field in both requests and responses and the expires field in HTTP cookies express time to live in this way.