Кэширование

 в раздел Оглавление

«DNS и BIND»

Руководство для системных администраторов

2. Как работает DNS

Кэширование

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

Чтобы обработать рекурсивный запрос, DNS-серверу приходится самостоятельно сделать довольно много запросов. Однако в процессе сервер получает большое количество информации о пространстве доменных имен. Каждый раз, получая список DNS-серверов в ссылке, он знакомится с серверами, авторитетными для какой-то зоны, и узнает адреса этих серверов. Когда завершается процесс разрешения и необходимые данные возвращаются клиенту, сделавшему исходный запрос, новые знания могут быть сохранены для последующего использования. В сервере BIND даже реализовано отрицательное кэширование: если авторитетный сервер возвращает информацию о том, что запрошенное имя домена или указанный тип данных не существует, локальный сервер временно кэширует и эту информацию.

DNS-серверы кэшируют получаемые данные, чтобы ускорить обработку последующих запросов. Когда в следующий раз DNS-клиент сделает запрос по доменному имени, о котором серверу уже что-то известно, процесс разрешения пройдет быстрее. Если сервер кэшировал ответ, положительный или отрицательный, ответ просто возвращается клиенту. Но даже если готового ответа у DNS-сервера нет, он, возможно, «помнит в лицо» те DNS-серверы, которые являются авторитетными для зоны этого конкретного доменного имени, и будет напрямую работать с ними.

Процесс разрешения для baobab.cs.berkeley.edu
Рис.2.16 Процесс разрешения для baobab.cs.berkeley.edu

Предположим, наш DNS-сервер уже выяснял адрес для eecs.berkeley. edu. В процессе были кэшированы имена и адреса DNS-серверов eecs.berkeley.edu и berkeley.edu (а также IP-адрес eecs.berkeley.edu). Если теперь клиент пошлет DNS-серверу запрос, касающийся адреса для имени baobab.cs.berkeley.edu, при обработке этого запроса наш сервер сможет пропустить отправку запросов корневым DNS-серверам. Опознав в berkeley.edu ближайшего предка baobab.cs.berkeley.edu, о котором уже что-то известно, наш сервер начнет с запроса к DNS-серверу berkeley.edu (рис.2.16). С другой стороны, если бы наш DNS-сервер выяснил, что адреса для eecs.berkeley.edu не существует, в следующий раз на подобный запрос он вернул бы соответствующий ответ из кэша.

Помимо ускорения разрешения, кэширование устраняет необходимость вовлекать в процесс разрешения корневые DNS-серверы для случаев, когда ответ может быть получен локально. Это означает уменьшение зависимости от корневых серверов и снижение нагрузки на них.

Время жизни

Разумеется, DNS-серверы не могут кэшировать данные навсегда. Иначе изменения на авторитетных серверах никогда не распространялись бы по сети. Удаленные серверы просто продолжали бы использовать кэшированную информацию. Поэтому администратор зоны, которая содержит данные, обычно определяет для этих данных время жизни (time to live, или TTL). Время жизни - это интервал времени, в течение которого произвольному DNS-серверу разрешается пользоваться кэшированными данными. По окончании этого временного интервала сервер обязан удалить кэшированную информацию и получить новую от авторитетных DNS-серверов. Это касается также кэшируемых отрицательных ответов, сервер имен обязан удалять их на случай, если на авторитетных DNS-серверах появилась новая информация.

Когда администратор выбирает время жизни для своих данных, то фактически пытается найти золотую середину между производительностью и согласованностью данных. Небольшой показатель TTL гарантирует, что данные о зоне будут согласованы по всей сети, поскольку удаленные серверы будут обязаны быстрее выбросить данные из кэша и обратиться на авторитетные серверы за новыми данными. С другой стороны, увеличивается нагрузка на DNS-серверы зоны и увеличивается время разрешения, когда речь идет об информации из этой зоны.

Напротив, большой показатель TTL сокращает среднее время, затрачиваемое на получение информации из зоны, поскольку данные о зоне кэшируются в течение длительного времени. Минус же в том, что информация на удаленных DNS-серверах в течение более длительного времени может не соответствовать действительности в случае изменения данных локальных DNS-серверов.

Но хватит уже теории - читателям, вероятно, не терпится с ней закончить. Однако, прежде чем можно будет перейти к реальным зонам и серверам имен, предстоит сделать домашнее задание, которое мы дадим в следующей главе.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и абзацы переносятся автоматически.
CAPTCHA на основе изображений
Введите символы, которые показаны на картинке.