DNS
Domain Name System DNS
|
- Уровень:
- Прикладной
- Семейство:
- TCP/IP
- Назначение:
- Разрешение доменных имён
- Серверы:
- BIND
DNS (англ. Domain Name System — система доменных имён) — это система, позволяющая преобразовывать символьные имена доменов в IP-адреса (и наоборот) в сетях TCP/IP. Доме́н — определённая зона в системе доменных имён (DNS) Интернета, выделенная какой-либо стране, организации или для иных целей. DNS важна для работы Интернета, ибо для соединения с узлом необходима информация о его IP-адресе, а для людей проще запоминать буквенные (обычно осмысленные) адреса, чем последовательность цифр IP-адреса. В некоторых случаях это позволяет использовать виртуальные серверы, например, HTTP-сервера, различая их по имени запроса. Первоначально преобразование между доменными и IP-адресами производилось с использованием специального текстового файла DHOSTS.TXT, который составлялся централизованно и обновлялся на каждой из машин сети вручную. С ростом Сети возникла необходимость в эффективном, автоматизированном механизме, которым и стала DNS. DNS была разработана Полом Мокапетрисом в 1983 году; оригинальное описание механизмов работы описано в RFC 882. В 1987 публикация RFC 1034 и RFC 1035 изменили спецификацию DNS и отменили RFC 882 и RFC 883 как устаревшие. Некоторые новые RFC дополнили и расширили возможности базовых протоколов.
Как работает DNS[править | править код]
Доменное имя содержит, как минимум, две части (обычно называются метками), разделённые точкой. Самая правая метка является доменом верхнего уровня (например, для адреса ru.wikipedia.org домен верхнего уровня — org). Каждая следующая метка справа налево является поддоменом (например, wikipedia.org — поддомен домена org, а ru.wikipedia.org — домена wikipedia.org). Теоретически такое деление может достигать глубины 127 уровней, а каждая метка может содержать до 63 символов, пока общая длина вместе с точками не достигнет 254 символов. Но на практике регистраторы доменных имён используют более строгие ограничения. Система DNS содержит иерархию серверов DNS. Каждый домен или поддомен поддерживается как минимум одним авторитетным сервером DNS (от англ. authoritative — авторитетный, заслуживающий доверия; в Рунете применительно к DNS и серверам имен часто употребляют и другие варианты перевода: авторизированный, авторитативный), на котором расположена информация о домене. Иерархия серверов DNS совпадает с иерархией доменов. Рассмотрим на примере работу всей системы. Предположим, мы набрали в браузере адрес ru.wikipedia.org. Браузер знает только IP-адрес сервера DNS, обычно это один из серверов интернет-провайдера (DNS по умолчанию в настройках соединения). Браузер спрашивает у сервера DNS: «какой IP-адрес у ru.wikipedia.org?». Сервер DNS обращается к корневому серверу — например, 198.41.0.4. Этот сервер сообщает — «У меня нет информации о данном адресе, но я знаю, что 204.74.112.1 поддерживает доменную зону org.» Тогда сервер DNS направляет свой запрос к 204.74.112.1, но тот отвечает «У меня нет информации о данном сервере, но я знаю, что 207.142.131.234 поддерживает доменную зону wikipedia.org.» Наконец, тот же запрос отправляется к третьему DNS-серверу (который является авторитетным сервером для зоны wikipedia.org), и получает ответ — IP-адрес, который и возвращает клиенту — браузеру. В данном случае при разрешении имени, то есть в процессе поиска IP по имени, между хостом и серверами передавались запросы двух типов:
- браузер отправил известному ему DNS-серверу т. н. рекурсивный запрос — в ответ на такой тип запроса сервер обязан вернуть «готовый результат», то есть IP-адрес, либо сообщить об ошибке
Замечание: встроенные dns-клиенты браузеров умеют давать только такие типы запросов, иначе их код пришлось бы неоправданно усложнять и значительно возрос бы трафик у конечного пользователя, - а сам DNS-сервер, получивший запрос от клиента, выполнял последовательно итеративные запросы, на которые получал от других DNS-серверов уточняющие ответы, пока не получил авторитетный ответ от сервера, ответственного за запрошенную зону
Замечание: сервер провайдера, будучи лентяем, мог бы передать рекурсивный запрос следующему DNS-серверу и дождаться готового ответа, но в данном примере он добросовестно выполнил свою задачу.
Имя хоста и IP-адрес не тождественны — хост с одним IP-адресом может иметь множество имён, что позволяет поддерживать на одном компьютере множество веб-сайтов (это называется виртуальный хостинг). Обратное тоже справедливо — одному имени может быть сопоставлено множество хостов: это позволяет создавать балансировку нагрузки. Запрос на определение имени обычно не идёт дальше кэша DNS, который помнит (ограниченное время) ответы на запросы, проходившие через него ранее. Организации или провайдеры могут по своему усмотрению организовывать кэш DNS. Вместе с ответом приходит информация о том, сколько времени следует хранить эту запись в кэше. Для повышения устойчивости системы используется множество серверов, содержащих идентичную информацию. Существует 13 корневых серверов, расположенных по всему миру и привязанных к своему региону, их адреса никогда не меняются, а информация о них есть в любой операционной системе. Протокол DNS использует для работы TCP- или UDP-порт 53 для ответов на запросы. Традиционно запросы и ответы отправляются в виде одной UDP датаграммы. TCP используется в случае, если ответ больше 512 байт, или в случае AXFR-запроса.
Обратный DNS-запрос[править | править код]
DNS используется в первую очередь для преобразования символьных имён в IP-адреса, но он также может выполнять обратный процесс. Для этого используются уже имеющиеся средства DNS. Дело в том, что с записью DNS могут быть сопоставлены различные данные, в том числе и какое-либо символьное имя. Существует специальный домен in-addr.arpa, записи в котором используются для преобразования IP-адресов в символьные имена. Например, для получения DNS-имени для адреса 11.22.33.44 можно запросить у DNS-сервера запись 44.33.22.11.in-addr.arpa, и тот вернёт соответствующее символьное имя. Обратный порядок записи частей IP-адреса объясняется тем, что в IP-адресах старшие биты расположены в начале, а в символьных DNS-именах старшие (находящиеся ближе к корню) части расположены в конце.
Записи DNS[править | править код]
Наиболее важные категории DNS записей:
- Запись A (address record) или запись адреса связывает имя хоста с адресом IP. Например, запрос A-записи на имя referrals.icann.org вернет его IP адрес — 192.0.34.164
- Запись CNAME (canonical name record) или каноническая запись имени (псевдоним) используется для перенаправления на другое имя
- Запись MX (mail exchange) или почтовый обменник указывает сервер(а) обмена почтой для данного домена.
- Запись PTR (pointer) или запись указателя связывает IP хоста с его каноническим именем. Запрос в домене in-addr.arpa на IP хоста в reverse форме вернёт имя (FQDN) данного хоста (см. Обратный DNS-запрос). Например, (на момент написания), для IP адреса 192.0.34.164: запрос записи PTR 164.34.0.192.in-addr.arpa вернет его каноническое имя referrals.icann.org.
- Запись NS (name server) указывает на DNS-серверы для данного домена.
- Запись SOA (Start of Authority) указывает, на каком сервере хранится эталонная информация о данном домене.
Зарезервированные доменные имена[править | править код]
Документ RFC 2606 (Reserved Top Level DNS Names — Зарезервированные имена доменов верхнего уровня) определяет названия доменов, которые следует использовать в качестве примеров (например, в документации), а также для тестирования. Кроме example.com
, example.org
и example.net
, в эту группу также входят test
, invalid
и др.
Интернациональные доменные имена[править | править код]
Доменное имя может состоять только из ограниченного набора ASCII символов, позволяя набрать адрес домена независимо от языка пользователя. ICANN утвердил основанную на Punycode систему IDNA, преобразующую любую строку в кодировке Unicode в допустимый DNS набор символов.
Программное обеспечение DNS[править | править код]
Отдельные алгоритмы работы DNS используются в:
- BIND (Berkeley Internet Name Domain) [1]
- djbdns (Daniel J. Bernstein's DNS)
- MaraDNS
- NSD (Name Server Daemon)
- PowerDNS [2]
- Microsoft DNS Server (в серверных версиях операционных систем Windows NT)
Владение доменом[править | править код]
Любой человек может узнать владельца домена, воспользовавшись сервисом whois.
См. также[править | править код]
Ссылки[править | править код]
- Координационный центр национального домена сети Интернет
- Российский центр регистрации доменных имен
- DNS Resources Directory (англ.)
- Ресурcы, посвящённые DNS & BIND (англ.)
- Общество CircleID DNS (англ.)
- Повышение безопасности DNS (DNSSEC) (англ.)
- Онлайн конвертация русскоязычных символов в Punycode и обратно (англ.)
- http://www.root-servers.org/ (англ.)
- Просмотр DNS-записей домена
- Как работает DNS
- dnsStuff.com
Документы RFC[править | править код]
- RFC 1034 — Domain Names — Concepts and Facilities
- RFC 1035 — Domain Names — Implementation and Specification
- RFC 1537 — Common DNS Data File Configuration Errors
- RFC 1591 — Domain Name System Structure and Delegation
- RFC 1713 — Tools for DNS Debugging
- RFC 2606 — Reserved Top Level DNS Names
af:Domeinnaamstelsel eo:DNS hu:Domain Name System li:Domain Name System lv:DNS (protokols)