Time to live
Time to live (TTL) в вычислительной технике и компьютерных сетях — предельный период времени или число итераций или переходов, за который набор данных (пакет) может существовать до своего исчезновения.
TTL (время жизни) IP-пакетов
В IPv4 TTL представляет собой восьмиразрядное поле IP-заголовка. Оно находится в девятом октете из двадцати. Значение TTL может рассматриваться как верхняя граница времени существования IP-датаграммы в сети. Поле TTL устанавливается отправителем датаграммы, и уменьшается каждым узлом (например, маршрутизатором) на пути его следования, в соответствии со временем пребывания в данном устройстве или согласно протоколу обработки.
Если поле TTL становится равным нулю до того, как датаграмма прибудет в пункт назначения, то такая датаграмма отбрасывается и отправителю отсылается ICMP-пакет с кодом 11 — «Превышение TTL».
Отбрасывание пакетов с истекшим временем жизни позволяет избежать ситуаций, когда недоставленные датаграммы продолжают «вечно» циркулировать в системе Интернет, перегружая сеть (например, при образовании зацикленных маршрутов из-за некорректной маршрутизации).
По стандарту RFC791 время на жизнь измеряется в секундах, но каждый узел, через который проходит датаграмма, должен уменьшить значение TTL по крайней мере на одну единицу. На практике, если обработка занимает меньше секунды, поле TTL уменьшается на единицу на каждом хопе. Для того чтобы отразить это, в протоколе IPv6 поле называют «хоп лимитом». Также в некоторых реализациях IP-протокола TTL измеряется в шагах (хопах), в этом случае каждый маршрутизатор уменьшает значение TTL ровно на единицу.
Время жизни записей DNS
Для DNS-записей параметр «Time to live» определяет время актуальности данных при кешировании запросов. Задаётся в секундах, типичное значение составляет 86 400 секунд, т.е. 24 часа. Это означает, что при изменении записи DNS, вплоть до 24 часов после изменения DNS-серверы по всему миру могут выдавать старые данные из кеша, пока он не будет обновлён.
Ссылки
Примечания
- у разных операционных систем TTL по умолчанию в пределе от 32 до 128, так например у Linux-систем ttl по умолчанию равно 64, а у Windows — 128, но значение это четное
- Найти и оформить в виде сносок ссылки на авторитетные источники, подтверждающие написанное.
- Проставив сноски, внести более точные указания на источники.
- Добавить иллюстрации.
Wikimedia Foundation . 2010 .
Что такое время жизни пакета (TTL)
Вероятно, многие из нас обращали внимание на параметр TTL в запущенной команде ping. Расшифровывается TTL как Time to live.
Время жизни пакета это предельное число итераций, которое пакет данных может совершить до своего исчезновения. Выражаясь не так официально, TTL — это число «прыжков» от устройства к устройству, которое может совершить пакет.
Строго говоря, TTL это не только про пакеты данных. Время жизни имеют и другие вещи, например, DNS-записи на серверах. Поэтому не связывайте понятие TTL только с пакетами данных.
Возвращаясь к теме статьи, объясним предназначение времени жизни пакета. Дело в том, что данные в сети имеют свойство зацикливаться, что создаёт своего рода «мусорный» трафик. Поскольку количество «прыжков» между узлами у пакетов ограничено, они не смогут «бродить» по сети вечно.
На самом деле, изначально предполагалось, что TTL пакетов будет измеряться в секундах. Так что это должно было быть время в буквальном смысле слова. Однако позже от этой концепции отказались в пользу простого числа «прыжков» или хопов (hop). На каждом промежуточном узле это число уменьшается на единицу (по умолчанию, хотя настройки можно выставить иначе). Если число «прыжков» у пакета истекло, а адресата он так и не достиг, этот пакет уничтожается, а адресату направляется сообщение о необходимости повторной отправки данных (Time Exceeded). Учтите, что коммутаторы оставшееся число «прыжков» не изменяют, так как действуют на канальном уровне (более низком) модели OSI, а не сетевом.
Время жизни пакета задаётся в соответствующем поле в заголовке IPv4-пакета. В стандарте IPv6 используется уже другое поле Hop Limit. Максимально возможное значение TTL равно 255. В большинстве популярных операционных систем (macOS, Linux, Android, iOS и т.д.) TTL=64. В Windows по умолчанию TTL=128.
TTL и интернет-провайдеры
Достаточно интересно используют TTL пакетов интернет провайдеры для обнаружения несанкционированного подключения устройств. Способ массово стал использоваться со временем распространения мобильного интернета и устройств, которые могут этот интернет не только потреблять, но и раздавать другим (смартфоны, планшеты).
Как это выглядит на практике? Если Вы пользуетесь мобильным интернетом со смартфона, то тот отправляет TTL=64, но, если раздать с него Wi-Fi, то TTL подключенных устройств будет изменяться на единицу. Нагляднее это можно проследить на схеме ниже.
Таким образом, оператор видит, что TTL «прыгает» с 64 до 63, а то и до 127 (если это ноутбук с Windows), и делает вывод, что в сеть выходит не одно устройство, а больше. В зависимости от условий предоставления связи, это может привести к блокировке.
Мы не будем в этой статье рассматривать способы обхода блокировок. Скажем лишь, что значение TTL по умолчанию можно изменить. Возьмём для примера Windows. Если вы запустите ping localhost, то увидите, что, как и говорилось ранее, TTL=128.
Для изменения установленного по умолчанию значения TTL нам нужно открыть редактор реестра, пройти в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters и отредактировать (или создать, если его нет) параметр DefaultTTL. Если у вас 64-битная версия ОС, то тип параметра будет QWORD (64 бита), если 32-битная версия ОС, то тип DWORD (32 бита). Система исчисления — десятичная, а значение можете задать от 1 до 255. Например, 65. Тогда пакеты данных, пройдя через раздающий Wi-Fi смартфон, будут выдавать TTL=64.
После этого перезагрузите компьютер. Снова запустив ping localhost, можно увидеть, что значение TTL изменилось.
Отдельно стоит упомянуть протокол IPv6. Если вы его используете, то нужная вам в реестре ветка: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TCPIP6\Parameters.
О том, как провернуть подобную настройку в Ubuntu, читайте в статье по этой ссылке.
Время жизни
Время жизни (TTL ) или ограничение переходов — это механизм, ограничивающий продолжительность жизни или время жизни данных на компьютере или в сети. TTL может быть реализован в виде счетчика или отметки времени, прикрепленных к данным или встроенных в данные. По истечении заданного количества событий или временного интервала данные удаляются или повторно проверяются. В компьютерных сетях TTL предотвращает бесконечную циркуляцию пакета данных. В приложениях вычислений TTL обычно используется для повышения производительности и управления кэшированием данных.
IP-пакеты
Под Интернет-протокол, TTL — это 8-битное поле. В заголовке IPv4 TTL — это 9-й октет из 20. В заголовке IPv6 это 8-й октет из 40. Максимальное значение TTL равно 255., максимальное значение одного октета. Рекомендуемое начальное значение — 64.
Значение времени жизни можно рассматривать как верхнюю границу времени, в течение которого дейтаграмма IP может существовать в системе Интернет. Поле TTL устанавливается отправителем дейтаграммы и уменьшается каждым маршрутизатором на маршруте к месту назначения. Если поле TTL достигает нуля до того, как дейтаграмма достигает места назначения, дейтаграмма отбрасывается и отправляется дейтаграмма с ошибкой протокола управляющих сообщений Интернета (ICMP) (11 — Превышено время ). обратно отправителю. Назначение поля TTL — избежать ситуации, в которой недоставленная дейтаграмма продолжает циркулировать в системе Интернет, и такая система в конечном итоге становится заваленной такими «бессмертными».
Теоретически в IPv4 время жизни измеряется в секундах, хотя каждый хост, который передает датаграмму, должен уменьшить TTL как минимум на одну единицу. На практике поле TTL уменьшается на единицу на каждом переходе. Чтобы отразить эту практику, поле переименовано в ограничение перехода в IPv6.
DNS-записи
TTL ответа DNS, разрешающего google.com, что видно в Wireshark
TTL также встречается в Система доменных имен (DNS), где они устанавливаются официальным сервером имен для конкретной записи ресурса. Когда кэширующий (рекурсивный) сервер имен запрашивает у полномочного сервера имен запись ресурса, он будет кэшировать эту запись на время (в секундах), указанное в TTL. Если преобразователь заглушек запрашивает у кэширующего сервера имен ту же запись до истечения срока жизни, кэширующий сервер просто ответит уже кэшированной записью ресурса, а не получит ее снова с полномочного сервера имен. TTL для ответов NXDOMAIN (несуществующий домен) устанавливается исходя из минимума поля MINIMUM записи SOA и TTL самого SOA и указывает, как долго преобразователь может кэшировать отрицательный ответ.
Более короткие TTL могут вызвать большую нагрузку на авторитетный сервер имен, но могут быть полезны при изменении адреса критически важных служб, таких как веб-серверы или записи MX, и поэтому часто снижается администратором DNS перед перемещением службы, чтобы уменьшить возможные сбои.
Используемые единицы — секунды. Старое общее значение TTL для DNS составляло 86400 секунд, что составляет 24 часа. Значение TTL, равное 86400, будет означать, что если DNS-запись была изменена на полномочном сервере имен, DNS-серверы по всему миру могут по-прежнему отображать старое значение из своего кеша в течение 24 часов после последнего обновления клиентом.
В новых методах DNS, которые являются частью системы аварийного восстановления (DR), для некоторых записей намеренно установлено чрезвычайно низкое значение TTL. Например, 300-секундный TTL может помочь ключевым записям истечь через 5 минут, чтобы обеспечить быструю очистку этих записей по всему миру. Это дает администраторам возможность своевременно редактировать и обновлять записи. Значения TTL указаны «на запись», и установка этого значения для определенных записей иногда автоматически соблюдается всеми стандартными системами DNS по всему миру. Однако проблема остается в том, что некоторые кэширующие DNS-серверы имен устанавливают свои собственные TTL независимо от авторитетных записей, поэтому нельзя гарантировать, что все нижестоящие DNS-серверы будут иметь новые записи после истечения TTL.
HTTP
Время жизни также может быть выражено как дата и время истечения срока действия записи. Заголовок Expires: в HTTP-ответах, поле заголовка Cache-Control: max-age как в запросах, так и в ответах, а истекает Поле в файлах cookie HTTP таким образом выражает время жизни.