Администрирование ОС Solaris

       

Как работает DNS?


Представьте себе, что пользователь на компьютере с замысловатым именем 33-dialup.comstar.net решил посмотреть web-сайт www.example.ru. Что произойдет после того, как он наберет этот адрес в строке браузера?

Браузер нуждается в IP-адресе web-сервера, поэтому он запросит сервер имен о том, какой адрес у www.example.ru. Спрашивается, а какому серверу имен он задаст этот вопрос? Очевидно, тому, который указан в настройках компьютера 33-dialup.comstar.net. Там, скорее всего, указан адрес сервера имен провайдера, скажем, ns.comstar.net.

Получив этот запрос, сервер имен провайдера вначале поищет ответ в своем кэше, т.к. все DNS -запросы кэшируются. Если в кэше ответа нет, сервер имен проверит, нет ли ответа в его локальной базе. Его там не окажется, поскольку ns.comstar.net не отвечает за домен example.ru.

После этого сервер имен ns.comstar.net отправит запрос серверу имен корневого домена , как показано на рис. 17.2. Естественно, корневой сервер не имеет представления об адресе www.example.ru. Однако ему известен адрес сервера имен зоны ru. Этот адрес и будет сообщен вопрошающему серверу имен.

Сервер имен ns.comstar.net теперь отправит запрос серверу имен домена .ru, адрес которого он только что узнал. Тот сообщит ему адрес сервера имен example.ru, поскольку это самый близкий к www.example.ru из известных ему серверов имен.

Наконец, отправив запрос на сервер имен домена example.ru, сервер ns.comstar.net получит ответ на вопрос об IP-адресе компьютера www.example.ru, потому что этот компьютер находится в домене example.ru и его адрес известен серверу имен этого домена . Впрочем, если бы такого компьютера не существовало, то гарантированно достоверную информацию об этом все равно можно получить только от авторитетного сервера имен - то есть от сервера имен домена example.ru.

Теперь сервер ns.comstar.net отправляет долгожданную информацию на компьютер 33-dialup.comstar.net.

Почему сервер имен ns.comstar.net отправлял так много запросов, чтобы удовлетворить клиента, в то время как серверы имен других доменов ограничивались лишь ссылкой на известный им источник информации, пусть и самый близкий к авторитетному серверу имен из известных им? Может быть, потому, что сервер имен Comstar - самый вежливый в Сети? Оказывается, дело в том, что клиентская программа с 33-dialup.comstar.net прислала ему так называемый рекурсивный запрос, т.е.
просьбу найти сам адрес, а не присылать ссылку на ближайший сервер имен. Так поступают все клиенты. Серверы имен обычно настроены так, чтобы самостоятельно выполнить поиск, поэтому ns.comstar.net отправлял другим серверам имен нерекурсивные запросы.

Возникает вопрос: а не слишком ли долго ждал ответа пользователь у компьютера 33-dialup.comstar.net? Как ни странно, недолго. И объясняется это тем, что DNS -запросы - это высокоприоритетный трафик, и маршрутизаторы в сети стараются передавать их побыстрее, вне очереди (конечно, всегда может организоваться "очередь тех, кто без очереди", но в ней все-таки стоять немного лучше). Кроме того, все вышеупомянутые серверы имен связаны достаточно быстрыми каналами связи. И наконец, высока вероятность, что на каком-то этапе ответ на запрос окажется в кэше промежуточного сервера имен, и часть запросов окажется ненужной. Например, если в кэше сервера имен ns.comstar.net есть адрес сервера имен домена ru (а это весьма вероятно), то запрос к серверу имен корневого домена не потребуется.

Из этого примера ясно, что любой сервер имен обязан знать адреса серверов имен корневого домена . Этих серверов несколько в разных странах, и они регулярно обмениваются информацией, несмотря на то, что список доменов верхнего уровня и ответственных за них серверов имен меняется нечасто. Список серверов имен корневого домена всегда входит в дистрибутив ПО сервера имен.


Содержание раздела