Домены. Все, что нужно знать о ключевом элементе Интернета
Шрифт:
Таблица 1. Корневые серверы, административная и технологическая структуры по состоянию на 18 января 2014 года
Примечание. Изучая таблицу, обратите внимание на то, что серверы имеют один или два адреса (при этом второй адрес – IPv6), а еще на то, что некоторые из них включают в себя несколько десятков узлов. Как же так? Ответ кроется в технологии Anycast, которая позволяет распределять трафик, адресованный конкретному IP-адресу, по многим физическим компьютерам,
Рис. 1. На карте показано географическое размещение корневых серверов. Источник: http://www.root-servers.net
Таким образом, технически корневая зона глобальной DNS обслуживается децентрализованной системой из множества физических серверов, расположенных в различных странах мира и физически управляемых различными организациями. Такая система сложилась исторически в результате заключения соглашений между многими заинтересованными сторонами. Очевидно, тут есть масса преимуществ: децентрализованная (в плане компьютерного обеспечения), распределенная по земному шару система надежнее и гибче, она масштабируется с меньшими сложностями, она лучше реагирует на изменения нагрузки. Кроме того, считается, что децентрализованный подход делает Интернет более демократичным.
Однако не стоит спешить с выводами о том, что корневая зона DNS – это децентрализованная система, не имеющая центрального управления. На первый взгляд такое замечание кажется парадоксальным: ведь только что мы выяснили, что корневых серверов множество и они не только принадлежат разным компаниями, но и находятся в разных странах мира. Вся хитрость в том, что одно дело – серверы, физические компьютеры, и совсем другое – данные, которые на этих компьютерах находятся.
Для сохранения целостности системы имен корневые серверы должны содержать одинаковую информацию о корневой зоне. Это очень важный момент, политическая составляющая которого никак не меньше технической. Поэтому вся распределенная система корневых серверов DNS получает сведения о корневой зоне из единственного источника. Этим источником является специальный защищенный скрытый сервер, находящийся под управлением компании из США VeriSign. Все корневые серверы по расписанию копируют сведения об адресации со скрытого сервера-источника и без изменений (это строго оговорено) передают данную информацию ее потребителям в Интернете.
Другими словами, корневые серверы являются распределенной и децентрализованной компьютерной системой, но это лишь транспорт, механизм доставки. Корневая зона DNS ими ретранслируется из единого центрального источника. Поэтому расхожее мнение о децентрализованной и никем в одиночку не управляемой DNS, которое часто можно встретить в интернетовских форумах, в корне неверно.
Ключевую роль в системе имен Интернета играют также серверы доменов первого уровня (например, RU), обеспечивающие распространение по всей Сети DNS– информации о домене, находящемся в их зоне ответственности.
Все хитрые технологические решения в построении практически работающей DNS направлены на то, чтобы каждый из сотен миллионов разбросанных по всему миру компьютеров, подключенных к Интернету, имел возможность корректного преобразования адресов.
Важно понимать, что все серверы DNS делятся на два типа согласно основной роли, которую они играют. Одни отвечают за хранение и распространение информации о вверенном им домене в глобальной Сети, другие – за поиск информации о том или ином адресе DNS. Иногда обе роли могут быть объединены в одном физическом сервере, но использовать такую конфигурацию не рекомендуется.
Серверы, выполняющие поиск информации в DNS, призваны отвечать на запросы своих клиентов о тех или иных адресах. Ответы они ищут, опрашивая другие серверы DNS. То есть в рамках обеспечения работы сервиса доменных имен различные DNS-серверы обмениваются между собой информацией.
Серверы, опрашивающие DNS в поисках нужных адресов, называются рекурсивными резолверами (от англ. resolve – решать, решение, резолюция), или просто резолверами (также иногда используются термины «сопоставитель» и «рекурсор»).
С точки зрения пользователя и в сильно упрощенном виде алгоритм работы DNS-резолвера по поиску адресов сайтов можно описать следующим образом. Когда пользователь вводит в адресной строке браузера адрес сайта, например hat.nic.ru, компьютер выполняет запрос к тому или иному известному ему DNS-резолверу, спрашивая этот сервер о том, какой IP-адрес связан с «доменным адресом», указанным пользователем. В ответ сервер-резолвер DNS, проверив соответствие по своим внутренним таблицам или выполнив запрос к другим серверам, присылает искомый IP-адрес. Далее браузер устанавливает соединение с сайтом уже по IP-адресу.
По отношению к другим серверам DNS-резолвер выступает клиентом, так как отправляет запросы, на которые они отвечают с теми или иными данными. У резолвера есть и свои клиенты, для них он – сервер. Это операционные системы на компьютерах, обслуживаемых данным резолвером. Например, в сети интернет-провайдера обязательно существует резолвер, обслуживающий его клиентов. Традиционно им является сервер, доступный изнутри сети по известному IP-адресу.
В ряде случаев работа DNS-резолвера, пытающегося выяснить IP-адрес, соответствующий заданному имени домена, начинается с запроса к одному из корневых серверов. Корневой сервер, конечно, не знает ответа для каждого из имен, существующих в Интернете, однако он может сообщить клиенту адреса тех серверов, которые располагают информацией об искомом имени, – и клиент обратится к следующим серверам с тем же запросом. В этом и состоит рекурсия. Ниже мы разберем процесс подробно.
Попробуем проследить за запросами на простом примере. Предположим, что требуется определить IP-адрес, соответствующий домену www.nic.ru.
Сразу нужно обговорить пару важных моментов. Во– первых, резолвер, занимающийся поиском имен, – это обычно специальная программа, работающая на том или ином компьютере. Как мы разобрались, резолвер обрабатывает запросы вида «А какой адрес у www.nic. ru?», поступающие от других программ и компьютеров. Резолвер может быть и локальным, то есть работающим на том же компьютере, где, например, запущен браузер. Во-вторых, наиболее важные из резолверов (кэширующие DNS-серверы) обслуживают множество разных запросов и имеют собственный кэш адресов (особую память), в котором в течение определенного времени сохраняются ранее полученные из DNS сведения об адресации внутри доменов. Наличие такого кэширования – важнейшая особенность DNS, делающая эту систему распределенной и устойчивой к большим нагрузкам.
Вернемся к нашему примеру: получив запрос о www. nic.ru резолвер прежде всего проверит свой кэш; если там не удастся найти ответа на вопрос об адресе узла с именем www.nic.ru, то рекурсивный резолвер начнет опрос глобальной DNS с запроса к одному из корневых серверов. Конечно, корневой сервер не знает ответа на вопрос о www.nic.ru, но он сообщит резолверу адреса тех серверов, которые отвечают за доменную зону .ru, благо они содержатся в корневой доменной зоне. Серверы .ru в свою очередь отправят резолвер к серверам, отвечающим за .nic.ru, и те наконец ответят о www.nic.ru, то есть об адресе узла, соответствующего домену третьего уровня www.nic.ru. Вот так рекурсивно работает DNS.