Служба DNS

Служба DNS (Domain Name System) является одной из важнейших служб TCP/IP, само появление которой в 1980-х годах дало мощный толчок развитию TCP/IP и всемирной сети Internet. Дело в том, что DNS обеспечивает важную возможность преобразования символических доменных имен в соответствующие IP-адреса (разрешение имен). Например, для обращения к адресу серверу компании Microsoft, имеющему IP-адрес 207.46.230.229, можно обратиться, используя символическое имя microsoft.com. С одной стороны, это дает более наглядную нотацию, а с другой, появляется возможность не привязывать жестко получение услуг сервера к фиксированному адресу, который при реорганизации сети может измениться.

Службу DNS можно рассматривать, как распределенную иерархическую базу данных, основное назначение которой отвечать на два вида запросов: выдать IP-адрес по символическому имени хоста и наоборот – выдать символическое имя хоста по его IP-адресу. Облуживание этих запросов и поддержку базы данных в актуальном состоянии обеспечивают взаимодействующие глобально рассредоточенные в сети Internet серверы DNS. База данных имеет древовидную структуру, в корне которой нет ничего, а сразу под корнем находятся первичные сегменты (домены):. com,.edu,.gov, …,.ru,.by,.uk, … Наименование этих первичных доменов отражает деление базы данных DNS по отраслевому (домены, обозначенные трехбуквенным кодом) и национальному признакам (двухбуквенные домены в соответствии со стандартом ISO 3166). Доменом в терминологии DNS называется любое поддерево дерева базы данных DNS.

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

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

Разработчик приложения может обратиться за разрешением имени с помощью функций, имеющих, как правило, имена gethostbyname и gethostbyaddr.

В одной доменной зоне может быть несколько доменных имен.

Существует определенный ряд записей, почтовый адрес админа, записи сопоставления имени и IPадреса, для замены одного имени на другое, для указания зоны, для поиска серверов где функционируют определенные службы.

Запись SOA: в ней указывается имя доменной зоны, период обновления, Ip адрес администратора, задержка перед следующей попыткой, минимальное время жизни

Запись А: связывает доменное имя и ip адрес. Если создать несколько записей с одним и тем же доменным именем но разными Ip адресами, то это позволит равномерно распределить нагрузки между несколькими хостами. Сервер выбирает ближайший IP адрес к клиенту.

Запись CNAME: позволяет одному IP адресу сопоставить несколько доменных имен.

Запись MX: связывает имена почтовых доменов с именами хостов.

Запись PTR: запись обратная записи А.

Запись NS: определяет полномочный сервер имен субдомена. Связывает имена субдомена с именем полномочного DNS сервера.

Запись SRV: отображает порядок и доступность служб в конкретной зоне. Определяет сетевой протокол, порт, доменное имя хоста.

Формат пакета DNS.

ID
QR OPCODE AA TC RD RA Z RCODE
QDCOUNT
ANCOUNT
NSCOUNT
ARCOUNT

ID – идентификатор. Состоит из 2х байт. Т.к. обмен данными носит диалоговый характер, каждый запрос идентифицируется. Клиент передавая запрос заполняет это поля, сервер генерирует ответ и помещает его в тоже поле.

QR – идентификатор, обозначает данное сообщение запрос от клиента или ответ от сервера.

OPCODE – клиент указывает тип запроса к серверу DNS.

AA – имеет смысл только в пакетах ответа от сервера клиенту. Если установлен данный флаг, значит сервер сгенерировал ответ.

TC – данный флаг устанавливается в пакете ответе в том случае если сервер не смог поместить всю необходимую информацию в пакет из-за существующих ограничений.

RD – заголовок DNS. Клиент просит сервера не сообщать ему промежуточный ответ, а сообщить клиенту только конечный результат.

RA – данный флаг устанавливается в ответах. Служит для ответа клиенту поддерживает ли сервер рекурсивное обслуживание.

Следующие 3 бита заголовка DNS Зарезервированы для дальнейшего использования и должны быть равны нулю во всех запросах и ответах.

RCODE – поле кода ответа, либо с ошибкой, либо успешно. 0 – без ошибок, 1- ошибка разрешения имен и эта ошибка связана с DNS сервером который не смог понять формат запроса клиента, 2 – означает что сервер сигнализирует о неисправностях сервера. 3 – имени не существует в данном домене. 4 – сервер не может выполнить запрос данного типа.

QDCOUNT – количество запросов

ANCOUNT – количество ответов

NSCOUNT – количество записей в Authority Section

ARCOUNT – количество записей в Additional Record Section

Утилита NSLOOKUP



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: