Что такое DNS?
DNS (Domain Name System
- система доменных имён) - это полностью автоматизированная система, которая позволяет получать информацию о доменах. Чаще всего она используется для получения IP-адреса по доменному имени.
Учитывая разнообразие доменных имён и огромное количество запросов по всему миру, можно смело утверждать, что даже нескольких мощных серверов будет недостаточно для обработки всех запросов. Система доменных имён представляет собой иерархическую структуру многих DNS-серверов (что и является причиной деления доменов по уровням). Иерархия DNS-серверов соответствует иерархии доменов. Каждый DNS-сервер отвечает за конкретную доменную зону.
За обслуживание одной доменной зоны обычно отвечает несколько серверов, содержащих идентичную информацию. Как правило, они разделены не только логически, но и физически (то есть расположены далеко друг от друга), чтобы обеспечить сохранность информации в случае отказа одного из серверов. Синхронность информации на серверах поддерживается средствами специального протокола обмена данными.
В системе доменных имён имеется 13 корневых DNS-серверов, каждый из которых позволяет получить адреса DNS-серверов для любого домена верхнего уровня: ru
, com
, org
, net
и т.п. DNS-сервера верхнего уровня содержат списки серверов для всех своих доменов 2-го уровня и т.д.
Теоретически поиск IP-адреса для любого ресурса в Интернете начинается с запроса к корневому DNS-серверу. Корневой сервер возвращает IP-адрес сервера, отвечающего за соответствующую доменную зону верхнего уровня, и т.д. Пример получения IP-адреса для доменного имени yandex.ru
по шагам:
- Клиент (например, Интернет-браузер) отправляет запрос к DNS-серверу Интернет-провайдера:
Какой IP-адрес домена yandex.ru?
. - DNS-сервер Интернет-провайдера не знает нужный IP-адрес, поэтому отправляет запрос к корневому DNS-серверу:
Какой IP-адрес домена yandex.ru?
. - Корневой DNS-сервер не знает нужный IP-адрес, но он знает IP-адреса DNS-серверов для любого домена верхнего уровня. Он возвращает IP-адрес DNS-сервера, ответственного за зону
ru
. - DNS-сервер Интернет-провайдера отправляет запрос к DNS-серверу, ответственному за зону
ru
:Какой IP-адрес домена yandex.ru?
. - DNS-сервер, ответственный за зону
ru
, не знает нужный IP-адрес, но он знает IP-адреса DNS-серверов для любого домена 2-го уровня. Он возвращает IP-адрес DNS-сервера, ответственного за зонуyandex.ru
. - DNS-сервер Интернет-провайдера отправляет запрос к DNS-серверу, ответственному за зону
yandex.ru
:Какой IP-адрес домена yandex.ru?
. - DNS-сервер, ответственный за зону
yandex.ru
, возвращает в ответ нужный IP-адрес. - DNS-сервер Интернет-провайдера передаёт полученный IP-адрес клиенту (браузеру).
На практике поиск необходимого IP-адреса происходит отправлением запросов к DNS-серверам в обратной последовательности. То есть поиск начинается с серверов, наиболее близких к искомому домену. Причиной такого поведения является тот факт, что DNS-серверы (в том числе серверы Интернет-провайдеров) имеют возможность сохранять в кэше информацию обо всех выполненных запросах, вследствие чего повторный поиск IP-адреса может не потребоваться вовсе (чаще всего, повторные запросы к тому же домену не уходят дальше кэша DNS-сервера Интернет-провайдера). Это значительно уменьшает количество запросов и снижает загрузку DNS-серверов, а также ускоряет процесс обращения к нужному ресурсу. Допустимое время хранения информации в кэше приходит вместе с ответом с сервера.
Доменное имя и IP-адрес не всегда однозначно определяют друг друга. Одному IP-адресу может соответствовать несколько доменных имён. Это позволяет на одном сервере (компьютере) поддерживать несколько сайтов. В этом случае ответ сервера зависит от доменного имени в запросе. Такой подход к размещению сайтов называется виртуальным хостингом.
Верно и противоположное - одному доменному имени может соответствовать несколько IP-адресов. Это позволяет распределить нагрузку между несколькими серверами в случаях, когда ресурсов одного сервера недостаточно.