Принципы работы DNS - Компьютерные сети

Рассмотрим схему подачи запроса серверу. Студент Стэнфордского университета с университетского компьютера пытается зайти на сайт воскресной школы мехмата sunschool. math. sfedu. ru. Чтобы определить IP-адрес компьютера sunschool. math. sfedu. ru, браузер студента вызывает DNS-клиент (resolver) - функцию API операционной системы. Она, используя IP-адрес локального DNS-сервера из настроек сети на компьютере студента, посылает запрос в виде UDP-пакета DNS-серверу. Пусть сервер будет atalante. stanford. edu.

Предположим, что локальный сервер Стэнфордского университета имен не знает IP-адреса sunschool. math. sfedu. ru. Тогда он посылает запрос одному из корневых серверов, адреса которых содержатся в его базе данных, пусть это будет f. root-servers. net. Таким образом получается рекурсивный запрос: DNS-клиент студента обращается к локальному DNS-серверу, а тот к корневому.

Маловероятно, что корневой сервер знает адрес хоста sunschool. math. sfedu. ru. Скорее всего он даже не знает адреса сервера sfedu. ru, однако он должен знать все свои дочерние домены - домены верхнего уровня. Но продолжать рекурсию он не будет. Дело в том, что корневые домены сильно загружены запросами, поэтому сконфигирированы так, что возвращают список DNS-серверов, которые должны больше знать о sunschool. math. sfedu. ru - это DNS-серверы домена ru. Получив список DNS-серверов, локальный сервер Стэнфордского университета направляет запрос одному из серверов списка (обычно первому), например, ns. ripn. net. Тот тоже загружен и возвращает адреса DNS-серверов дочерней зоны sfedu. ru. Последние два запроса называются итеративными (от слова "итерация"). Затем локальный сервер Станфордского университета обращается к первому в списке серверу домена sfedu. ru. Пусть это будет ns. sfedu. ru. В данном примере оказалось, что он тоже не знает IP-адреса sunschool. math. sfedu. ru. DNS-сервер нашего университета не так загружен, как корневые серверы или серверы доменов верхнего уровня, поэтому его сконфигурировали выполнять рекурсивные запросы. Он обращается к серверу домена math. sfedu. ru - это ns. math. sfedu. ru, получает искомый IP-адрес и возвращает его в ответе локальному серверу Стэнфордского университета, который, в свою очередь, сообщает его компьютеру студента.

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

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

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

Похожие статьи




Принципы работы DNS - Компьютерные сети

Предыдущая | Следующая