Основные протоколы интернет

Система доменных имен

Показывать лекцию целиком

Для идентификации объекта протоколы используют IP-адреса, которые уникально идентифицирует соединения хоста с Интернетом. Однако люди предпочитают имена адресам. Поэтому нам необходима система, которая сопоставляет имя с адресом или адрес к имени.

Когда Интернет имел небольшой объем, сопоставление делал хост-файл. Хост-файл имел только две колонки, включающие в себя имя и адрес. Когда программа или пользователь хотели сопоставить имя и адрес, хост обращался к хост-файлу и находил отображение.

Однако сегодня невозможно иметь одиночный файл хоста, чтобы устанавливать связь каждого файла с именем или обратно. Этот хост-файл был бы слишком велик для накопления каждого хоста. В дополнение к этому, было бы невозможно обновить все файлы хостов в мире каждый раз, когда идут изменения.

Одно из решений могло бы состоять в том, чтобы хранить полный файл хоста в единственном компьютере и позволять доступ к этой централизованной информации для каждого компьютера, который нуждается в отображении. Но это бы создало огромный трафик на сети Интернет.

Другое решение, используемое сегодня, — это децентрализация. Огромное количество информации разделено на маленькие части, и каждая часть накапливается в различных компьютерах. При этом методе хост, который нуждается в отображении, может контактировать с ближайшим компьютером, содержащим необходимую информацию. Этот метод используется в доменной системе имен (DNS — Domain Name System). Далее рассматриваются концепции и идеи этой системы. Затем дается описание самого протокола DNS.

Пространство имен

Чтобы быть однозначным, имя, назначаемое машиной, должно быть отделено от других имен. При этом должен быть обеспечен контроль возможного совпадения имен и связь между именем и адресом IP. Другими словами, имя должно быть уникально, потому что адреса уникальны. Пространство имен, которое сопоставляет каждый адрес и уникальное имя, может быть организовано двумя путями: плоско и иерархически.

Плоское пространство имен

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

Иерархическое пространство имен

В иерархическом пространстве имен каждое имя составлено из нескольких частей. Первая часть может определять природу организации, вторая часть — имя организации, третья часть — департаменты в организации, и так далее. В этом случае полномочия и управление пространством имен может быть децентрализовано. Центральные полномочия могут назначаться согласно той части имени, которое определяет природу организации и имя организации. Полномочия, определяемые остальной частью имени, определяются самой организацией. Организация может добавить к имени суффикс или префикс, определяющие ресурсы ее хоста. Управлению организации не нужно беспокоиться, что префикс, выбранный для хоста, взят другой организацией, потому что даже если часть адреса одна и та же, полный адрес различается. Например, предположим, два университета и компания назвали один из их компьютеров kafedra. Первый университет дает имени центральные полномочия, такие как gut.edu, второй дает имя mtusy.edu, и компания дает имя loniis.ru. Когда каждая из этих организаций добавляет имя кафедра к имени, они уже дают в конечном результате три отличающихся имени: kafedra.gut.edu, kafedra.mtusy.edu и kafedra.loniis.ru.

Имена уникальны, и управление полномочиями проводится не по полному имени, а только по его части.

Пространство доменных имен

Иерархическое пространство доменных имен назначается. При этом назначении имя определяется структурой инвертированного дерева с корнем в вершине. Дерево может иметь 128 уровней: от уровня 0 (корень) до уровня 127. Принимая во внимание, что корень скрепляет целое дерево вместе, каждый уровень дерева определяет иерархический уровень.

Метка

Каждый узел дерева имеет метку. Она отображается строчкой из символов с максимальным числом 63. Метка корня – нулевая строчка (пустая строчка). DNS требует, чтобы "дети" узла (узлы, которые являются ветками от того же узла) имели различные метки, которые гарантируют уникальность доменного имени.

Доменное имя

Каждый узел дерева имеет доменное имя. Полное доменное имя — последовательность меток, отделенных точками (.). Доменные имена всегда читают от узла к корню.

Последняя метка — это метка-корень (нуль). Это означает, что полное доменное имя всегда оканчивается нулевой отметкой, которую означает последний символ – точка, потому нулевая строка ничего не обозначает.

Полностью определенное доменное имя

Если метка завершается нулевой строкой, это называется "полностью определенное доменное имя" (FQDN — Fully Qualified Domain Name). FQDNимя хоста, которое содержит полное имя хоста. Оно включает в себя все метки, от наиболее специфичной до наиболее общей, которые уникально определяют имя хоста. Например, доменное имя

kafedra.gut.edu.

Это FQDN компьютера, названного kafedra и установленного в Государственном университете телекоммуникаций. Заметим, что имя должно заканчиваться нулевым ярлыком, но поскольку он ничего не обозначает, метка заканчивается точкой (.).

Частично определенное имя домена

Если метка не заканчивается нулевой строкой, это называется "частично определенным доменными именем" (PQDN — Partially Qualified Domain Name). PQDN начинается от узла, но не достигает корня. Оно используется, если в компьютере будет отмечено, что имя принадлежит тому же самому сайту, что и клиент. Здесь компьютер может заменить отсутствующую часть так называемым суффиксом, который создает FQDN. Например, если пользователь сайта sut.edu. хочет иметь IP-адрес компьютера "kafedra", он может определить частичное имя

kafedra

DNS клиента добавляет суффикс sut.edu перед тем, как передать адрес к DNS-серверу.

DNS клиента обычно имеет список суффиксов. Символы могут определяться списком сервера университета. Нулевой суффикс ничего не определяет. Этот суффикс добавляется, когда имя пользователя полностью определено в виде FQDN.

Домен

Домен — это фрагмент дерева в пространстве доменных имен. Имя домена – это доменное имя узла на вершине поддерева.

Распределение имен

Информация, содержащаяся в пространстве доменных имен, может быть накоплена. Однако иметь только один компьютер, накапливающий такое громадное количество информации, — это крайне неэффективно и ненадежно. Это неэффективно, потому что реагирование на запросы со всего мира — тяжелая нагрузка на систему. Это ненадежно, потому что любая ошибка делает данные недоступными.

Иерархия серверов имен

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

Зона

То, за что сервер несет ответственность или где он имеет полномочия, называется зона. Если сервер назначен отвечать за домен и домен не разделен на поддомены, "домен" и "зона" относятся к одним и тем же понятиям. Сервер создает базу данных, называемую файлом зоны, и сохраняет всю информацию для всех узлов под этим доменом. Однако если сервер разделяет свои домены на поддомены и делегирует часть своих полномочий другому серверу, "домен" и "зона" относятся к различным понятиям.

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

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

Корневой сервер

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

Первичные и вторичные серверы

DNS определяет два типа серверов: первичные и вторичные. Первичный сервер — это сервер, накапливающий файл о зоне, на которую он имеет полномочия. Он несет ответственность за создание, эксплуатацию и изменения зонового файла. Зоновый файл накапливается на локальном диске.

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

DNS в Интернете

DNS – это протокол, который может быть использован в различных платформах. В Интернете пространство доменных имен (дерево) разделяется на три различных секции: родовой домен, домен страны и инверсный домен.

Родовой домен

Родовой домен определяет регистрацию хоста (generic domain) в соответствии с его родовой природой. Эти уровни связаны с типами организаций, как это, например, приведено для США в табл. 3.1 [5].

Каждый узел дерева — домен, который является частью базы пространства доменных имен.

В таблице первый уровень в секции родового домена позволяет семь возможных трехсимвольных уровней. Эти уровни соотнесены с типами организаций так, как перечислено в табл. 3.1 [5].

Метки родового домена
Метка Описание
com Коммерческие организации
edu Образовательные учреждения
gov Правительственные учреждения
int Международные организации
mil Военные группы
net Центры поддержки сетей
org Некоммерческие организации

Домены страны

Секция домены страны придерживается того же формата, что и родовые домены, но использует двухсимвольные сокращения страны (например, ru для России) вместо трехсимвольной организационной структуры первого уровня. Аббревиатуры второго уровня могут быть организационными или могут более детально определять национальную принадлежность. Россия ( ru ), например, использует аббревиатуры отдельных городов (например, spb.ru ). Адрес gut.spb.ru может быть расшифрован как Государственный университет телекоммуникаций, Санкт-Петербург, Россия.

Инверсный домен

Инверсный домен использует отражение адреса в имя. Это может понадобиться, например, когда сервер получил запрос от клиента на выполнение определенной задачи. Поскольку сервер имеет файл, который содержит список полномочных клиентов, сервер перечисляет только IP-адреса клиентов (извлекая их из полученного пакета). Чтобы определить, есть ли клиент в разрешенном списке, сервер может запросить DNS-сервер об отображении адреса в имя.

Этот тип запроса называется инверсным запросом, или запросом указателя. Для того чтобы обработать запрос указателя, инверсный домен добавляет к пространству доменных имен узел первого уровня, называемый arpa (по историческим причинам). Второй уровень также именует одиночный узел in-addr (для инверсного адреса). Остаток домена определяет IP-адреса.

По договоренности следует читать метки инверсного домена от основания к вершине. Например, такой IP-адрес, как 132.34.45.121, читается как 121.45.34.132.in-addr.arpa.

Сервер, который обрабатывает инверсный домен, — также иерархический. Это означает, что часть адреса, содержащая сетевой номер (netid), должна быть более высокого уровня (в данном примере это 132), чем часть адреса подсети (subnetid), в данном примере 45; а часть адреса подсети должна быть более высокого уровня, чем адрес хоста (hostid). Такая конфигурация делает вид домена инверсным, если сравнивать с родовым доменом и доменом страны.

Распознавание имен

Отображение имени в адрес или адреса в имя называется "распознавание имя-адрес".

Распознаватель (resolver)

Протоколы DNS разработаны как приложение сервер-клиент. Хост, который нуждается в отображении адреса в имя или имени в адрес, вызывает DNS клиента, который называется распознавателем. Распознаватель получает доступ к ближайшему серверу DNS с запросом на отображение. Если сервер имеет информацию, он выполняет запрос распознавателя; в противном случае он либо отсылает распознаватель к другим серверам, либо сам запрашивает другие сервера для того, чтобы обеспечить эту информацию.

После того как распознаватель получит это отображение, он анализирует отклик для того, чтобы посмотреть, является ли это реальным распознаванием или ошибкой. В конечном итоге результат доставляется процессу, который запросил его.

Отображение имен в адреса

Большинство времени распознаватель выдает имена серверу и запрашивает соответствующие адреса. В этом случае сервер проверяет родовой домен или домен страны для того, чтобы найти отображение.

Если имя домена от родовой секции, распознаватель получает доменное имя, такое как kafedra.gut.edu. Запрос посылается распознавателем к местному DNS-серверу для распознавания. Если местный сервер не распознает запроса, он либо отсылает распознаватель к другому серверу, либо запрашивает другой сервер напрямую.

Если имя домена из секции доменов стран, распознаватель получает доменное имя, такое как kafedra.gut.spb.ru. Процедура та же самая.

Отображение адресов в имена

Клиент может послать IP-адрес на сервер для того, чтобы отобразить доменное имя. Это называется PTR-запрос. Для подобного запроса DNS использует инверсный домен. Однако IP-адрес запроса должен быть реверсирован, и должны быть прикреплены две метки, in-addr или arpa, чтобы создать доступный домен с помощью инверсной доменной секции. Например, если распознаватель получил IP-адрес 132.34.45.121, распознаватель вначале инвертирует адрес, а затем добавляет две метки перед посылкой. Посылаемое имя домена — 121.45.34.132.in-addr.arpa. Оно получается с помощью локальной DNS и распознается.

Рекурсивное распознавание

Клиент (распознаватель) может запросить рекурсивный ответ из сервера имени. Если сервер может это сделать, он проверяет свою базу данных и отвечает. Если сервер не уполномочен, он посылает запрос другому серверу (обычно к вышестоящему) и ожидает отклика. Если вышестоящий сервер уполномочен, он отвечает; в противном случае он посылает запрос еще одному серверу. Когда запрос окончательно распознан, ответ перемещается назад, пока окончательно не достигнет запрашиваемого клиента.

Итерационное распознавание

Если клиент не запрашивает рекурсивный ответ, отображение может быть сделано итерационно. Если сервер имеет разрешенное имя, он посылает ответ. Если нет, он возвращает клиенту IP-адрес сервера, который, как он предполагает, может ответить на запрос. Клиент повторяет запрос второму серверу. Если вновь адресованный сервер может распознать запрос, он отвечает IP-адресом; в противном случае он возвращает IP-адрес нового сервера клиенту. Теперь клиент должен повторить запрос третьему серверу. Этот процесс называется итерационным, потому что клиент повторяет один и тот же запрос к множеству серверов.

Кэширование

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

Кэширование ускоряет распознавание, но может и создать проблемы. Если сервер кэширует отображение за долгое время, он может послать клиенту устаревшее отображение. Чтобы противостоять этому, используются два метода.

При первом из них полномочный сервер всегда добавляет кусок информации для отображения так называемого "времени жизни" (TTL – time to live). Оно определяет время в секундах, в течение которого принимающий сервер может кэшировать информацию. После истечения этого времени отображение недействительно, и любой запрос может быть опять послан к полномочному серверу.

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

DNS-сообщения

DNS имеет два типа сообщения: запрос и отклик. Оба типа имеют один и тот же формат. Сообщение запроса содержит заголовок, запись запроса, ответную запись, запись полномочий и дополнительные записи (рис. 3.1).

(рис 3.1) Сообщение запроса и записи

Заголовок

Оба сообщения, запрос и отклик, имеют один и тот же формат заголовка с несколькими полями с установленными нулями для сообщений отклика. Заголовок 12 байт и его формат показан в (табл. 3.2).

Формат заголовка
Идентификатор Флаг
Номер записи запроса Номер записи ответа (Все нули в сообщении отклика)
Номер записи полномочий (Все нули в сообщении отклика) Номер записи ответа (Все нули в сообщении отклика)

Поля заголовков – следующие:

  • Идентификация. Это 16-битовое поле применяется клиентом для того, чтобы сравнить отклик с запросом. Клиент использует различный номер идентификации каждый раз, когда он посылает запрос. Сервер дублирует этот номер в соответствующем отклике.
  • Флаги. Это 16-битовое поле, содержащее субполя, показано на (рис. 3.2).
  • (рис 3.2) Поле флагов

    Короткое описание субполей каждого флага дано ниже.

  • QR (query/response) — запрос/ответ. Это однобитовое субполе, которое определяет тип сообщения. Если оно равно 0, сообщение является запросом. Если оно равно 1, то сообщение — ответ.
  • OpCode (код операции). Это 4-битовое субполе, которое определяет тип запроса или ответа (0 — тип стандартный, 1 — тип инверсный и 2 — сервер запрашивает состояние).
  • AA (authoritative answer — авторитетный ответ). Это однобитовое поле. Когда оно установлено (значение 1), это означает, что имя сервера является полномочным сервером. Используется только в ответном сообщении.
  • TC (truncated — усеченное). Это однобитовое поле. Когда оно установлено (значение 1), это означает, что ответ был более чем 512 байт и усечен до 512. Применяется, когда DNS пользуется услугой UDP.
  • RD (recursiondesired – желательна рекурсия). Это однобитовое субполе. Когда оно установлено (значение 1), это означает, что клиенту желателен рекурсивный ответ. Он устанавливается в сообщении запроса и повторяется в ответном сообщении.
  • RA (recursion available — рекурсия возможна). Однобитовое субполе. Когда оно установлено в ответе, это означает, что возможен рекурсивный ответ. Устанавливается только в ответном сообщении.
  • Reserved (резервные). Это трехбитовое субполе с установленными нулями.
  • rCode (r-код). Это 4-битовое поле, которое показывает состояние ошибки в ответе. Конечно, только полномочный сервер может сделать такую оценку. Таблица 3.2. показывает возможные значения этого поля.
    Значения rCode
    Значение Комментарий
    0 Нет ошибки
    1 Ошибка формат
    2 Проблема имени сервера
    3 Проблема ссылки на домен
    4 Тип запроса не поддерживается
    5 Административный запрет
    6-15 Резервные
  • Поле записи запроса. Это 16-битовое поле, содержащее номер запроса в секции сообщения запроса.
  • Поле записи ответа. Это 16-битовое поле, содержащее номер записи ответа в секции сообщения отклика. Его значение равно нулю в секции запроса.
  • Поле записи полномочий. Это 16-битовое поле, содержащее номер записи полномочий в секции полномочий. Его значение равно нулю в секции запроса.
  • Поле дополнительной записи. Это 16-битовое поле, содержащее номер дополнительной записи в дополнительной секции сообщения отклика. Его значение равно нулю в секции запроса.
  • Имеются следующие типы секций.

    Секция запроса

    Это секция, содержащая одну или более записей. Она содержит оба сообщения: и запрос, и ответ. Мы обсудим вопрос записи в следующем разделе.

    Секция ответа

    Это секция, содержащая одну или более записей. Она представляет только сообщения ответа. Секция включает ответ от сервера к клиенту (сообщение распознавателя).

    Секция полномочий

    Это секция, содержащая одно или более сообщений источника. Она представлена только в ответном сообщении. Секция дает информацию (имя домена) об одном или более полномочном сервере для запроса.

    Секция дополнительной информации

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

    Типы записей

    Как мы видели в предыдущих разделах, в DNS используются два типа записей. Запись запроса происходит в секции запроса, сообщения запроса или отклика. Средства записи применяют в информации ответа, полномочий и дополнительной секции сообщения ответа.

    Запись запроса

    Запись запроса используется клиентом, чтобы иметь информацию от сервера. Она содержит доменное имя. Рисунок 3.3 показывает формат записи запроса. Список, приведенный ниже, дает описание полей записи запроса.

  • (рис 3.4) Формат записи запроса(рис 3.3) Формат имени запроса
  • Тип запроса. Это 16-битовое поле, определяющее тип запроса. Табл. 3.4 показывает обычно используемые типы. Последние два могут быть применены только в запросе.
    Типы
    Тип Мнемоника Имя Описание
    1 A Address Адрес. 32-битовый Ipv6-адрес. Он используется для доменного имени адреса IPv6
    2 NS Name server Оно идентифицирует полномочный сервер зоны
    5 CNAME Canonical name Каноническое имя. Оно определяет псевдоним для официального имени хоста
    6 SOA Start of authority Старт полномочиям. Он отмечает начало зоны. Это обычно первая запись в файле зоны.
    11 WKS Well-know services Хорошо известный сервис. Он определяет сетевой сервис, который обеспечивается хостом
    12 PTR Pointer Указатель. Он используется для преобразования адреса в доменное имя
    13 HINFO Host information Информация хоста. Он дает определение аппаратуре и операционной системе, используемой хостом
    15 MX Mail exchange Обмен сообщениями. Он перенаправляет информацию к почтовому серверу
    28 AAA Address An IPv6 address Адрес IPv6
    252 AXFR Запрос на передачу по всей зоне
    255 ANY Запрос на все записи
  • Класс запроса. Это 16-битовое поле, которое определяет специальный протокол, используемый DNS. Табл. 3.5 показывает текущие значения. В этой таблице нас интересует только класс 1 (Интернет).
    Классы
    Класс Мнемоника Описание
    1 IN Интернет
    2 Зарезервировано
    3 Зарезервировано
    4 Зарезервировано
  • Запись ресурса

    Каждое доменное имя (каждый узел дерева) связан с записью, называемой записью ресурса. Сервер базы данных содержит записи ресурса. Записи ресурса — это также то, что возвращается сервером клиенту. Рис. 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 определяет двухбайтовый указатель сдвига, который указывает на предыдущее вхождение имени в домен или часть его. Формат поля показан на Рис. 3.6

    (рис 3.6) Формат указателя сдвига

    Первые два старших разряда — это две единицы, необходимые для того, чтобы отличить точку-указатель сдвига от информации "длина поля".) Другие 14 бит представляют число, которое указывает на соответствующий байт номера сообщения. Этот байт отсчитывается от начального сообщения с первым байтом, который считается нулевым. Например, если указатель сдвига указывает на байт 12 (тринадцатый байт) сообщения, значение должно быть 1100000000001100. Здесь 2 наибольших левых разряда определяют поле как указатель ответвления, а другие биты определяют десятичное число 12. Мы покажем, как используются указатели сдвига на следующих примерах.

    Примеры

    В этом разделе мы рассмотрим некоторые примеры DNS-запросов и ответов.

    Пример 1

    Распознаватель посылает запрос к локальному серверу для нахождения IP-адреса для хоста kafedra.gut.spb.ru.

    Сообщение запроса. Рис. 3.7 показывает сообщение запроса, посылаемое распознавателем. Первые два байта показывают идентификатор в шестнадцатеричном исчислении ( 1444 ). Он используется как последовательный номер и относится к отклику на запрос. Поскольку распознаватель может послать только один запрос одному и тому же серверу, идентификатор помогает сортировать ответы, которые прибывают в любом порядке. Следующие байты содержат флаг с шестнадцатеричным значением 0100. В двоичной системе это 0000 0001 0000 0000, но более понятно флаг показан ниже.

    (рис 3.7) Пример сообщения запроса

    Бит QR определяет сообщение как запрос. OpCode 0000 означает стандартный запрос. Рекурсия желательна, бит RD установлен (см. рис. 3.3, описания полей флага).

    Сообщение содержит только одну запись запроса. Имя домена — kafedra.gut.spb.ru. Следующие два байта определяют тип запроса как IP-адрес; последние два байта определяют класс Интернета.

    Ответное сообщение. Рис. 3.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-клиента. Мы обсудим сообщение запроса и ответа отдельно.

    Сообщение запроса. На табл. 3.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
    0 0001 0 0 1 0 000 0000
     
    0x1200 0x0900
    1 0
    0 0
    1 '9' 1 '7'
    1 '2' 3 '1'
    '5' '3' 7 'i'
    'n' '-' 'a' 'd'
    'd' 'r' '4' 'a'
    'r' 'p' 'a' 0
    12 1

    Инверсный ответ. Табл. 3.7 показывает ответ. Сообщение содержит одну запись запроса и одну запись ответа. Запись запроса повторяет сообщение запроса. Запись ответа имеет указатель 0xC00C, который ссылается на запись запроса вместо повторения имени домена. Следующее поле определяет тип домена (PTR). Следующее поле определяет класс Интернет, а после этого определяется время жизни (TTL) – 24000 c. Следующее поле – это длина данных источника (10). Последнее поле – это имя домена: 7kafedra3gut3spb2ru0.

    Пример инверсного ответа
    QR OpCode AA TC RD RA Reserved RCode
    0 0001 0 0 1 0 000 0000
     
    0x1200 0x8D80
    1 0
    0 0
    1 9 1 7
    1 2 3 1
    5 3 7 i
    n - a d
    d r 4 a
    r p a 0
    12 1
    C00C 12
    1  
    24000 10
    7 k a f
    e d r a
    3 g u t
    3 s p b
    2 r u 0

    DDNS

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

    DNS-мастер-файл должен быть скорректирован динамически. Поэтому была изобретена динамическая система доменных имен (DDNS – Dynamic Domain Name System). В DDNS, когда связь между именем и адресом определена, информация посылается обычно с помощью действий по протоколу динамической реконфигурации хостов (DHCP — Dynamic Host Configuration Protocol) к первичному DNS-серверу. Первичный сервер модернизирует зону. Вторичные серверы уведомляются либо активно, либо пассивно. При активном уведомлении первичный сервер посылает сообщение вторичным серверам об изменениях в зоне, в то время как при пассивном уведомлении вторичные серверы периодически проверяются на любые изменения. В любом случае, после осуществления уведомления об изменении вторичные серверы запрашивают информацию об изменениях во всей зоне (зоновая передача), чтобы обеспечить безопасность. Для предотвращения неполномочных изменений DNS-записей DDNS может использовать полномочный механизм.

    Инкапсуляция

    DNS может использовать UDP или TCP. В обоих случаях сервером задействуется закрепленный порт – 53. UDP применяется, когда размер сообщения ответа меньше чем 512 байт, потому что большинство пакетов UDP имеют ограничение на размер пакета 512 байт. Если размер сообщения ответа больше чем 512 байт, должно использоваться соединение TCP. В этом случае может возникнуть один из двух сценариев:

  • Если распознаватель заранее подтвердил, что размер ответного сообщения больше чем 512 байт, оно должно использовать TCP-соединение. Например, если передается вторичное имя сервера (активизированного как клиент) и нужна зоновая передача от первичного сервера, он должен применить TCP-соединение, потому что размер передаваемой информации обычно превышает 512 байт.
  • Если распознаватель не знает размера ответного сообщения, он может задействовать UDP-порт. Однако если размер ответного сообщения больше чем 512 байт, сервер усекает сообщение и возвращает TCP-бит. Распознаватель теперь открывает TCP-соединение, повторяет запрос и получает полный ответ от сервера.
  • Краткие итоги

  • Система доменных имен (DNS – Domain Name System) – это приложение клиент-сервер, которое определяет каждый хост в Интернете с уникальным именем, дружественным пользователю.
  • DNS организует пространство имен в иерархическую структуру для децентрализации обязательств, содержащихся в наименовании.
  • DNS может быть изображено как инвертированная структура иерархического дерева с одним узловым корнем на вершине и максимально 128 уровнями.
  • Каждый узел в дереве имеет доменное имя.
  • Домен определяется как любое поддерево в пространстве доменных имен.
  • Информация пространства имен распределяется среди DNS-серверов. Каждый сервер имеет юрисдикцию в своей зоне.
  • Зона корневого сервера — это целое DNS-дерево.
  • Первичный сервер создает, эксплуатирует и корректирует информацию о своей зоне.
  • Вторичный сервер выдает свою информацию о первичном сервере.
  • Пространство доменных имен разделяется внутри дерева на секции: родовые имена, домены страны и инверсные домены.
  • Имеется семь родовых имен, каждое определяет тип организации.
  • Каждое доменное имя определяет страну.
  • Инверсный домен находит доменное имя для выдачи IP-адреса. Это называется "распознавание адрес–имя".
  • Имена серверов, компьютеров, которые работают с программами DNS-серверов, организованы иерархически.
  • DNS-клиент, называемый распознаватель, сопоставляет имени адрес или адресу имя.
  • В рекурсивном распознавании клиент посылает свой запрос к серверу, который в зависимости от обстоятельств возвращает ответ.
  • При итерационном распознавании клиент может посылать свой запрос ко многим серверам, прежде чем получить ответ.
  • Кэширование – это метод, посредством которого ответ на запрос накапливается в памяти (ограниченное время) для простого доступа будущих запросов.
  • Полностью квалифицированное доменное имя (FQDN) – это доменное имя, которое содержит метки, начинающиеся с хоста и проходящие через каждый уровень к корневому узлу.
  • Частично квалифицированное доменное имя (PQDN) – это имя домена, которое не включает все уровни между хостом и корневым узлом.
  • Имеется два типа DNS-сообщений: запросы и ответы.
  • Имеется два типа записи запроса и записи ресурсов: запросы и ответы.
  • DNS использует указатель сдвига для дублирования информации доменных имен в сообщениях.
  • Динамическая DNS (DDNS) автоматически корректируется DNS-мастер-файлом.
  • DNS использует обслуживание UDP для сообщений, меньших чем 512, в противном случае применяется TCP.
  • Задачи и упражнения

  • Определите, какие из следующих адресов полные, а какие частные:
  • ххх ;
  • ххх.yyy.;
  • ххх.yyy.tv ;
  • zzz.ххх.yyy.
  • Определите, какие из следующих адресов полные, а какие частные:
  • ru.;
  • com.;
  • ххх.yyy.tv ;
  • zzz.ххх.yyy.
  • Найдите значение поля флага (в шестнадцатеричном виде) для сообщений запроса, в случае запроса адреса и нарушения рекурсивного ответа.
  • Найдите значение поля флага (в шестнадцатеричном виде) для неполномочного сообщения, содержащего инверсный ответ. Распознаватель запросил рекурсивный ответ, но рекурсивный ответ невозможен.
  • Проведите анализ поля флагов 0x5B50.
  • Проведите анализ поля флагов 0x5080. Такой адрес допустим или нет?
  • Является ли фиксированным адрес записи запроса?
  • Является ли фиксированным адрес записи ресурса?
  • Каков размер записи запроса, содержащего доменное имя econym.demon.co.uk?
  • Каков размер записи запроса, содержащего IP-адрес?
  • Каков размер записи ресурса, содержащего доменное имя econym.demon.co.uk?
  • Каков размер записи ресурса, содержащего IP-адрес?
  • Каков размер сообщения запроса, запрашивающего IP-адрес для loniis.spb.edu?
  • Каков размер сообщения запроса, запрашивающего доменное имя для 115.42.25.13?
  • Каков размер сообщения ответа, отвечающего на сообщение по п. 13?
  • Каков размер сообщения ответа, отвечающего на сообщение по п. 14?
  • Повторите упражнение для примера 1, использующее ответное сообщение с одной записью ответа и одной полномочной записью, которая определяет сервер kafedra.gut.spb.ru как полномочный сервер.
  • Повторите упражнение 17, но с дополнительной записью, которая определяет адрес полномочного сервера 123.15.8.0.
  • DNS-клиент ищет IP-адрес для ххх.yyy.tv. Покажите сообщение запроса со значением всех полей.
  • Покажите ответное сообщение на сообщение по упражнению 19, предполагая, что IP-адрес равен 183.85.34.12.
  • DNS-клиент ищет IP-адрес для ххх.yyy.tv и aaa.bbb.edu. Покажите сообщение запроса.
  • Покажите ответное сообщение на сообщение по упражнению 21, предполагая, что IP-адрес равен 15.12.34.18 и 143.56.32.54.
  • Покажите ответное сообщение на сообщение по упражнению 22, предполагая, что первый DNS-сервер может преобразовать первый запрос и не может сделать этого для второго запроса.
  • DNS-клиент ищет имя компьютера с IP-адресом 233.2.15.8. Покажите сообщения запроса.
  • Покажите ответное сообщение, которое посылает сервер на запрос по упражнению 24.
  • Дополнительный материал для прохождения тестирования к лекции, Вы можете скачать здесь.

    Вернуться к учебному плану