Tw-city.info

IT Новости
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Служба разрешения доменных имен

Служба разрешения доменных имен

В сетях TCP/IP адрес узла представляет собой 32-битное число. Однако обычному человеку сложно запомнить хотя бы пару таких адресов. Сетевые узлы обычно назвают привычными легко запоминаемыми и информативными именами, например gauss или strange .Чтобы пересылать данные через сеть, необходимо, исходи из символьного имени, определить соответствующий IP-адрес. Этот процесс называется разрешением имен сетевых узлов (host name resolution).

Приложение, которому требуется определить IP-адрес, поделает это самостоятельно, а обращается к набору специальных библиотечных функции, которые осуществляют прозрачное преобразование. Этими функциями являются gethostbymime (3) и gethostbyaddr (3). Обычно эти функции наряду с некоторыми сопутствующими процедурами группируются и отдельную библиотеку, называемую библиотекой револьвера (resolver library),В операционной системе Linux они являются частью стандартной библиотекиlibc. Для краткости этот набор функций часто называют резольвером (resolver).

В небольших сетях (например, Ethernet) поддерживать таблицы соответствия имен узлов IP-адресам вручную не сложно. Обычно эта информация хранится и файле /etc/hosts. Если в сети появляются новые компьютеры, удаляются старые или происходит переопределение какого-либо адреса, все, что требуется сделать, — это обновить содержимое файла hosts на всех компьютерах сети. Очевидно, что задача обновления всех этих файлов может оказаться весьма обременительной, если речь идет о сети с большим количеством узлов.

Одним из решений этой проблемы является использование сетевой информационной системы (Network Information System, NIS), разработанной компанией Sun Microsystems. Эту систему также иногда называют желтыми страницами (Yellow Pages, YP). При использовании NIS файлhosts хранится на центральном компьютере сети, и все клиенты сети могут в случае надобности получить интересующую их информацию о соответствии IP-адресов прямо оттуда. Этот подход приемлем в условиях средних по размеру локальных сетей, так как он подразумевает централизованное хранение базы данных hosts.

Изначально в Интернете (вернее в его прородителе — APRANET) информация об адресах и именах сетевых узлов также хранилась в одном файле HOSTS.TXT. Этот файл поддерживался Сетевым информационным центром (Network Information Center, NIC) >и должен был загружаться каждым из узлов, подключенным к Интернету. По мере роста сети появлялось все больше связанных с этим проблем. Помимо чисто административных неудобств, вызванных необходимостью регулярного обновления и переустановки файлаHOSTS.TXT, возникли сложности с его распространением. Нагрузка на серверы, предоставляющие этот файл для всеобщего использования, значительно возросла. Необходимость присвоения каждому новому узлу уникального имени также была серьезной проблемой.

Для решения обеих этих проблем в 1984 году была принята новая схема разрешения имен. Это была служба разрешения доменных имен (Domain Name System, DNS), разработанная Полом Мокапетрисом (Paul Mockapetris).

Служба разрешения доменных имен

4.3.3 Разрешение доменных имён

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

Различные типы именных серверов:

  • Локальный именной сервер — именной сервер, адрес которого сконфигурирован в рабочей станции. К этому серверу обращается клиент вначале с запросом на разрешение DNS-имени.
  • Корневой именной сервер (Root Name Server) — если же локальный сервер не знает ответ, то он выполняет итеративные запросы к корневому серверу и т. д. точно так же, как это делал клиент в первом варианте; получив ответ, он передает его клиенту, который все это время просто ждал его от своего локального DNS-сервера.
  • Авторитетный сервер имен (Authoritative Name Server) — сервер, администрирующий определённую зону пространства имён. Другие серверы могут получить копию пространсва имён зоны, но не могут в него вносить изменения.

Разрешение доменных имён ведётся в соответствии с моделью клиент-сервер. Компьютер, желающий получить адрес, есть клиент, который посылает DNS запрос своему локальному серверу имён, используя протокол UDP.

В общем случае порядок разрешения имён следующий:

  • Контроль клиентского буфера имён и файлов хостов: клиент проверяет находится ля искомое имя уже в буфере имён локального сервера или записан в файлы хостов
  • Запрос DNS сервера: клиент обращается к локальному серверу на разрешение имени. DNS сервер сначала смотрит разрешение имени в своей зоне имён и в промежуточной памяти (кэш). Если имя не найдено, то посылается запрос дальше по специальным внешним адресам разрешения имён (Forwarders) и локальный DNS сервер выступает посредником. Если внешний сервер не имеет соответствующей конфигурации, то используются адреса корневых именных серверов для итеративного разрешения имени.

Рисунок 4 ‑ 9 . DNS разрешение имени

Рисунок 4 ‑ 10 . Разрешение имён путём итераций запросов корневому серверу
(Источник: http://commons.wikimedia.org/wiki/File:Dns-wikipedia.gif)

Обработка запроса заканчивается с загрузкой результата в буфер имён клиентской машины. Сделанная запись в буфер имеет определённое время действия («срок годности») или TTL (Time to Live). Запись значения TTL устаревает с течением времени и, если запрос обрабатывается посредством нескольких DNS серверов, то каждый сервер заносит в буфер полученное значение записи TTL на момент занесения. Такой механизм обеспечивает то, что циркулирующая DNS запись соответствует действительному значению в зоне сервера. Ответ DNS сервера может быть и негативным, который также заносится в буфер клиента. В такой ситуации до того как сделать новый запрос надо локальный буфер имён обнулить (Windows’is ipconfig /flushdns).

Как работает DNS (domain name system)?

Что такое DNS

DNS (domain name system) — это система, обеспечивающая работу привычных нам доменных имен сайтов. Связь между устройствами в сети Интернет осуществляется по IP адресам, например: «192.64.147.209». Однако, запомнить IP адреса сложно, поэтому были придуманы удобные для человека доменные имена, например: «google.com».

Компьютер / сервер не хранит таблицу соответствия доменов и их IP адресов. Точнее, не хранит всю таблицу, а временно запоминает данные для часто используемых доменов. Когда в браузере вводится домен сайта, компьютер автоматически узнает его IP адрес, и отправляет по нему запрос. Этот процесс называется «разрешение адреса домена» (domain resolving).

Разберемся, из чего состоит система DNS, и как она работает.

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

Система доменных имен состоит из следующих компонентов:

Иерархическая структура доменных имен:

  • Доменные зоны верхнего уровня (первого уровня) – например: «ru», «com», или «org». Они включают в себя все доменные имена, входящие в эту зону. В любую доменную зону может входить неограниченное количество доменов.
  • Доменные имена (доменные зоны второго уровня) – например: «google.com» или «yandex.ru». Т.к. система доменных имен является иерархичной, то «yandex.ru» можно также назвать поддоменом вышестоящей зоны «ru». Поэтому, правильнее указывать именно уровень домена. Однако, на практике, доменную зону любого уровня называют просто «доменом».
  • Поддомены (доменные зоны третьего уровня) – например: «api.google.com» или «mail.yandex.ru». Могут быть доменные зоны 4, 5 уровней и так далее.

Обратите внимание, что «www.gооgle.com» и «google.com» — это, фактически, разные домены. Надо не забывать указывать А-записи для каждого из них.

DNS сервер или NS (name server) сервер – поддерживает (обслуживает) доменные зоны, которые ему делегированы. Он непосредственно хранит данные о ресурсных записях для зоны. Например, что сервер, на котором находится сайт «example.ru», имеет IP адрес «1.1.1.1». DNS сервер отвечает на все запросы, касательной этих доменных зон. Если ему приходит запрос о домене, который ему не делегирован, то он спрашивает ответ у других DNS серверов.

Читать еще:  Понизить контроллер домена до рядового сервера

DNS записи (ресурсные записи) – это набор записей о доменной зоне на NS сервере, которые хранят данные необходимые для работы DNS. На основании данных в этих записях, DNS сервер отвечает на запросы по домену. Список записей, и их значение, вы можете найти ниже.

Корневые DNS сервера (на данный момент их 13 во всем мире) хранят данные о том, какие DNS сервера обслуживают зоны верхнего уровня.

DNS сервера доменных зон верхнего уровня — хранят информацию, какие NS сервера обслуживают тот или иной домен.

Для того, чтобы узнать IP адрес, домена компьютер / сервер обращается к DNS-серверу, который указан у него в сетевых настройках. Обычно, это DNS сервер Интернет провайдера. DNS сервер проверяет делегирован домен ему или нет. Если да, то сразу отвечает на запрос. Если нет, то запрашивает информацию о DNS сервере, обслуживающем этот домен, у корневого сервера, и затем у сервера доменных зон верхнего уровня. После этого, непосредственно делает запрос на NS сервер, обслуживающий этот домен, и транслирует ответ вашему компьютеру / серверу.

Кэширование данных используется на всех устройствах (компьютерах, северах, DNS серверах). То есть, они запоминают ответы на последние пришедшие к ним запросы. И когда приходит аналогичный запрос, они просто отвечают то же самое, что и в предыдущий раз. Например, если вы в браузере открыли сайт google.com первый раз после включения, то компьютер сделает DNS запрос, а при последующих запросах будет брать данные, которые ему были присланы DNS сервером в первый раз. Таким образом, для популярных запросов не надо каждый раз проходить всю цепочку и генерировать запросы к NS серверам. Это значительно снижает нагрузку на них, и увеличивает скорость работы. Однако, как результат, обновление данных в системе DNS происходит не сразу. При изменении IP адреса домена, информацию об этом будет расходиться по сети Интернет от 1 до 24 часов.

Регистрация/выделение доменов

У каждой доменной зоны первого уровня есть своя организация, которая устанавливает правила выделения доменов и обеспечивает работу этой зоны. Например, для доменных зон RU, SU и РФ – это Координационный центр национального домена сети Интернет https://cctld.ru. Эти организации устанавливают правила работы и технические требования к регистраторам доменов.

Регистраторы доменов – это компании, которые непосредственно регистрируют новые домены в рамках доменной зоны первого уровня для конечных клиентов. Организуют техническое взаимодействие с реестром доменных имен. В их личном кабинете владелец домена настраивает, какой DNS сервер будет поддерживать домен.

Администратор домена (владелец) – лицо, которому непосредственно принадлежат права на доменное имя. Он может управлять доменом, от него регистратор принимает заявки на внесение изменений.

Делегирование домена – указание для него DNS серверов, которые будут его обслуживать.

Основные DNS записи

Существуют следующие основные DNS (ресурсные) записи:

А – содержит информацию об IPv4 адресе хоста (сервера) для домена. Например, 1.1.1.1.

ААА – содержит информацию об IPv6 адресе хоста (сервера) для домена. Например, 2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d.

MX – содержит данные о почтовом сервере домена. При этом указывается именно имя почтового сервера, например mail.example.com. Т.к. у домена может быть несколько почтовых серверов, то для каждого из них указывает приоритет. Приоритет задается числом от 0 до 65535. При этом «0» — это самый высокий приоритет. Принято по умолчанию для первого почтового сервера указывать приоритет «10».

TXT – дополнительная информация о домене в виде произвольного текста. Максимальная длина 255 символов.

SRV – содержит информацию об имени хоста и номере порта, для определенных служб / протоколов в соответствии с RFC 2782 http://www.rfc-editor.org/rfc/rfc2782.txt. Содержит следующие поля:

    _Service._Proto.Name ( Пример: _jabber._tcp.jabber ), где:

  • Service: название службы (пример: ldap, kerberos, gc и другие).
  • Proto: протокол, при помощи которого клиенты могут подключиться к данной службе (пример: tcp, udp).
  • Name: имя домена, в котором размещена данная служба.
  • Приоритет – также как для MX записи указывает приоритет для данного сервера. Задается числом от 0 до 65535. При этом «0» — это самый высокий приоритет.
  • Вес – Относительный вес для распределения нагрузки между серверами с одинаковым приоритетом. Задается целым числом.
  • Порт – номер порта, на котором располагается служба на данном сервере.
  • Назначение — доменное имя сервера, предоставляющего данную службу.
  • NS – имя DNS сервера, поддерживающего данный домен.

    CNAME (каноническое имя хоста / canonical name) – используется для перенаправления на другое доменное имя. Например, имя сервера изменилось с example.com на new.com. В таком случае в поле «Alies» для записи cname надо указать — example.com, а в поле «Canonical name» — new.com. Таким образом, все запросы на example.com автоматически будут перенаправлены на new.com.

    SOA – базовая запись о домене. В ней хранится само имя домена и время жизни данных о домене — TTL. TTL (time-to-live) определяет какой период времени DNS сервер получив информацию о зоне будет хранить ее у себя в памяти (кэшировать). Рекомендуемое значение 86400 – 1 день. Значение указывается в секундах.

    Служба разрешения доменных имен

    Согласно руководящим материалам (RFC-1034, RFC-1035) система доменных имен состоит из трех основных частей:

    • Всего множества доменных имен (domain name space)
    • Серверов доменных имен (domain name servers)
    • Клиенты DNS (Resolver-ы)

    Множество доменных имен было подробно рассмотрено в материале «Доменная адресация. Немного истории и принципы построения», поэтому сосредоточимся на двух оставшихся компонентах серверах и resolver-ах.

    Сервис системы доменных имен строится по схеме «клиент-сервер». В качестве клиентской части выступает прикладной процесс, который запрашивает информацию о соответствии имени адресу (или наоборот адреса имени). Это программное обеспечение и называют resolver. В качестве сервера выступает прикладная программа-сервер.

    Чаще всего, Resolver не является какой-либо программой или системной компонентой. Это набор процедур из библиотеки прикладного программного обеспечения (например, из библиотеки libc), которые позволяют программе, отредактированной с ними, выполнять запросы к системе доменных имен и получать ответы на них. Эти процедуры обращаются к серверу доменных имен и, таким образом, обслуживает запросы прикладных программ пользователя.

    Ряд производителей операционных систем, например, Sun или SGI, предлагали решения, в которых resolver являлся отдельным процессом, и прикладные программы через него реализовывали взаимодействие с DNS.

    Другой пример реализации resolver-а — это браузеры Nescape некоторых версий, где для ускорения процесса получения ответов на запросы к DNS запускался отдельный процесс resolver-a.

    Самостоятельный resolver может быть собран и в BIND версии 9. Это так называемый lightweight resolver. Он состоит из rosolver-демона и библиотеки взаимодействия с этим демоном, процедуры которой линкуются с прикладным ПО. Данный resolver позволяет не только посылать запросы к серверу доменных имен, но кэшировать соответствия между доменным именем и IP-адресом.

    В качестве серверов доменных имен чаще всего используются различные версии BIND (Berkeley Internet Name Domain). Если сервер реализован на платформе Windows, то тогда используют решение от Microsoft, хотя для этой платформы также существуют версии BIND.

    Общую схему взаимодействия различных компонентов системы доменных имен можно изобразить так, как это представлено на следующем рисунке:

    Читать еще:  Домен на виртуальной машине

    Рис1. Рекурсивный запрос resolver и нерекурсивная (итеративная) процедура на разрешение доменного имени сервером доменных имен.

    Данная схема разрешения имени (установки соответствия между именем и IP-адресом) называют нерекурсивной (итеративной). Чем она отличается от рекурсивной мы обсудим позже.

    Поясним приведенную схему нерекурсивной процедуры разрешения запроса:

    1. Прикладная программа через resolver запрашивает IP-адрес по доменному имени у местного сервера (запрос resolver рекурсивный, т.е. resolver просит server найти ему адрес).
    2. Местный сервер сообщает прикладной программе IP-адрес запрошенного имени, выполняя при этом нерекурсивный опрос серверов доменных имен. При этом:
      1. если адрес находится в зоне его (местного сервера) ответственности, сразу сообщает его resolver-у,
      2. если адрес находится в зоне ответственности другого сервера доменных имен, то обращается к корневому серверу системы доменных имен за адресом TLD-сервера (top-level domain server),
      3. обращается к TLD-серверу за адресом,
      4. получает от него адрес удаленного сервера,
      5. обращается к удаленному серверу за адресом,
      6. получает от удаленного сервера адрес,

    В данном случае мы рассмотрели вложенность доменного имени второго порядка., т.е. хост имел имя похожее на quest.kuku.ru или даже kuku.ru.

    Последнее важно понять, т.к. корпоративные почтовые адреса типа user@kuku.ru как раз и требуют от прикладного программного обеспечения обращения за IP-адресом хоста kuku.ru. TLD-сервер домена ru не обладает информацией о том, какому IP-адресу данное имя соответствует, но при этом он знает какой сервер отвечает за домен kuku.ru.

    Если вложенность доменного имени будет большей, скажем третьего уровня (host.department.corp.ru), и этот уровень будет поддерживаться другим сервером доменных имен, отличным от того, который поддерживает второй уровень вложенности, то тогда нашему локальному серверу удаленный сервер доменных имен передаст не адрес хоста, а адрес нового сервера доменных имен, в зоне ответственности которого находится запрашиваемое имя.

    Как видно из приведенной схемы, получение информации из системы доменных имен — это многоходовой процесс, который не реализуется мгновенно. В следующем примере показано как на практике ощущается работа DNS.

    При входе в режиме удаленного терминала на компьютер polyn.net.kiae.su по команде:

    Мы получаем в ответ:

    Строчка, в которой указан IP-адрес компьютера polyn.net.kiae.su, показывает, что к этому времени доменное имя было успешно разрешено сервером доменных имен и прикладная программа, в данном случае telnet получила на свой запрос IP-адрес. Таким образом, после ввода команды с консоли, и до появления IP-адреса на экране монитора прикладная программа осуществила запрос к серверу доменных имен и получила ответ на него.

    Довольно часто можно столкнуться с ситуацией, когда после ввода команды довольно долго приходиться ждать ответа удаленной машины, но зато после первого ответа удаленный компьютер начинает реагировать на команды с такой же скоростью, как и ваш собственный персональный компьютер. В этом случае, скорее всего, в первоначальной задержке виноват сервис доменных имен.

    Другой пример того же сорта — это программа traceroute. Здесь задержка на запросы к серверу доменных имен проявляется в том, что время ответов со шлюзов, на которых «умирают» ICMP пакеты, указанное в отчете, маленькое, а задержки с отображением каждой строчки отчета довольно большие.

    Любопытно, что в системе Windows 3.1 некоторые программы трассировки, показывали сначала IP-адрес шлюза, а только потом, после разрешения «обратного» запроса, заменяли его на доменное имя шлюза. Если сервис доменных имен работал быстро, то эта подмена была практически незаметна, но если сервис работал медленно, то промежутки бывали довольно значительными.

    Проверить на сколько «чувствительны» запросы traceroute c точки зрения отображения трассы к использованию сервера доменных имен можно задав поиск трассы с использованием сервера:

    и без использования сервера:

    Если в примере с telnet и ftp мы рассматривали, только «прямые» (forward) запросы к серверу доменных имен, то в примере с traceroute мы впервые упомянули «обратные»(reverse) запросы. В «прямом» запросе прикладная программа запрашивает у сервера доменных имен IP-адрес, сообщая ему доменное имя. При «обратном» запросе прикладная программа запрашивает доменное имя, сообщая серверу доменных имен IP-адрес.

    Следует заметить, что скорость разрешения «прямых» и «обратных» запросов в общем случае будет разная. Все зависит от того, где описаны «прямые»(forward) и «обратные»(reverse) зоны в базах данных серверов доменных имен, обслуживающих соответствующие домены (прямой и обратный).

    Более подробно этого вопроса мы коснемся при обсуждении файлов конфигурации программы named.

    Однако вернемся к обсуждению схемы работы системы доменных имен. Собственно нерекурсивным рассмотренный выше запрос является только с точки зрения сервера. С точки зрения resolver-а процедура разрешения запроса является рекурсивной, так как resolver перепоручил локальному серверу доменных имен заниматься поиском необходимой информации. Согласно RFC-1035, resolver и сам может опрашивать удаленные серверы доменных имен и получать от них ответы на свои запросы.

    В этом случае resolver обращается к локальному серверу доменных имен, если не получает от него адреса, то опрашивает сервер корневого домена, получает от него адрес удаленного сервера TLD, опрашивает этот сервер, получает адрес удаленного сервера, опрашивает удаленный сервер и получает IP-адрес, если он посылал, так называемый «прямой» запрос.

    Рис.2. Нерекурсивный запрос resolver-а.

    Как видно из этой схемы, resolver сам нашел нужный IP-адрес. Однако общая практика такова, что resolver не порождает нерекурсивных запросов, а переадресовывает их локальному серверу доменных имен.

    Локальный сервер и resolver не все запросы выполняют по указанной процедуре. Дело в том, что существует кэш, который используется для хранения в нем полученной от удаленного сервера информации.

    Самые умные resolver-ы, такие, например, как resolver Windows 2000 Server и BIND 9 умеют поддерживать кэш, в котором сохранияют не только удачно установленные соответствия имени и адреса (positive response), но и так называемые «негативные» отклики (negative response results) на запросы. Кроме того, эти resolver-ы упорядочивают отклики об адресах серверов в соответствии с принятыми в них (resolver-ах) алгоритмами выставления предпочтений, которые базируются на времени отклика сервера.

    Рис.3. Схема разрешения запросов с кэшированием ответов.

    Если пользователь обращается в течение короткого времени к одному и тому же ресурсу сети, то запрос на удаленный сервер не отправляется, а информация ищется в кэше.

    Вообще говоря, прядок обработки запросов можно описать следующим образом:

    1. поиск ответа в локальном кэше
    2. поиск ответа на локальном сервере
    3. поиск информации в сети.

    При этом кэш может быть как у resolver-а, так и у сервера.

    Прежде, чем мы двинемся дальше в нашем понимании работы системы доменных имен введем еще одно понятие — зону.

    Между доменом и зоной существует разница, которую бывает трудно найти, но всегда нужно иметь в виду. Домен — это все множество машин, которые относятся к одному и тому же доменному имени. Например, все машины, которые в своем имени имеют постфикс kiae.su относятся к домену kiae.su. Зона — это «зона ответственности» конкретного сервера доменных имен, т.е. понятие домена шире, чем понятие зоны. Если домен разбивается на поддомены, то у каждого из них может появиться свой сервер. При этом зоной ответственности сервера более высокого уровня будет только та часть описания домена, которая не делегирована другим серверам. Разбиение домена на поддомены и организация сервера для каждого из них называется делегирование прав управления зоной соответствующему серверу доменных имен, или просто делегированием зоны.

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

    Читать еще:  Обновить политики домена команда

    Существует еще и другой вариант работы сервера, когда он не запрашивает корневой сервер на предмет адреса удаленного сервера доменных имен. Это происходит тогда, когда незадолго до этого сервер уже разрешал задачу получения IP-адреса из того же домена. Если требуется получить IP-адрес удаленного сервера доменных имен, отвечающего за домен, то он будет просто извлечен из буфера сервера (кеша), т.к. в течение определенного времени, заданного в конфигурации описания зоны (Time To Live — TTL), этот адрес будет храниться в кэше сервера. А попал он туда как результат выполнения предыдущего запроса.

    Кроме нерекурсивной процедуры разрешения имен возможна еще и рекурсивная процедура разрешения имен. Ее отличие от описанной выше нерекурсивной процедуры состоит в том, что удаленный сервер сам опрашивает свои серверы зон, а не сообщает их адреса местному серверу доменных имен. Рассмотрим этот случай более подробно.

    На рисунке 4 продемонстрирована нерекурсивная процедура разрешения IP-адреса по доменном имени. Основная нагрузка в этом случае ложится на местный сервер доменных имен, который осуществляет опрос всех остальных серверов. Для того, чтобы сократить число таких обменов, если позволяет объем оперативной памяти, можно разрешить буферизацию (кэширование) адресов. В этом случае число обменов с удаленными серверами сократится.

    На рисунке 5 удаленный сервер домена сам разрешает запрос на получение IP-адреса хоста своего домена по рекурсивному запросу, используя при этом нерекурсивный опрос своих серверов поддоменов.

    Рис 4. Нерекурсивная обработка запроса местным сервером доменных имен на получение IP-адреса по доменному имени.

    Рис. 5. Рекурсивная (для местного сервера) и нерекурсивная (для удаленного сервера) процедуры разрешения адреса по IP-имени.

    При этом локальный сервер сразу получает от удаленного адрес хоста, а не адреса серверов поддоменов. Удаленному серверу при этом должно быть разрешено обслуживание рекурсивных запрос с соответствующего IP-адреса, местный сервер должен обратиться к удаленному с рекурсивным запросом.

    Представленные здесь варианты работы системы доменных имен не являются исчерпывающими. За более подробной информацией следует обращаться к RFC-1034 и RFC-1035.

    Протокол TCP/IP, служба DNS

    4.2 Служба DNS (домены, зоны; зоны прямого и обратного просмотра; основные и дополнительные зоны; рекурсивный и итеративный запросы на разрешение имен).

    Историческая справка: Систему доменных имен разработал в 1983 году Пол Мокапетрис. Тогда же было проведено первое успешное тестирование DNS, ставшей позже одним из базовых компонентов сети Internet. С помощью DNS стало возможным реализовать масштабируемый распределенный механизм, устанавливающий соответствие между иерархическими именами сайтов и числовыми IP-адресами.

    В 1983 году Пол Мокапетрис работал научным сотрудником института информатики (Information Sciences Institute, ISI ), входящего в состав инженерной школы университета Южной Калифорнии ( USC ). Его руководитель, Джон Постел, предложил Полу придумать новый механизм, устанавливающий связи между именами компьютеров и адресами Internet, — взамен использовавшемуся тогда централизованному каталогу имен и адресов хостов, который поддерживала калифорнийская компания SRI International.

    «Все понимали, что старая схема не сможет работать вечно, — вспоминает Мокапетрис. — Рост Internet становился лавинообразным. К сети, возникшей на основе проекта ARPANET, инициированного Пентагоном, присоединялись все новые и новые компании и исследовательские институты».

    Предложенное Мокапетрисом решение — DNS — представляло собой распределенную базу данных, которая позволяла организациям, присоединившимся к Internet, получить свой домен.

    «Как только организация подключалась к сети, она могла использовать сколь угодно много компьютеров и сама назначать им имена», — подчеркнул Мокапетрис. Названия доменов компаний получили суффикс .com , университетов — .edu и так далее.

    Первоначально DNS была рассчитана на поддержку 50 млн. записей и допускала безопасное расширение до нескольких сотен миллионов записей. По оценкам Мокапетриса, сейчас насчитывается около 1 млрд. имен DNS, в том числе почти 20 млн. общедоступных имен. Остальные принадлежат системам, расположенным за межсетевыми экранами. Их имена неизвестны обычным Internet-пользователям.

    Новая система внедрялась постепенно, в течение нескольких лет. В это время ряд исследователей экспериментировали с ее возможностями, а Мокапетрис занимался в ISI обслуживанием и поддержанием стабильной работы «корневого сервера», построенного на мэйнфреймах компании Digital Equipment. Копии таблиц хостов хранились на каждом компьютере, подключенном к Internet, еще примерно до 1986 года. Затем начался массовый переход на использование DNS.

    Необходимость отображения имен сетевых узлов в IP-адреса

    Компьютеры и другие сетевые устройства, отправляя друг другу пакеты по сети, используют IP-адреса. Однако пользователю (человеку) гораздо проще и удобнее запомнить некоторое символические имена сетевых узлов, чем четыре бессодержательных для него числа. Однако, если люди в своих операциях с сетевыми ресурсами будут использовать имена узлов, а не IP-адреса, тогда должен существовать механизм, сопоставляющий именам узлов их IP-адреса.

    Есть два таких механизма — локальный для каждого компьютера файл hosts и централизованная иерархическая служба имен DNS.

    Использование локального файла hosts и системы доменных имен DNS для разрешения имен сетевых узлов

    На начальном этапе развития сетей, когда количество узлов в каждой сети было небольшое, достаточно было на каждом компьютере хранить и поддерживать актуальное состояние простого текстового файла, в котором содержался список сетевых узлов данной сети. Список устроен очень просто — в каждой строке текстового файла содержится пара «IP-адрес — имя сетевого узла». В системах семейства Windows данный файл расположен в папке %system root%system32driversetc (где %system root% обозначает папку, в которой установлена операционная система). Сразу после установки системы Windows создается файл hosts с одной записью 127.0.0.1 localhost .

    С ростом сетей поддерживать актуальность и точность информации в файле hosts становится все труднее. Для этого надо постоянно обновлять содержимое этого файла на всех узлах сети. Кроме того, такая простая технология не позволяет организовать пространство имен в какую-либо структуру. Поэтому появилась необходимость в централизованной базе данных имен, позволяющей производить преобразование имен в IP-адреса без хранения списка соответствия на каждом компьютере. Такой базой стала DNS (Domain Name System) — система именования доменов, которая начала массовую работу в 1987 году.

    Заметим, что с появлением службы DNS актуальность использования файла host совсем не исчезла, в ряде случаев использование этого файла оказывается очень эффективным.

    Служба DNS: пространство имен, домены

    DNS — это иерархическая база данных , сопоставляющая имена сетевых узлов и их сетевых служб IP-адресам узлов. Содержимое этой базы, с одной стороны, распределено по большому количеству серверов службы DNS, а с другой стороны, является централизованно управляемым. В основе иерархической структуры базы данных DNS лежит доменное пространство имен (domain namespace), основной структурной единицей которого является домен, объединяющий сетевые узлы (хосты), а также поддомены. Процесс поиска в БД службы DNS имени некоего сетевого узла и сопоставления этому имени IP-адреса называется «разрешением имени узла в пространстве имен DNS».

    Служба DNS состоит из трех основных компонент:

    • Пространство имен DNS и соответствующие ресурсные записи (RR, resource record) — это сама распределенная база данных DNS;
    • Серверы имен DNS — компьютеры, хранящие базу данных DNS и отвечающие на запросы DNS-клиентов;
    • DNS-клиенты (DNS-clients, DNS-resolvers) -компьютеры, посылающие запросы серверам DNS для получения ресурсных записей.

    Пространство имен DNS — иерархическая древовидная структура, начинающаяся с корня, не имеющего имени и обозначаемого точкой «.». Схему построения пространства имен DNS лучше всего проиллюстрировать на примере сети Интернет (рис. 4.8).

    Для доменов 1-го уровня различают 3 категории имен:

    Ссылка на основную публикацию
    Adblock
    detector