Что такое DNS протокол
СущностьDNS
DNS протокол (от английского словосочетания Domain Name System означает – система доменных имен) – это компьютерная четко распределенная система для получения информации о состоянии домена. Зачастую его используют для получения IP-адреса по имени определенного хоста (устройства или компьютера), получения необходимой информации о пройденном маршруте почты, которая обслуживается узлами для протоколов в домене.
Такая распределенная база данных системы доменных имен поддерживается благодаря иерархии DNS-серверов, которые взаимодействуют согласно определенному протоколу.
Основой для днс протокола служит представление об ее иерархической системе доменного адреса и зонах. Каждый отдельный сервер, которые в ответе за имя, может вполне делегировать свою ответственность на будущую часть домена другому серверу, что способствует возложению ответственности за популярность информации на серверы разнообразных предприятий, организация или людей, которые отвечают только за собственную часть доменного имени.
Три года тому назад в систему DNS протоколов начали внедрять средства проверки целостности данных, которые передаются, эти средства получили названием DNS Security Extensions (DNSSEC). Вся передаваемая информация не шифруется, но ее достоверность проходит проверку с помощью криптографических методов. Внедряемый стандарт DANE занимается передачей средствами DNS достоверными криптографическими данными, которые используются для того, чтобы установить безопасные и защищенные соединения прикладного и транспортного уровня.
Функции DNS
ДНС протокол можно охарактеризовать такими функциями:
Распределенность администрирования. Люди или разные организации несут ответственность за некоторые части иерархической структуры.
Распределенность сохраненной информации. Каждый отдельный сетевой узел обязательно должен сохранять не только те данные, которые находятся в его зоне ответственности, но и адреса корневых серверов.
Кэширование всей информации.
Определенный узел способен сохранять некоторое количество данных из несобственной зоны ответственности для того, чтобы уменьшить сетевые нагрузки.
Иерархическая структура, которая объединяет все узлы в одно дерево, каждый узел может сам определить работу нижестоящих узлов, или просто передать их другим узлам.
Резервирование. За обслуживание и хранение собственных зон отвечают сразу несколько серверов, которые разделены на физические и логические, что в результате гарантирует сохранность данных и продолжение работы даже при сбое одного из узлов.
Система доменных имен очень важна в работе глобальной сети, поскольку для обычного соединения с узлом нужно вся информация о его личном адресе, а для людей легче запомнить адреса, написанные буквами, нежели цифрами. В отдельных ситуациях, это способствует применению виртуальных серверов, к примеру, НТТР — серверы, отличая их по имени запроса. Изначально преобразование между доменными и IP-адресами проводилось с применением определенного текстового файла, составляющего в централизованном и автоматическом режиме, рассылался на каждую машину в личной локальной сети. С развитием глобальной сети появилась необходимость в эффективном и автоматизированном механизме, которым и стала система доменных имен — DNS.
Предложить идею урока:
DNS Протокол — Описание и Принцип Работы Протокола для Чайников
В прошлой статье мы рассмотрели систему доменных имен DNS, которая позволяет по доменному имени определить ip-адрес компьютера.
Рассмотрим протокол, который используется для сетевого взаимодействия в службе DNS. Напомню, что в системе доменных имен есть дерево серверов DNS, каждый из которых отвечает за некоторую часть пространства доменных имен, которое называется зоной. Клиент хочет узнать ip-адрес сервера для которого ему известно доменное имя. Например maps.yandex.ru.
Поиск начинается с корневого домена, отправляется запрос на доменное имя maps.yandex.ru.
Но корневой сервер отвечает, что он не знает ip-адрес этого компьютера, зато он знает ip-адрес DNS-сервера, которому делегировано управление зоной ru.
Клиент DNS отправляет запрос к серверу, который отвечает за зону ru.
Но тот в свою очередь, снова присылает ответ, что адрес этого компьютера ему неизвестен, но он знает адрес сервера, которому делегировано управление зоной yandex.ru.
Отправляется третий запрос к DNS серверу, который отвечает за зону yandex.ru.
У этого сервера есть необходимая нам информация и он присылает необходимый нам ip-адрес.
Режим работы DNSСерверы DNS могут работать в двух режимах:
- Итеративный, если сервер отвечает за ту зону для который пришел запрос он присылает ответ, а если нет то он присылает адрес другого сервера, к которому нужно обратиться с запросом.
- Рекурсивный, в этом режиме DNS-сервер сам отправляет необходимые запросы всем DNS серверам пока не найдет необходимый сервер, получит от него ответ и этот ответ возвращается к клиенту.
Два режима работы необходимы, потому что в системе DNS используются два типа серверов. DNS серверы, которые хранят информацию об отображении доменных имен в ip-адресах, работают в интеративном режиме, так как к этим серверам, особенно к корневым серверам или серверам первого уровня, приходит большое количество запросов, и у них не хватит производительности для работы в рекурсивном режиме.
И есть серверы, которые занимаются разрешением имен для клиентов Эти серверы работают в рекурсивном режиме, получают запрос от клиента, выполняют поиск в дереве серверов DNS, получают ответ и возвращают его клиенту.
Сервер разрешения имен DNSСервер разрешения имен находится в локальной сети, он предоставляется либо вашим провайдером, либо вашей организации. Часто адреса таких серверов компьютеры получают автоматически, вместе с ip- адресом по протоколу DHCP.
Другой вариант это использовать открытый сервер разрешения имен, которые предоставляют некоторые компании. Например, широко известен общедоступный DNS сервер компании Google с адресом 8. 8.8.8, который может использовать кто угодно. Зачем может понадобиться использовать открытый сервер, вместо серверов вашей локальной сети? Некоторые такие серверы, например, сервер компании Яндекс с таким адресом 77.88.8.7 блокирует контент для взрослых.
После того, как DNS resolver нашел ip-адрес для некоторого доменного имени, он записывает его в кэш, с одной стороны это хорошо так как повышают производительность работы, с другой стороны администратор зоны может поменять ip-адрес для некоторого компьютера, и если он у нас сохранен в кэше, то об изменении мы узнаем только через некоторое время.
Иногда, это время может составлять несколько дней или даже недель в зависимости от настроек DNS resolver. Поэтому не удивляйтесь, если вы внесли изменения в DNS записи, но они пока не видны.
Типы ответов DNSВ DNS есть два типа ответов:
- Авторитетный или как пишется в утилите nslookup windows — authoritative «заслуживающий доверие», это ответ, который получен от DNS сервера, который ответственный за данную зону.
Ответ получен из конфигурационных файлов на диске сервера, и точно является актуальным.
- Неавторитетный (non-authoritative) или «не заслуживающий доверия ответ», это ответ который получен от сервера, который не является ответственным за эту зону. Как правило, это DNS resolver, который закэшировал полученный ранее ответ. С момента создания записи в кэше данные могли измениться, поэтому ответ называется не заслуживающим доверия, но как правило в кэше находятся верные данные.
Протокол DNS использует модель клиент-сервер, причем в качестве клиента может выступать, как клиент DNS, так и сервер DNS, которые работают в рекурсивном режиме. В этом случае сервер DNS пересылают запросы другим серверам DNS и выступает в качестве клиента. Взаимодействие ведется в режиме запрос-ответ, соединение не устанавливается, используется протокол UDP, номер порта 53.
Формат пакета DNSПакет DNS состоит из двух частей заголовок и данные. Заголовок свою очередь состоит из шести полей.
- Первое поле это идентификатор запроса, любое целое число должно быть одинаково в запросе и ответе.
- Поле флаги мы его рассмотрим подробнее.
- И четыре поля, которые указывают сколько у нас данных в пакете. Количество DNS запросов, количество DNS ответов, количество ответов об авторитетных серверах и количество дополнительных ответов.
- В поле данных у нас содержится информация о запросах DNS, где мы указываем доменное имя компьютера для которого хотим узнать ip-адрес.
- Ответов DNS в которых содержится ip-адрес необходимого нам компьютера.
- Поле авторитетные серверы используется ветеративном режиме работы, здесь указываются ip-адреса серверов, которые отвечают за интересующую нас DNS зону.
- И в поле дополнительной информации указываются некоторые дополнительные записи, которые могут быть нам полезны.
В одном и том же DNS пакете может быть несколько запросов DNS и несколько ответов, в том числе несколько ответов на один запрос, если одному доменному имени соответствует несколько ip-адресов.
Поле флаги состоит из нескольких полей:
- Поле QR — тип операции запрос (0) или ответ (1).
- Поле OPCODE (4 бита) — тип запроса, но на практике используются только 0-стандартный запрос.
- Флаг AA указывает, является полученный ответ авторитетным (1) или нет (0).
- Флаг TC говорит о том был пакет обрезан (1) или не был (0).
- Флаг RD указывается только в запросах, если этот флаг установлен, клиент просит сервер работать в рекурсивном режиме.
- Флаг RA используется только в ответах, с помощью этого флага сервер сообщает, что он может работать в рекурсивном режиме.
- Флаг Z зарезервирован для будущего использования.
- RCODE (4 бита) последние четыре бита это статус выполнение операции, статус 0 говорит о том что операция прошла успешно, любые другие коды говорят о том что произошла какая-то ошибка.
Формат DNS запроса очень простой, содержит имя, тип и класс записи.
Например, имя www.yandex.ru, тип записи 1, (запись типа A) отображение доменного имени в ip- адрес. В системе DNS также используются другие типы записей. Класс записи 1 (IN, Интернет) код единица, других классов записей в системе DNS сейчас не используется.
Формат ответа DNSФормат DNS ответа более сложный, первые три поля точно такие же имя, тип записи и класс записи. Затем указывается время жизни, это время на которые запись может сохранить в кэше DNS resolver, затем указывается длина данных и собственно данные ответа.
Пример, ответа DNS имя www.yandex.ru, запись типа A, класс записи интернет, время жизни 90 секунд, однако администратор DNS resolver может принудительно установить другое время жизни. Длина данных измеряется в байтах, 4 байта и ip-адрес сервера www.yandex.ru.
Типы записей DNS
До сих пор мы рассматривали единственное применение системы dns это определение IP-адреса по доменному имени компьютера, но кроме этого DNS выполняет много других функций, которые необходимы для работы сети интернет. Для их реализации используются разные типы записей DNS.
Каждая запись dns по-английский (Resource Record, RR) имеет тип записи и класс записи. Тип записей говорит о том для чего эта запись предназначена, а класс указывает в каких сетях эта запись может использоваться. Сейчас DNS применяется только в сетях интернет, поэтому в классе записи вы почти всегда увидите IN, сокращение от интернета.
Записи, которые используются для определения ip адреса компьютера (IPv4) по доменному имени имеют тип A, для адресов IPv6 используется тип запись 4 раза (AAAA ).
Запрос записей разных типов
В утилите nslookup можно указать тип записи, который вы запрашиваете с помощью ключа минус type, например если вы укажете -type=A, нужно узнать Ipv4 адрес для доменного имени www.yandex.ru, то получите адреса ip версии 4.
А если указать тип записей четыре раза A, то получим адрес IPv6 для того же самого доменного имени.
DNS псевдонимы
Для одного и того же IP-адреса можно задавать несколько доменных имен. Есть два варианта, как это можно сделать.
- Первый вариант использовать DNS запись типов CNAME (Canonical Name каноническое имя) эта запись определяет псевдоним для доменного имени. Например, доменное имя ftp.zvondozvon.ru является псевдонимом www.zvondozvon.ru, то есть два этих имени указывают на один и тот же IP-адрес. Канонических имен для одного и того же доменного имени можно создавать очень много. Для того чтобы такие имена работали необходимо, чтобы для доменного имени на которые они указывают существовала запись, которая определяет IP-адрес для этого доменного имени.
- Альтернативный способ, создать большое количество A записей, которые указывают на один и тот же ip адрес. Но это не всегда удобно, например если вы хотите поменять IP адрес, то вам придется менять его в разных местах.
С другой стороны на применение записей типа CNAME есть ряд технических ограничений со стороны системы DNS например, нельзя определять цепочки из канонических имен, которые ссылаются друг на друга, о других ограничениях можно подробно посмотреть в документах RFC, которые описывают работу DNS.
Адрес почтового сервера
Система DNS активно используются при работе электронной почты предположим, что мы хотим отправить электронное письмо на некоторый адрес в домене gmail.com, но как мы узнаем адрес почтового сервера, который принимает почту для этого домена?
Это можно сделать с помощью DNS. Для этого в DNS есть запись специального типа MX (Mail eXechange), например для домена gmail.com есть целых пять записей типа MX, которые задают пять серверов, принимающие почту в домене Google.
Запись MX содержит два поля. Первое поле это приоритет, а второе это адрес сервера принимающего почту для данного домена. Чем ниже значение, тем более высокий приоритет. Самый высокий приоритет у сервера, у которого значение приоритета пять и самый низкий приоритет у сервера со значением 40. Таким образом, при отправке электронной почты сначала будет выбираться сервер с наименьшим приоритетом, если по каким-либо причинам он будет недоступен, следующий сервер и так далее.
Адреса сетевых сервисов
Для некоторых типов сервисов интернет, можно указывать не только IP адрес, но и порт на котором этот сервис работает. Для этого используются DNS записи типа SRV (Service record). Структуры этой записи достаточно сложны, вместо доменного имени указывается строка с описанием сервисов в специальном формате (_сервис._протокол.имя.-˃ приоритет вес порт имя).
Например, если мы хотим узнать на каком компьютере и на каком порту работает jabber сервер работающий по протоколу tcp в домене example. com мы получим вот такую запись (0 5 5269 xmpp.example.com). Проще всего разбирать её с конца. Сервис работает на компьютере с доменным именем xmpp.example.com порт 5269, приоритет 0, вес 5. Так же как и с почтовыми серверами, чем меньше значение приоритета, тем более высокий приоритет у сервера.
Резервный jabber сервер для этого домена работает на компьютере backup_xmpp.xample.com порт 5269 приоритет 20, вес 0. Вес используются для распределения нагрузки между разными серверами, которые имеют один и тот же приоритет.
Делегирование ответственности
В DNS важным понятием является делегирование ответственности. Информация о компьютерах входящая в ту или иную доменную зону хранится на DNS сервере, который отвечает за работу этой зоны. Но нам необходимо знать, какие серверы отвечают за ту или иную зону.
Записи серверов имен
Для этого используются dns-записи типа NS (Name Server). Например, за доменную зону yandex.ru отвечают серверы ns1.yandex.ru и ns2.yandex.ru, а за доменную зону urfu.ru отвечает целых 3 сервера. Записи типа ns задаются на домене более высокого уровня в нашем случае на сервере, который отвечает за зону ru. Именно этот сервер содержит записи ns для домена yandex.ru и для домена urfu.ru.
Но нам недостаточно знать только доменные имена dns-серверов, необходимо знать их IP адреса. Для этого используются «приклеенные» записи А, которые указывают IP-адреса. Вся остальная информация о делегированных доменных зонах хранится на этих dns серверах.
Определение имени по IP-адресу
Кроме определения ip адреса по компьютеру, по доменному имени, система dns может использоваться для обратной задачи определения доменного имени компьютера по его IP адресу. Для этого используются специальные зоны, называются обратные (reverse) или реверсивные.
Реверсивная зона содержит записи типа PTR (Pointer), которые ставят в соответствии IP-адрес компьютера доменному имени. Однако из-за технических ограничений DNS не может работать напрямую с IP адресами, поэтому для обратных зон был придуман обходной путь, представлять IP адрес в виде доменного имени. Для этих целей создан специальный домен in-addr.arpa и в этом домене IP адреса записываются в обратном порядке, например адрес 77.88.55.66 в обратной зоне будет записан следующим образом 66.55.88.77.in-addr.arpa.
Видео про типы записей DNS
Протокол DNS
Если вы когда-нибудь задавались вопросом, откуда взялся DNS, это ваш шанс узнать! Краткий обзор истории DNS также поможет вам понять, почему DNS-серверы работают в основном в системах типа Linux и Unix. Затем мы увидим уровни модели OSI, на которых работает DNS, и ближе к концу страницы вы узнаете, как домены (и DNS-серверы) структурированы в Интернете для обеспечения бесперебойной работы и эффективности.
История
DNS зародилась в первые дни, когда Интернет был лишь небольшой сетью, созданной Министерством обороны для исследовательских целей. Имена хостов (простые имена компьютеров) компьютеров вводились вручную в файл (называемый HOSTS), который находился на центральном сервере. Каждый сайт/компьютер, которому нужно было разрешать имена хостов, должен был загрузить этот файл. Но по мере роста числа хостов рос и файл HOSTS (Linux, Unix, Windows и NetWare все еще используют такие файлы), пока он не стал слишком большим для загрузки компьютерами и генерировал огромное количество трафика! Вот они и подумали… К черту это.. найдем решение получше… и в 1984 была введена система доменных имен.
Протокол
Система доменных имен — это «иерархически распределенная база данных», что является причудливым способом сказать, что ее слои расположены в определенном порядке и что ее данные распределены по широкому кругу машин (точно так же, как корни дерева отходят от основного корня).
В настоящее время большинство компаний имеют собственный небольшой DNS-сервер, чтобы компьютеры могли без проблем находить друг друга. Если вы используете Windows 2000 и Active Directory, то наверняка используете DNS для разрешения имен ваших компьютеров. Microsoft создала собственную версию DNS-сервера, называемого WINS-сервером, что означает Windows Internet Name Service, но это старая технология, использующая протоколы, которые далеко не так эффективны, как DNS, поэтому для Microsoft было естественным отойди от WINS и в сторону DNS, ведь весь интернет работает на DNS 🙂
Протокол DNS работает, когда ваш компьютер отправляет DNS-запрос на сервер имен для разрешения домена. Например, вы вводите «www.firewall.cx» в своем веб-браузере, это запускает DNS-запрос, который ваш компьютер отправляет на DNS-сервер, чтобы получить IP-адрес веб-сайта! На последующих страницах есть подробный пример, поэтому я не буду вдаваться в подробности на данный момент.
Протокол DNS обычно использует протокол UDP в качестве транспортного средства из-за его небольших накладных расходов по сравнению с TCP; чем меньше накладных расходов у протокола, тем он быстрее!
В случае, когда возникают постоянные ошибки и компьютер, пытающийся запросить разрешение DNS, не может получить безошибочный ответ или вообще какой-либо ответ, он переключится на TCP, чтобы обеспечить безошибочное получение данных.
Однако этот процесс зависит от используемой операционной системы. Некоторые операционные системы могут не разрешать DNS использовать протокол TCP, тем самым ограничивая его только UDP. Редко когда вы получаете так много ошибок, что не можете преобразовать любое имя хоста или доменное имя в IP-адрес.
Протокол DNS использует для обслуживания порт 53. Это означает, что DNS-сервер прослушивает порт 53 и ожидает, что любой клиент, желающий использовать службу, будет использовать тот же порт. Однако бывают случаи, когда вам может понадобиться использовать другой порт, что возможно в зависимости от используемой операционной системы и DNS-сервера.
На следующих страницах мы рассмотрим фактический формат пакета DNS, где вы можете точно увидеть содержимое запроса DNS, поэтому мы не будем здесь анализировать структуру пакета.
Далее мы подробно рассмотрим, как устроены интернет-домены и DNS-серверы, чтобы убедиться, что модель работает безупречно и эффективно!
Иерархия серверов доменных имен в Интернете
Этот интересный раздел поможет вам понять, как структурированы доменные имена в Интернете и какое место в общей картине занимают DNS-серверы. Когда вы думаете о миллионах доменных имен, зарегистрированных сегодня, вы, вероятно, думаете, что нужно быть сверхчеловеком, чтобы управлять такой структурой DNS-серверов!
Это не тот случай. Структура DNS спроектирована таким образом, что DNS-серверу не нужно знать обо всех возможных доменах, а только о тех, которые находятся непосредственно над ним и под ним.
На рисунке ниже показана часть иерархической структуры DNS Интернета:
Поясним, как это работает:
Internic управляет «корневым» доменом, который включает в себя все домены верхнего уровня. Они отмечены зеленым овалом для ясности. В зеленом овале у вас есть корневые DNS-серверы, которые знают все об авторитетных DNS-серверах для доменов непосредственно под ними, например, firewall.cx, cisco.com, microsoft.com и т. д. Эти корневые DNS-серверы могут сообщить вам, какой DNS-сервер занимает забота о firewall.cx, cisco.com, microsoft.com и остальных.
Каждый домен, включая те, о которых мы говорим (cisco, firewall, microsoft), имеет то, что мы называем «первичным DNS» и «вторичным DNS». Первичный DNS — это тот, который содержит всю информацию о своем домене. Вторичный сервер выступает в качестве резервного на случай сбоя основного DNS. Процесс, в котором первичный DNS-сервер отправляет свою копию на вторичный DNS-сервер, называется Zone Transfer и рассматривается в разделе базы данных DNS.
Сегодня существуют сотни веб-сайтов, на которых вы можете зарегистрировать свой собственный домен, и как только вы это сделаете, вы сможете управлять им самостоятельно. В приведенном выше примере Cisco купила домен «Cisco.com», а затем создала записи ресурсов. Некоторые примеры записей ресурсов для домена Cisco в нашем примере: поддержка, www и маршрутизаторы. Они будут подробно проанализированы на следующих страницах.
Итак, вот вопрос на миллион долларов: Как вы создаете поддомены и www (известные как ресурсные записи)?
Ответ довольно прост:
Вы используете специальный интерфейс администрирования DNS (обычно веб-интерфейс, предоставляемый ребятами, у которых вы зарегистрировали свой домен), который позволяет вам создавать, изменять и удалять поддомены, www или любые другие ресурсы. запись, которую вы можете придумать. Когда вы вносите изменения в настройки DNS своего домена, вы фактически изменяете содержимое определенных файлов, расположенных на этом сервере.
Затем эти изменения медленно распространяются на авторитетных DNS-серверов , которые отвечают за зону вашего домена, а затем весь Интернет будет связываться с этими DNS-серверами, когда им потребуется доступ к любой части вашего домена.
Например, если вам нужно разрешить ftp.firewall.cx, ваш компьютер обнаружит DNS-сервер, отвечающий за домены .CX, и свяжется с ним, что позволит вам узнать DNS-сервер, отвечающий за домен Firewall.cx. DNS-сервер Firewall.cx, в свою очередь, сообщит вашему компьютеру IP-адрес ftp.firewall.cx, поскольку он содержит всю информацию для домена firewall.cx.
Это завершает наш первый раздел DNS. Ведь это не так уж и сложно!
Далее — DNS-запросы и процесс разрешения
или
Назад к разделу сетевых протоколов
Как работает DNS?
В наших предыдущих статьях о DNS мы дали обзор процесса рекурсии, но прежде чем мы сможем продолжить изучение того, как DNS влияет на производительность, нам нужно понять, как работает протокол DNS.
В наборе протоколов TCP/IP DNS является протоколом прикладного уровня. Протокол DNS по умолчанию основан на протоколе пользовательских дейтаграмм (UDP), но также может работать по протоколу управления передачей (TCP) в качестве запасного варианта, когда брандмауэры блокируют UDP.
И UDP, и TCP являются протоколами транспортного уровня. UDP — это облегченный протокол, который не требует рукопожатия для установления соединения или подтверждения доставки, тем самым сокращая количество необходимых пакетов, затраченное время и круговые поездки. Самый большой недостаток UDP заключается в том, что нет никаких гарантий, что пакет был получен другой стороной, поэтому приложение должно обрабатывать случаи, когда ответ не получен.
С другой стороны, TCP требует установления соединения через трехэтапное рукопожатие и имеет проверку ошибок доставки, но требует большего количества циклов и, следовательно, большего времени.
Поскольку мы рассматриваем протоколы TCP/IP, в некоторых областях мы перейдем к битовому уровню. Но не пугайтесь — вам не нужно учиться обращаться с «битовыми флагами», чтобы понимать DNS. В Catchpoint мы используем — и настоятельно рекомендуем использовать — программу захвата пакетов, такую как Wireshark, чтобы сделать пакеты понятными для человека и упростить отладку.
Протокол DNS состоит из трех типов сообщений: запросы, ответы и обновления. Мы не будем освещать «обновления» в нашей серии, поскольку они не влияют на работу конечного пользователя. Сообщение DNS может состоять из пяти разделов: Заголовок DNS, Вопрос, Ресурсные записи ответа, Ресурсные записи авторитетных источников и Дополнительные ресурсные записи.
Заголовок Заголовок пакета содержит идентифицирующую информацию, а также подсказки (краткие сведения) о том, что содержит остальная часть сообщения. Заголовок состоит из шести полей по шестнадцать бит каждое, всего двенадцать байтов. Первые шестнадцать бит предназначены для идентификатора транзакции, используемого для сопоставления ответа на запрос, и создаются клиентом в сообщении запроса и возвращаются сервером в ответе.
Следующее поле для флагов. Это, вероятно, самая важная часть пакета DNS, поскольку эти флаги отличают ответ от запроса и итеративный запрос от рекурсивного. Они перечислены в порядке:
- Бит 1: QR, флаг запроса/ответа. Когда 0, сообщение является запросом. Когда 1, сообщение является ответом.
- Биты 2-5: Код операции, код операции. Сообщает принимающей машине цель сообщения. Обычно 0 означает обычный запрос, однако есть и другие допустимые параметры, такие как 1 для обратного запроса и 2 для состояния сервера.
- Бит 6: AA, авторитетный ответ. Устанавливайте только в том случае, если отвечающая машина является полномочным сервером имен запрашиваемого домена.
- Бит 7: TC, усеченный. Установите, если пакет больше максимального размера UDP, равного 512 байтам.
- Бит 8: RD, требуется рекурсия. Если 0, запрос является итеративным запросом. Если 1, запрос рекурсивный.
См. наш пост о рекурсии для получения дополнительной информации.
- Бит 9: RA, доступна рекурсия. Устанавливается в ответ, если сервер поддерживает рекурсию.
- Бит 10: Z. Зарезервирован для использования в будущем, должен быть установлен на 0 для всех запросов и ответов.
- Бит 11: AD, достоверные данные. Используется в DNSSEC. Считается частью Z в старых машинах.
- Бит 12: CD, проверка отключена. Используется в DNSSEC. Считается частью Z в старых машинах.
- Биты 13-16: Rcode, код возврата. Обычно это 0 при отсутствии ошибок или 3, если имя не существует.
Оставшиеся четыре поля заголовка — это количество вопросов, записей ресурсов ответов, записей ресурсов полномочий и дополнительных записей ресурсов. Эти цифры различаются в зависимости от того, является ли это запросом или ответом, и каким типом ответа. В общем, однако, всегда будет по крайней мере один вопрос.
Вопрос присутствует как в запросе, так и в ответе, и должен быть идентичным. Некоторые инструменты, такие как Wireshark, называют это «запросом» (см. изображение выше).
Обычно в каждом пакете будет только один вопрос или запрос. Вопрос состоит из трех частей: имя запроса, которое может быть именем хоста, например www.google.com, тип вопроса и класс вопроса, который почти всегда равен 1 или IN для Интернета. Тип вопроса — это тип записи ресурса. Ниже перечислены несколько основных типов, а полный список можно найти здесь.
- A, IPv4-адрес: , которому соответствует доменное имя. Каждый домен веб-сайта должен иметь хотя бы одну запись A, иначе ваши конечные пользователи не смогут получить доступ к вашему веб-сайту.
- AAAA, Quad-A, запись адреса IPv6: Адрес IPv6 — это тип, которому соответствует доменное имя. Поскольку адреса IPv4 больше не доступны, существует большое движение в поддержку IPv6, однако пока не каждый интернет-провайдер и веб-сайт поддерживают его.
- MX, запись почтового обмена: Указывает, какой почтовый сервер принимает сообщения электронной почты от имени получателя домена.
- NS, Запись сервера имен: Сопоставляет домен с его уполномоченным сервером имен. Каждый домен должен иметь более 1 записи NS.
Ответ состоит из записей ресурсов, которые отвечают на вопрос. Раздел «Ответ» присутствует в ответе рекурсивного распознавателя на компьютер конечного пользователя или в ответе полномочного сервера имен домена на рекурсивный распознаватель. Это зависит от типа вопроса, но для DNS-разрешения веб-доменов это будет A, AAAA или CNAME. CNAME расшифровывается как Canonical Name, это означает, что домен в запросе является псевдонимом для другого домена.
Первые три поля в записи ресурса идентичны формату вопроса и представляют собой имя RR, тип RR и класс RR. Однако записи RR содержат три дополнительных поля: двухбайтовое значение времени жизни, однобайтовое поле длины данных и поле данных. Содержимое поля данных зависит от типа записи, но вот основные из них:
- A: Одно поле данных, хранящее четырехбайтный IPv4-адрес
- AAAA: Одно поле данных, хранящее шестнадцатибайтный IPv6-адрес
- MX: Два поля данных, одно для хранения значения приоритета, а другое для хранения IP-адреса
- NS: Одно поле данных для хранения доменного имени полномочного сервера имен доменное имя, псевдонимом которого является вопросительный домен
Когда сервер имен, такой как TLD, не имеет ответа на запрос (поскольку не является авторитетным), он не будет отправлять записи ответов. Вместо этого он заполнит раздел полномочий всеми серверами имен, которые он знает как уполномоченные для домена или части дерева доменов (например, .com), если они у него есть. Эти записи NS отличаются от записей A, поскольку они содержат имя домена как в полях имени RR, так и в полях данных RR.