Информационно развлекательный портал
Поиск по сайту

Структура dns заголовка включает в себя. DNS и доменные имена. Главный список дополнительных зон

В этом разделе мы столкнулись с понятиями DNS-запроса и DNS-ответа. Запрос и ответ представляют собой единственные два типа сообщений, используемые протоколом DNS. Форматы этих сообщений совпадают и представлены на рис. 2.17. Ниже приведено описание структуры DNS-сообщения.

□ Первые 12 байт составляют заголовочную секцию, состоящую из нескольких полей. Первое поле представляет собой 16-разрядное число, идентифицирующее запрос. Идентификатор запроса копируется в ответное сообщение, что позволяет клиенту сопоставлять ответы с запросами. Поле флагов включает одноразрядный флаг «запрос/ответ» и определяет, является ли сообщение запросом (0) или ответом (1). Одноразрядный флаг полномочности устанавливается для ответного сообщения в случае, если сервер имен является полномочным для запрашиваемого имени.

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

□ Секция вопросов содержит информацию о запросе и включает поле имени, в котором указано имя запрашиваемого хоста, и поле типа, определяющее содержание ответа, например адрес хоста (тип А) или имя почтового сервера (тип MX).

□ Секция ответов присутствует в ответных сообщениях и содержит требуемые ресурсные записи. Каждая RR-запись включает поля Туре с одним из значений A, NS, CNAME или MX, Value и TTL. Поскольку имени хоста может быть сопоставлено несколько IP-адресов (например, из-за дублирования web-серверов, упоминавшегося в этой главе), секция ответов также может содержать несколько записей.

□ Секция полномочности включает в себя записи о других полномочных серверах.

□ Дополнительная секция содержит прочие «полезные» записи. Например, в поле ответов для запроса на запись типа MX может находиться запись, хранящая каноническое имя почтового сервера, а в дополнительную секцию помещена запись типа А с IP-адресом почтового сервера.

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

Серверы, обслуживающие корневую зону (Root servers)

Кэширующие (cache) серверы

Этот тип серверов отличается от тех, что были рассмотрены ранее, тем, что сервер данного типа не является авторитативным для какой-либо зоны.

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

Кэш-сервер не поддерживает описаний зон и, соответственно, не посылает resolver’ам авторитативных откликов:

MCBC > nslookup

> set type=any

> www.w3.org

Server: udc.nwudc.lan

Address: 192.168.25.25

Non-authoritative answer:

www.w3.org internet address = 193.51.208.69

www.w3.org internet address = 128.30.52.31

www.w3.org internet address = 128.30.52.45

www.w3.org internet address = 128.30.52.46

www.w3.org internet address = 128.30.52.47

www.w3.org internet address = 128.30.52.54

w3.org nameserver = ns3.w3.org

w3.org nameserver = ns1.w3.org

w3.org nameserver = ns2.w3.org

Выше приведен типичный отклик кэширующего сервера на запрос nslookup об адресе «www.w3.org». Если бы сервер был авторитативным, то строчки «Non-authoritative answer» в отклике не было.

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

Протокол DNS выполняет две основные функции. Он позволяет клиентским компьютерам запрашивать DNS-сервер об IP-адресе или имени какого-либо хоста в сети, а также позволяет производить обмен информацией между базами данных серверов DNS. В этом протоколе используется стандартный формат типа «запрос-ответ», где клиент посылает пакет запроса, и сервер отвечает либо пакетом с информацией, полученной из базы данных, либо сообщением об ошибке, в котором указывается причина отказа в обработке запроса. В своей работе этот протокол использует порт 53 и хорошо известные протоколы - TCP или UDP. Причем в последнее время UDP стал более распространенным методом транспортировки пакетов по сети Internet. Пакет DNS состоит из пяти полей: заголовка, вопроса, ответа, полномочий и поля дополнительной информации. На рисунке 5.7 показана общая структура пакета DNS.

Рис. 5.7 Описание пакета протокола DNS

Поле заголовка



В поле заголовка содержится информация о пакете и его назначении. В нём дается общее описание пакета (пакет запроса или пакет ответа) и указывается количество данных, содержащихся в каждом поле данных пакета. Описание заголовка приводится в таблице 5.1.

Биты ID являются уникальным 16-битовым идентификационным номером пакета запроса. Пакет ответа, формируемый сервером, также использует этот идентификационный номер, чтобы клиент мог сопоставить ответ сервера со своим запросом. Бит QR обозначает тип пакета (пакет запроса - 0, пакет ответа - 1). Поле OPCODE определяет тип запроса - стандартный (0), обратный (1) или запрос о статусе сервера (2).

Таблица 5.1. Поле заголовка DNS-пакета

Бит Описание Бит Описание
0-15 ID RA
QR 25-27 Z
17-20 OPCODE 28-31 RCODE
AA 32-47 QDCOUNT
TC 48-63 ANCOUNT
RD 64-79 NSCOUNT
80-95 ARCOUNT

Следующие четыре бита определяют различные параметры пакета. Бит AA устанавливается, когда ответ является авторитетным (данные поступают напрямую от DNS-сервера, ответственного за зону). Неавторитетные ответы могут поступать от серверов DNS, в кэше которых сохранилась информация об исходных записях от предыдущих запросов. Эта информация считается неавторитетной, так как есть вероятность, что с момента последнего обращения к серверу информация была изменена. Бит TC устанавливается, когда требуется урезать данные в пакете до вида, удобного для передачи по сети. Такое вполне возможно при использовании протокола UDP, согласно которому размер пакета не должен превышать 512 байт. Бит RD включается, когда клиент желает рекурсивно запрашивать DNS-сервер на постоянной основе. Если этот бит установлен, то DNS-сервер будет запрашивать другие DNS-серверы, пока не получит ответ. Если этот бит не установлен, то DNS-сервер будет возвращать на запрос любую информацию, которая у него имеется. Бит RA устанавливается, чтобы уведомить клиента о возможности рекурсивного запроса на данный сервер. Биты Z в настоящее время не используются и зарезервированы на будущее.

Биты RCODE используются только в пакетах ответов. Они отображают состояние ответа - без ошибок (0), ошибки в пакете запроса (1), внутренние ошибки не дали возможности серверу обработать запрос (2), имя, указанное в запросе, не существует (3), данный тип запроса не поддерживается сервером (4) и сервер отказался обработать запрос (5).

Остальные четыре параметра заголовка представляют собой 16-битовые числа и используются в качестве счётчиков. С их помощью ведётся учёт количества исходных записей, возвращаемых в пакете. QDCOUNT отображает количество запросов (в пакет может включаться более одного запроса). ANCOUNT - количество исходных записей, включенных в ответ. NSCOUNT обозначает число исходных записей об авторитетных серверах имен, а ARCOUNT - число записей в поле дополнительной информации.

Поле вопроса

Поле вопроса содержит запросы, ответы на которые клиент желает получить от DNS-сервера. В одном пакете DNS может содержаться несколько запросов. Количество запросов в пакете определяется параметром QDCOUNT из поля заголовка. Поле вопроса состоит из трех частей: списка преобразуемых доменных имен; поля типов записей, которые клиент желает получить в ответе, и параметра класса запроса. Список преобразуемых доменных имён представляет собой список имён, для которых клиент желает получить IP-адреса. Для формирования списка имён используется специальный формат. Перед каждым именем ставится однобайтное значение, которое определяет длину имени. Конец списка обозначается именем с нулевой длиной. После текстовой части следует двубайтная запись QTYPE. В ней определяется, в каком виде клиент желает принимать информацию о имеющихся доменах. Эти значения полностью соответствуют типам исходных записей в DNS. Например, для того чтобы найти почтовый сервер для определённого домена, вам следует воспользоваться типом записи МХ. И, наконец, последний параметр в поле вопроса - QCLASS. Он определяет класс запроса, который в нашем случае для сети Internet всегда будет IN.

Поля ответа, полномочий и дополнительной информации

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

Например, если запросить информацию об МХ-записях домена, то в поле ответа будет получена информация об МХ-записях, а в поле дополнительной информации - записи А для серверов, указанных в поле ответа. Таким образом, с помощью одного DNS-запроса можно узнать и имя, и IP-адрес почтового сервера для домена.

Формат представления исходной записи в пакете DNS показан в таблице 5.2.

Таблица 5.2. Форматы полей ответа, полномочий и дополнительной информации

В поле ответа значения RDATA соответствуют результатам обработки запроса. Записи МХ представляются не в текстовом формате. Вместе с именем почтового сервера в них вносится значение приоритета.

Протокол DNS выполняет две основные функции. Он позволяет клиентским компьютерам запрашивать DNS-сервер об IP-адресе или имени какого-либо хоста в сети, а также позволяет производить обмен информацией между базами данных серверов DNS. В этом протоколе используется стандартный формат типа "запрос-ответ", где клиент посылает пакет запроса, и сервер отвечает либо пакетом с информацией, полученной из базы данных, либо сообщением об ошибке, в котором указывается причина отказа в обработке запроса. В своей работе этот протокол использует порт 53 и хорошо известные протоколы - TCP или UDP. Причем в последнее время UDP стал более распространенным методом транспортировки пакетов по сети Internet. Пакет DNS состоит из пяти полей: заголовка, вопроса, ответа, полномочий и поля дополнительной информации. На рис. 4.5 показана общая структура пакета DNS.


Рис. 4.5.

Поле заголовка

В поле заголовка содержится информация о пакете и его назначении. В нем дается общее описание пакета (пакет запроса или пакет ответа) и указывается количество данных, содержащихся в каждом поле данных пакета. Описание заголовка приводится в табл. 4.3 .

Таблица 4.3. Поле заголовка DNS-пакета
Бит Описание
0-15 ID
16 QR
17-20 OPCODE
21 AA
22 TC
23 RD
24 RA
25-27 Z
28-31 RCODE
32-47 QDCOUNT
48-63 ANCOUNT
64-79 NSCOUNT
80-95 ARCOUNT

Биты ID являются уникальным 16-битовым идентификационным номером пакета запроса. Пакет ответа, формируемый сервером, также использует этот идентификационный номер, чтобы клиент мог сопоставить ответ сервера со своим запросом. Бит QR обозначает тип пакета (пакет запроса - 0, пакет ответа - 1). Поле OPCODE определяет тип запроса - стандартный (0), обратный (1) или запрос о статусе сервера (2).

Следующие четыре бита определяют различные параметры пакета. Бит AA устанавливается, когда ответ является авторитетным (данные поступают напрямую от DNS-сервера, ответственного за зону). Неавторитетные ответы могут поступать от серверов DNS, в кэше которых сохранилась информация об исходных записях от предыдущих запросов. Эта информация считается неавторитетной, так как есть вероятность, что с момента последнего обращения к серверу информация была изменена. Бит TC устанавливается, когда требуется урезать данные в пакете до вида, удобного для передачи по сети. Такое вполне возможно при использовании протокола UDP, согласно которому размер пакета не должен превышать 512 байт. Бит RD включается, когда клиент желает рекурсивно запрашивать DNS-сервер на постоянной основе. Если этот бит установлен, то DNS-сервер будет запрашивать другие DNS-серверы, пока не получит ответ. Если этот бит не установлен, то DNS-сервер будет возвращать на запрос любую информацию, которая у него имеется. Бит RA устанавливается, чтобы уведомить клиента о возможности рекурсивного запроса на данный сервер. Биты Z в настоящее время не используются и зарезервированы на будущее.

Биты RCODE используются только в пакетах ответов. Они отображают состояние ответа - без ошибок (0), ошибки в пакете запроса (1), внутренние ошибки не дали возможности серверу обработать запрос (2), имя, указанное в запросе, не существует (3), данный тип запроса не поддерживается сервером (4) и сервер отказался обработать запрос (5).

Остальные четыре параметра заголовка представляют собой 16-битовые числа и используются в качестве счетчиков. С их помощью ведется учет количества исходных записей, возвращаемых в пакете. QDCOUNT отображает количество запросов (в пакет может включаться более одного запроса). ANCOUNT - количество исходных записей, включенных в ответ. NSCOUNT обозначает число исходных записей об авторитетных серверах имен, а ARCOUNT - число записей в поле дополнительной информации.

Поле вопроса

Поле вопроса содержит запросы, ответы на которые клиент желает получить от DNS-сервера. В одном пакете DNS может содержаться несколько запросов. Количество запросов в пакете определяется параметром QDCOUNT из поля заголовка. Поле вопроса состоит из трех частей: списка преобразуемых доменных имен; поля типов записей, которые клиент желает получить в ответе, и параметра класса запроса. Список преобразуемых доменных имен представляет собой список имен, для которых клиент желает получить IP-адреса. Для формирования списка имен используется специальный формат. Перед каждым именем ставится однобайтное значение, которое определяет длину имени. Конец списка обозначается именем с нулевой длиной. После текстовой части следует двубайтная запись QTYPE . В ней определяется, в каком виде клиент желает принимать информацию о имеющихся доменах. Эти значения полностью соответствуют типам исходных записей в DNS. Например, для того чтобы найти почтовый сервер для определенного домена, вам следует воспользоваться типом записи МХ . И, наконец, последний параметр в поле вопроса - QCLASS . Он определяет класс запроса, который в нашем случае для сети Internet всегда будет IN .