Секция дополнительной информации
Это секция, содержащая одну или более записей источников. Она представляет только ответные сообщения. Секция обеспечивает дополнительной информацией, которая может помочь распознавателю. Например, сервер может дать имя домена полномочного сервера распознавателю в полномочной секции и включать IP-адрес для того же самого полномочного сервера в секции дополнительной информации.
Типы записей
Как мы видели в предыдущих разделах, в DNS используются два типа записей. Запись запроса происходит в секции запроса, сообщения запроса или отклика. Средства записи применяют в информации ответа, полномочий и дополнительной секции сообщения ответа.
Запись запроса
Запись запроса используется клиентом, чтобы иметь информацию от сервера. Она содержит доменное имя. Рисунок 4.3 показывает формат записи запроса. Список, приведенный ниже, дает описание полей записи запроса.
Рис. 3.3.Формат записи запроса
Имя запроса. Это поле переменной величины, содержащее доменное имя рисунок 4.4.
Рис. 3.4.Формат имени запроса
Тип запроса. Это 16-битовое поле, определяющее тип запроса. Табл. 4.4 показывает обычно используемые типы. Последние два могут быть применены только в запросе.
Тип | Мнемоника | Имя | Описание |
A | Address | Адрес. 32-битовый Ipv6-адрес. Он используется для доменного имени адреса IPv6 | |
NS | Name server | Оно идентифицирует полномочный сервер зоны | |
CNAME | Canonical name | Каноническое имя. Оно определяет псевдоним для официального имени хоста | |
SOA | Start of authority | Старт полномочиям. Он отмечает начало зоны. Это обычно первая запись в файле зоны. | |
WKS | Well-know services | Хорошо известный сервис. Он определяет сетевой сервис, который обеспечивается хостом | |
PTR | Pointer | Указатель. Он используется для преобразования адреса в доменное имя | |
HINFO | Host information | Информация хоста. Он дает определение аппаратуре и операционной системе, используемой хостом | |
MX | Mail exchange | Обмен сообщениями. Он перенаправляет информацию к почтовому серверу | |
AAA | Address An IPv6 address | Адрес IPv6 | |
AXFR | Запрос на передачу по всей зоне | ||
ANY | Запрос на все записи |
Класс запроса. Это 16-битовое поле, которое определяет специальный протокол, используемый DNS. Табл. 4.5 показывает текущие значения. В этой таблице нас интересует только класс 1 (Интернет).
Класс | Мнемоника | Описание |
IN | Интернет | |
Зарезервировано | ||
Зарезервировано | ||
Зарезервировано |
Запись ресурса
Каждое доменное имя (каждый узел дерева) связан с записью, называемой записью ресурса. Сервер базы данных содержит записи ресурса. Записи ресурса — это также то, что возвращается сервером клиенту. Рис. 3.5 показывает формат записи ресурсов.
Рис. 3.5.Формат записи ресурсов
Имя домена. Это поле переменной длины, содержащее имя домена. Оно дублирует имя домена в записи запроса. Пока DNS запрашивает использование сжатия, везде повторяется имя — указатель ответвления к соответствующему полю имени домена в записи запроса. См. раздел "Сжатие".
Тип домена. Это поле такое же, как поле типа запроса в секции запроса, исключая два последних типа, которые не разрешены.
Класс домена. Это поле такое же, как поле класса запроса в секции запроса ( (см. табл. 3.5).
Время жизни. Это 32-битовое поле, определяющее число секунд, при котором ответ действителен. Приемник может кэшировать ответ на этот период времени. Значение нуль означает, что запись ресурсов используется только на один переход и не может быть кэширована.
Длина ресурса данных. Это 16-битовое поле, определяющее длину ресурса данных.
Данные ресурса. Это поле переменной длины, содержащее ответ на запрос (в секции ответ), или имя домена полномочного сервера (в секции полномочий), или дополнительную информацию (в дополнительной секции). Формат и содержание этого поля зависит от значения типа поля. Оно может быть одним из нижеследующих:
Номер. Это – записанный октет. Например, Ipv4-адрес – это целое число из 4-х октетов, и IPv6-адрес – это целое число из 16-ти октетов.
Имя домена. Имена домена выражаются как последовательность меток. Каждая метка помечается полем однобайтовой длины, которое определяет число символов в метке. Каждое имя домена заканчивается нулевой меткой, последний байт каждого имени домена — поле длины со значением 0. Для того чтобы отличить поле длины и точку ответвления (как, мы будем это обсуждать позднее), два старших разряда длины поля должны быть всегда нулевыми ( 00 ). Это не будет создавать проблем, потому что длина метки не может быть больше 63 — максимального значения из 6-ти ( 111111 ).
Точка ответвления. Имя домена может быть заменено точкой ответвления. Точка ответвления — двухбайтное поле с двумя старшими битами, установленными в положение 1 ( 11 ).
Строка символов. Строка символов представляется полем длиной в 1 бит (сопровождаемое число символов, определяемых длиной поля .zk ). Строчка символов может иметь длину до 256 символов (включая поле длины).
Сжатие
Когда имя домена повторяется, DNS требует, чтобы оно заменялось указателем сдвига. Например, запись ресурса имени домена обычно повторяет имя домена в запросе. Для того чтобы избежать дублирования, DNS определяет двухбайтовый указатель сдвига, который указывает на предыдущее вхождение имени в домен или часть его. Формат поля показан на Рис. 4.6
Рис. 3.6.Формат указателя сдвига
Первые два старших разряда — это две единицы, необходимые для того, чтобы отличить точку-указатель сдвига от информации "длина поля".) Другие 14 бит представляют число, которое указывает на соответствующий байт номера сообщения. Этот байт отсчитывается от начального сообщения с первым байтом, который считается нулевым. Например, если указатель сдвига указывает на байт 12 (тринадцатый байт) сообщения, значение должно быть 1100000000001100. Здесь 2 наибольших левых разряда определяют поле как указатель ответвления, а другие биты определяют десятичное число 12. Мы покажем, как используются указатели сдвига на следующих примерах.
Примеры
В этом разделе мы рассмотрим некоторые примеры DNS-запросов и ответов.
Пример 1
Распознаватель посылает запрос к локальному серверу для нахождения IP-адреса для хоста kafedra.gut.spb.ru.
Сообщение запроса. Рис. 4.7 показывает сообщение запроса, посылаемое распознавателем. Первые два байта показывают идентификатор в шестнадцатеричном исчислении ( 1444 ). Он используется как последовательный номер и относится к отклику на запрос. Поскольку распознаватель может послать только один запрос одному и тому же серверу, идентификатор помогает сортировать ответы, которые прибывают в любом порядке. Следующие байты содержат флаг с шестнадцатеричным значением 0100. В двоичной системе это 0000 0001 0000 0000, но более понятно флаг показан ниже.
Рис. 3.7.Пример сообщения запроса
Бит QR определяет сообщение как запрос. OpCode 0000 означает стандартный запрос. Рекурсия желательна, бит RD установлен (см. рис. 3.3, описания полей флага).
Сообщение содержит только одну запись запроса. Имя домена — kafedra.gut.spb.ru. Следующие два байта определяют тип запроса как IP-адрес; последние два байта определяют класс Интернета.
Ответное сообщение. Рис. 4.8 показывает ответ сервера. Ответ похож на запрос, за исключением того, что различаются флаги и число ответных записей одно и то же. Значение флага — 8180 в шестнадцатеричном исчислении. В двоичном исчислении он равен 1000 0001 1000 0000, но мы снова разделим это представление по полям, как это показано ниже.
Рис. 3.8.Пример сообщения ответа
Бит QR определяет сообщение как ответ. OpCode 0000 означает стандартный запрос. Рекурсия возможна (RA=1), и RD-бит установлен в состояние 1. Сообщение содержит одну запись запроса и одну запись ответа. Запись запроса повторяет сообщение запроса. Запись ответа имеет шестнадцатеричный указатель ( C00C ), разбитый на две линии, который ссылается на запись запроса вместо того, чтобы повторять имя домена. Следующее поле определяет тип домена (адрес), после которого определяется класс (Интернет). Поле со значением 12000 – TTL (время жизни равно 12000 с.). Следующее поле — это длина ресурсов данных, которая и есть IP-адрес ( 153.18.8.105 ).
Пример 2
FTP-сервер получил пакет от FTP-клиента с IP-адресом 153.2.7.9. Этот FTP-сервер может запросить файл, содержащий списки полномочных клиентов. Однако файл содержит только имена доменов. FTP-сервер имеет только IP-адрес запрашиваемого клиента, который располагает источником IP-адресов в полученной дейтаграмме. FTP-сервер запрашивает распознаватель (DNS клиента), чтобы получить обратный запрос к DNS и запросить имя FTP-клиента. Мы обсудим сообщение запроса и ответа отдельно.
Сообщение запроса. На табл. 4.6 приведено сообщение запроса, посланное от распознавателя к серверу. Первые 2 байта показывают идентификатор 1200. Значение флага — 0900 в шестнадцатеричном представлении. В двоичном представлении он равен 0000 1001 0000 0000 0000, и мы разделим его по полям, как показано ниже.
OpCode 0001 – означает инверсный запрос. Сообщение содержит только одну запись запроса
1 9 1 7 1 2 3 153 7 in-addr 4 arpa.
Следующие два байта определяют тип запроса (PTR)и последние два байта класс Интернета
QR | OpCode | AA | TC | RD | RA | Reserved | RCode |
0x1200 | 0x0900 | ||||||
'9' | '7' | ||||||
'2' | '1' | ||||||
'5' | '3' | 'i' | |||||
'n' | '-' | 'a' | 'd' | ||||
'd' | 'r' | '4' | 'a' | ||||
'r' | 'p' | 'a' | |||||
Инверсный ответ. Табл. 4.7 показывает ответ. Сообщение содержит одну запись запроса и одну запись ответа. Запись запроса повторяет сообщение запроса. Запись ответа имеет указатель 0xC00C, который ссылается на запись запроса вместо повторения имени домена. Следующее поле определяет тип домена (PTR). Следующее поле определяет класс Интернет, а после этого определяется время жизни (TTL) – 24000 c. Следующее поле – это длина данных источника (10). Последнее поле – это имя домена: 7kafedra3gut3spb2ru0.
QR | OpCode | AA | TC | RD | RA | Reserved | RCode |
0x1200 | 0x8D80 | ||||||
i | |||||||
n | - | a | d | ||||
d | r | a | |||||
r | p | a | |||||
C00C | |||||||
k | a | f | |||||
e | d | r | a | ||||
g | u | t | |||||
s | p | b | |||||
r | u |
DDNS
Когда DNS был разработан, не предполагалось делать так много изменений адресов. В DNS, когда происходят перемены, такие как дополнение новых хостов, перемещение хоста, изменение IP-адреса, изменения может делать DNS-мастер-файл. Этот тип изменений включает множество ручных коррекций. Масштаб сегодняшнего Интернета не позволяет такого рода ручные операции.
DNS-мастер-файл должен быть скорректирован динамически. Поэтому была изобретена динамическая система доменных имен (DDNS – Dynamic Domain Name System). В DDNS, когда связь между именем и адресом определена, информация посылается обычно с помощью действий по протоколу динамической реконфигурации хостов (DHCP — Dynamic HostConfiguration Protocol) к первичному DNS-серверу. Первичный сервер модернизирует зону. Вторичные серверы уведомляются либо активно, либо пассивно. При активном уведомлении первичный сервер посылает сообщение вторичным серверам об изменениях в зоне, в то время как при пассивном уведомлении вторичные серверы периодически проверяются на любые изменения. В любом случае, после осуществления уведомления об изменении вторичные серверы запрашивают информацию об изменениях во всей зоне (зоновая передача), чтобы обеспечить безопасность. Для предотвращения неполномочных изменений DNS-записей DDNS может использовать полномочный механизм.
Инкапсуляция
DNS может использовать UDP или TCP. В обоих случаях сервером задействуется закрепленный порт – 53. UDP применяется, когда размер сообщения ответа меньше чем 512 байт, потому что большинство пакетов UDP имеют ограничение на размер пакета 512 байт. Если размер сообщения ответа больше чем 512 байт, должно использоваться соединение TCP. В этом случае может возникнуть один из двух сценариев:
Если распознаватель заранее подтвердил, что размер ответного сообщения больше чем 512 байт, оно должно использовать TCP-соединение. Например, если передается вторичное имя сервера (активизированного как клиент) и нужна зоновая передача от первичного сервера, он должен применить TCP-соединение, потому что размер передаваемой информации обычно превышает 512 байт.
Если распознаватель не знает размера ответного сообщения, он может задействовать UDP-порт. Однако если размер ответного сообщения больше чем 512 байт, сервер усекает сообщение и возвращает TCP-бит. Распознаватель теперь открывает TCP-соединение, повторяет запрос и получает полный ответ от сервера.
Практическое занятие 4. Задания
1. Определите, какие из следующих адресов полные, а какие частные:
a. ххх ;
b. ххх.yyy.;
c. ххх.yyy.tv ;
d. zzz.ххх.yyy.
2. Определите, какие из следующих адресов полные, а какие частные:
a. ru.;
b. com.;
c. ххх.yyy.tv ;
d. zzz.ххх.yyy.
3. Найдите значение поля флага (в шестнадцатеричном виде) для сообщений запроса, в случае запроса адреса и нарушения рекурсивного ответа.
4. Найдите значение поля флага (в шестнадцатеричном виде) для неполномочного сообщения, содержащего инверсный ответ. Распознаватель запросил рекурсивный ответ, но рекурсивный ответ невозможен.
5. Проведите анализ поля флагов 0x5B50.
6. Проведите анализ поля флагов 0x5080. Такой адрес допустим или нет?
7. Является ли фиксированным адрес записи запроса?
8. Является ли фиксированным адрес записи ресурса?
9. Каков размер записи запроса, содержащего доменное имя econym.demon.co.uk?
10. Каков размер записи запроса, содержащего IP-адрес?
11. Каков размер записи ресурса, содержащего доменное имя econym.demon.co.uk?
12. Каков размер записи ресурса, содержащего IP-адрес?
13. Каков размер сообщения запроса, запрашивающего IP-адрес для loniis.spb.edu?
14. Каков размер сообщения запроса, запрашивающего доменное имя для 115.42.25.13?
15. Каков размер сообщения ответа, отвечающего на сообщение по п. 13?
16. Каков размер сообщения ответа, отвечающего на сообщение по п. 14?
17. Повторите упражнение для примера 1, использующее ответное сообщение с одной записью ответа и одной полномочной записью, которая определяет сервер kafedra.gut.spb.ru как полномочный сервер.
18. Повторите упражнение 17, но с дополнительной записью, которая определяет адрес полномочного сервера 123.15.8.0.
19. DNS-клиент ищет IP-адрес для ххх.yyy.tv. Покажите сообщение запроса со значением всех полей.
20. Покажите ответное сообщение на сообщение по упражнению 19, предполагая, что IP-адрес равен 183.85.34.12.
21. DNS-клиент ищет IP-адрес для ххх.yyy.tv и aaa.bbb.edu. Покажите сообщение запроса.
22. Покажите ответное сообщение на сообщение по упражнению 21, предполагая, что IP-адрес равен 15.12.34.18 и 143.56.32.54.
23. Покажите ответное сообщение на сообщение по упражнению 22, предполагая, что первый DNS-сервер может преобразовать первый запрос и не может сделать этого для второго запроса.
24. DNS-клиент ищет имя компьютера с IP-адресом 233.2.15.8. Покажите сообщения запроса.
25. Покажите ответное сообщение, которое посылает сервер на запрос по упражнению 24.