Читаем без скачивания TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) - Сидни Фейт
Шрифт:
Интервал:
Закладка:
345600 ; default TTL of 4 days
)
66.172.in-addr.arpa. IN NS NS.FISHFOOD.COM.
1.1 IN PTR NS.FISHFOOD.COM.
66.172.in-addr.arpa. IN NS NS2.FISHFOOD.COM.
100.1 IN PTR NS2.FISHFOOD.COM.
2.1 IN PTR MAIL-RELAY.FISHFOOD.COM.
Рис. 12.7. Таблица обратного просмотра
Элементы также будут обратными. Например, элементу 100.1 соответствует адрес 172.66.1.100.
12.16 Формат сообщений DNS
Обмен сообщениями запросов и ответов между клиентом и серверами DNS имеет простой формат. Сервер добавляет информацию ответа к исходному запросу и посылает полученное сообщение обратно. На рис. 12.8 показан полный формат сообщения.
Рис. 12.8. Общий формат сообщения DNS
12.16.1 Секция заголовка
Секция заголовка содержит поля, представленные в таблице 12.2.
Таблица 12.2 Поля заголовка сообщения DNS
Поле Описание ID Идентификатор Служит для согласования запроса и ответа. Parameters Параметры: Запрос или ответ. Обычный или обратный просмотр. Является ли ответ авторитетным. Является ли ответ усеченным. Рекурсивно или нет сообщение. Допустима ли рекурсия в ответе. Для ответа — код ошибки. Number of queries Количество запросов Присутствует в запросе и ответе. Number of answers Количество ответов Присутствует только в ответе. Number of authority records Количество авторитетных записей Присутствует в ответе. Информация в авторитетных записях включает имя сервера, хранящего авторитетные данные. Number of additional records Количество дополнительных записей Присутствует в ответе и содержит адреса авторитетных серверов.12.16.2 Секция запроса
Запрос имеет поля, перечисленные в таблице 12.3. Обычно сообщение содержит единственный запрос. Но можно в общей секции объединить несколько различных запросов.
Таблица 12.3 Поля запросов DNS
Поле Описание Name (Имя) Имя домена или IP-адрес в поддереве IN-ADDR.ARPA Type (Тип) Тип запроса, например А или NS Class (Класс) IN для Интернета записывается как 112.16.3 Секция ответа
Сам ответ, информация об авторитетности и дополнительные сведения структурированы так же, как и в запросе. Ответ состоит из последовательности записей о ресурсах, содержащих поля, показанные в таблице 12.4.
Таблица 12.4 Поля записей о ресурсах
Поле Описание Name (Имя) Имя узла для данной записи Type (Тип) Тип записи, например SOA или А, записанный числовым кодом Class (Класс) IN соответствует 1 TTL Время жизни 32-разрядное целое число со знаком, отражающее время кеширования записи RDLENGTH Длина записи Длина поля данных в записи о ресурсах RDATA Данные записи Например, для записи об адресе — значение IP-адреса. Запись SOA содержит обширные сведения.Секция информации об авторитетности указывает авторитетные серверы имен для домена. Секция дополнительной информации предоставляет сведения, подобные IP-адресам авторитетных серверов имен.
12.17 Используемый транспорт
Запросы и ответы DNS обычно пересылаются через UDP, но разрешается применять и TCP, который используется для переносов зон.
12.18 Примеры
Некоторые реализации программы nslookup позволяют рассмотреть сообщения более подробно. Ниже приводится результат запуска nslookup на хосте Йельского университета и указывается вывод детальной отладочной информации с помощью команды set d2.
Запрос требовал трансляции имени www.microsoft.com в адрес, а в ответе было получено два адреса. Дело в том, что два различных компьютера работают как сервер WWW компании Microsoft и разделяют между собой трафик от клиентов. Если клиент не получает ответа по первому адресу (возможно, при сильной загруженности этой системы), он может обратиться ко второму компьютеру.
> nslookup
Server: DEPT-GW.cs.YALE.EDU Address: 128.36.0.36
> set d2
> www.microsoft.com.
Server: DEPT-GW.cs.YALE.EDU Address: 128.36.0.36
res_mkquery(0, www.microsoft.com, 1, 1)
------
SendRequest(), len 35
HEADER:
opcode = QUERY, id = 5, rcode = NOERROR
header flags: query, want recursion
questions = 1, answers = 0, auth. records = 0, additional = 0
QUESTIONS:
www.microsoft.com, type = A, class = IN
------
------
Got answer (67 bytes):
HEADER:
opcode = QUERY, id = 5, rcode = NOERROR
header flags: response, auth. answer, want recursion,
recursion avail.
questions = 1, answers = 2, auth. records = 0, additional = 0
QUESTIONS:
www.microsoft.com, type = A, class = IN
ANSWERS:
-> www.microsoft.com
type = A, class = IN, ttl = 86400, dlen = 4
inet address = 198.105.232.5
-> www.microsoft.com
type = A, class = IN, ttl = 86400, dlen = 4
inet address = 198.105.232.6
Ответ локального сервера не содержит авторитетных записей и дополнительных сведений. Однако этот сервер получал авторитетность и дополнительную информацию от запрашиваемых им серверов и кешировал такие сведения.
При повторном запросе ответ придет из кеша локального сервера. Так как информация не авторитетна, локальный сервер предоставляет в ответе имена и адреса авторитетных серверов для microsoft.com.
> www.microsoft.com.
Server: DEPT-GW.cs.YALE.EDU
Address: 128.36.0.36
res_mkquery(0, www.microsoft.com, 1, 1)
------
SendRequest(), len 35
HEADER:
opcode = QUERY, id = 8, rcode = NOERROR
header flags: query, want recursion
questions = 1, answers = 0, auth. records = 0, additional = 0
QUESTIONS:
www.microsoft.com, type = A, class = IN
------
------
Got answer (194 bytes):
HEADER:
opcode = QUERY, id = 8, rcode = NOERROR
header flags: response, want recursion, recursion avail,
questions = 1, answers = 2, auth. records = 3, additional = 3
QUESTIONS:
www.microsoft.com, type = A, class = IN
ANSWERS:
-> www.microsoft.com
type = A, class = IN, ttl = 86392, dlen = 4
inet address = 198.105.232.5
-> www.microsoft.com
type = A, class = IN, ttl = 86392, dlen = 4
inet address = 198.105.232.6
AUTHORITY RECORDS:
-> MICROSOFT.COM
type = NS, class = IN, ttl = 172792, dlen = 7
nameserver = ATBD.MICROSOFT.COM
-> MICROSOFT.COM
type = NS, class = IN, ttl = 172792, dlen = 16
nameserver = DNS1.NWNET.NET
-> MICROSOFT.COM
type = NS, class = IN, ttl = 172792, dlen = 7
nameserver = DNS2.NWNET.NET
ADDITIONAL RECORDS:
-> ATBD.MICROSOFT. COM
type = A, class = IN, ttl = 187111, dlen = 4
inet address = 131.107.1.7
-> DNS1.NWNET.NET
type = A, class = IN, ttl = 505653, dlen = 4
inet address = 192.220.250.1
-> DNS2.NWNET.NET
type = A, class = IN, ttl = 505653, dlen = 4
inet address = 192.220.251.1
Отметим, что в обоих запросах о www.microsoft.com. введена конечная точка. Если она опущена, запрос первоначально будет послан с добавленным в конец именем локального домена.
Это демонстрирует запуск запроса на компьютере Йельского университета, подключенном к cs.yale.edu. В следующем примере показаны происходящие при этом события. Запрос был отклонен, но далее автоматически переделан для исключения дополнительных обозначений в конце имени.