Другие статьи из раздела Устройство интернета

Сервис доменных имён

Сервис доменных имён позволяет извлекать записи из глобальной базы данных, то есть, осуществлять в ней поиск. Поиск в DNS сильно отличается от, например, поиска страниц в вебе при помощи поисковой системы. В DNS нельзя отправить "размытый" запрос: "хочу найти что-то похожее на google, но с картинками". Для того, чтобы запрашивать сведения в DNS, нужно точно сформулировать запрос - нужно знать ключ. В большинстве случаев таким ключом является доменное имя.

Так как DNS представляет собой множество серверов, на которые наложена некоторая иерархия имён, поиск ответа редко ограничивается одним или двумя действиями. Обычно, для того, чтобы добраться до нужного сервера, требуется найти множество промежуточных узлов в иерархии и опростить их. Так как практически в каждом случае для получения информации _из_ DNS сначала требуется получить информацию об узлах _самой_ DNS, из этой же системы, опрос называется рекурсивным. Выполняет такой опрос специальный сервер, который, в свою очередь, называется рекурсивным резолвером. (Резолвер - от английского resolve, в значении "определять".)

Предположим, что нам нужно определить IP-адрес для имени www.example.com, какой алгоритм следует выполнить? В несколько упрощённом виде, этот алгоритм можно описать следующим образом. Верхнее имя (.com) находится внутри корневого домена, поэтому на первом шаге необходимо отправить запрос к корневым серверам DNS и узнать адреса серверов, отвечающих за зону .com. Именно .com, так как .com - следующая за корневым доменом зона в нашем адресе. На втором шаге, отправив запрос к серверам зоны .com, узнаем адреса серверов, отвечающих за зону example.com. И уже у этих серверов, на третьем шаге, выясним адрес для www - потому что имя www, это имя третьего уровня, находящееся внутри example.com. На практике, всё работает несколько сложнее, так как в DNS есть много тонкостей и хитростей. Например, обычный рекурсивный резолвер скорее всего будет обращаться к узлам DNS не с запросом о DNS-серверах, а сразу с запросом об IP-адресе для полного имени. При этом промежуточные запросы могут потребоваться для поиска IP-адресов DNS-серверов, так как ответы будут содержать их имена, а не адреса. Но основной принцип рекурсивного опроса DNS именно такой: последовательно отправляются запросы на DNS-серверы, в соответствии с иерархией, закреплённой в записи имени.