Где в иерархии DNS может происходить кэширование и как пересылаются запросы?

Где в иерархии DNS может происходить кэширование и как пересылаются запросы?

Для того, чтобы имя хоста было преобразовано в его IP-адрес, есть несколько DNS-серверов, которые могут быть опрошены. Если предположить, что кэширование не происходит, то оно идет от того, кто сделал запрос (клиент), рекурсивного DNS, корневого DNS, TLD DNS и, наконец, авторитетного сервера имен.

Я правильно понял порядок? Пересылаются ли запросы или сервер просто отвечает IP-адресом сервера на следующем уровне, с которым должен связаться клиент? Например, делает ли рекурсивный сервер имен фактический запрос на корневом сервере или просто передает IP-адрес корневого сервера дальше? Я предполагаю, что это первый этап для целей кэширования. Кроме того, на каких этапах может происходить кэширование, например, будет ли корневой сервер иметь кэшированный ответ от сервера TLD? Поскольку существует всего 13 уникальных корневых серверов, какой смысл иметь этот уровень вместо того, чтобы просто напрямую обращаться к серверу TLD?

решение1

Итак, это глубокая тема, так что это только поверхность, но учтите, что есть несколько способов ответить на вопросы.

В общем случае тип доступного запроса будет определять, сколько запросов необходимо сделать клиенту для разрешения пути типа a.b.c.com.

Для рекурсивного разрешения клиент запрашивает сервер один раз, для полного имени, которое ищется. Сервер будет обрабатывать запросы к корневым серверам, а затем будет разрешать Nameservers для Cи затем B, и будет запрашивать Bимя хоста A. Затем локальный сервер отправит обратноодинокийответ клиенту.

Для нерекурсивного разрешения клиент отправит запрос на серверы имен для C.com, затем запросит у этого сервера серверы имен для B.C.com, а затем запросит у этих серверов хост A. Это и есть тот ответ, который мы хотели получить с самого начала. Однако в этом случаеклиенту пришлось сделать 3 отдельных запросачтобы получить это.

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

Теперь о кэшировании: кэш тем ценнее с точки зрения производительности сети, чем ближе он к клиенту. Тем не менее, компромисс заключается в том, что если кэш находится слишком близко и представляет собой не слишком разнообразный набор кэшированных ответов, кэш может использоваться не очень часто. Размещение кэша на один или два уровня выше по течению, так что кэш представляет объединенные результаты большего количества пользователей и, таким образом, с большей вероятностью будет иметь ответы, может иметь ценность.

решение2

Я правильно понял заказ?

Общий порядок — да, но это не прямая линия: корневой сервер не пересылает ваш запрос куда-либо еще, он возвращается к резолверу с ответом-рефералом (указывающим резолверу на необходимость запроса в другом месте). То же самое касается сервера TLD и сервера домена.

Пересылаются ли запросы или сервер просто отвечает IP-адресом сервера следующего уровня, с которым должен связаться клиент?

Оба варианта поведения имеют место, но в разных местах.

Например, выполняет ли рекурсивный сервер имен фактический запрос на корневом сервере или он просто передает IP-адрес корневого сервера?

Рекурсивный сервер выполняет фактические запросы. Это буквально то, что делает его рекурсивным сервером: после того, как он принял запрос клиента, он сам будет делать дальнейшие запросы, пока не сможет вернуть окончательный результат. (Это потому, что клиент, работающий на вашей ОС, является всего лишь заглушкой-разрешителем, которая не обладает всеми необходимыми функциями.)

Однако корневые/TLD/доменные серверы не являются рекурсивными — они отвечают только за те домены, для которых они авторитетны, и дают только перенаправления (рефералы) для остальных. Они никогда не делают дальнейших запросов самостоятельно.

Кроме того, на каких этапах может происходить кэширование, например, будет ли корневой сервер кэшировать ответ от сервера TLD?

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

С другой стороны, корневые/TLD/доменные серверы никогда не обрабатывают рекурсивные запросы – они не запрашивают ничего другого, поэтому им не нужно ничего кэшировать. (Они отвечают только за домены, которые имавторитетныйо.)

Поскольку существует всего 13 уникальных корневых серверов, какой смысл в этом уровне, если вы не хотите напрямую обращаться к серверу TLD?

Как резолверы всех доменов узнают, где находятся серверы TLD?

Помните, что не существует "того самого" сервера TLD. Для каждого TLD есть свои серверы TLD – например, у comTLD есть один набор серверов, euу TLD – другой. Существуют буквально сотни TLD, поэтому статический список не подойдет.

Корень DNS упрощает эту проблему — вместо списка всех TLD и их серверов есть только один корневой домен со своими серверами, что приводит к значительно меньшему первоначальному списку и одному, который изменяетсяоченьредко, поэтому программное обеспечение решателя может фактически включать его копию. Большинство рекурсивных решателей включают копию "корневых подсказок".

(Также обратите внимание, что существует 13 адресов корневых серверов, поскольку в прежние времена один адрес означал ровно один хост, но теперь это уже не так — Интернет поддерживает маршрутизацию anycast, поэтому почти каждый из этих адресов на самом деле соответствует сотням уникальных экземпляров в реальности.)

Связанный контент