Прикладной уровень (Application), или уровень приложений, обеспечивает непосредственное взаимодействие приложений пользователя с сетью. Например, сюда относятся: программные средства передачи файлов, доступа к базам данных, средства электронной почты, службы регистрации на сервере. Этот уровень управляет остальными шестью уровнями.
К числу наиболее распространенных протоколов верхних уровней относятся:
НТТР (Hyper Text Transfer Protocol) - основной протокол передачи гипертекстовых страниц;
FТР (File Transfer Protocol) - протокол передачи файлов;
SМТР (Simple Mail Transfer Protocol) - протокол глобальной сети Интернет для обмена электронной почтой;
SNMP (Simple Network Management Protocol) - протокол для мониторинга сети, контроля за работой сетевых компонентов и управления ими;
Telnet - протокол глобальной сети Интернет для регистрации на удаленных серверах и обработки данных на них;
SMB (Server Message Blocks) - протокол доступа к файлам и принтерам в операционных системах компании Microsoft;
Х.400 - протокол для международного обмена электронной почтой.
Хотя программы могут обращаться к сетевым ресурсам по их сетевым адресам, пользователям их запоминать тяжело. Кроме того, отправка электронной почты на адрес Tanya@128.111.24.41 будет означать, что в случае переезда сервера провайдера или организации на новое место с новым IP-адресом придется изменить ее адрес e-mail. Для отделения имен машин от их адресов было решено использовать текстовые ASCII-имена. Поэтому танин адрес более привычно выглядит в таком виде: Tanya@art.ucsb.edu. Тем не менее, сеть сама по себе понимает только численные адреса, поэтому нужен механизм преобразования ASCII -строк в сетевые адреса.
Когда-то давно в сети ARPANET соответствие между текстовыми и двоичными адресами просто записывалось в файле hosts.txt, в котором перечислялись все хосты и их IP-адреса. Каждую ночь все хосты получали этот файл с сайта, на котором он хранился. В сети, состоящей из нескольких сотен больших машин, работающих под управлением системы с разделением времени, такой подход работал вполне приемлемо.
Но когда к сети подключились тысячи рабочих станций, всем стало ясно, что этот способ не сможет работать вечно. Во-первых, размер файла рано или поздно стал бы слишком большим. Однако, что еще важнее, если управление именами хостов не осуществлять централизованно, неизбежно возникновение конфликтов имен. В то же время, представить себе централизованное управление именами всех хостов гигантской международной сети довольно сложно. Для разрешения всех этих проблем и была разработана служба имен доменов (DNS, Domain Name System).
Суть системы DNS заключается в иерархической схеме имен, основанной на доменах, и распределенной базе данных, реализующей эту схему имен. В первую очередь эта система используется для преобразования имен хостов и пунктов назначения электронной почты в IP-адреса, но также может использоваться и в других целях.
DNS (англ. Domain Name System — система доменных имён) — компьютерная распределённая система для получения информации о доменах. Чаще всего используется для получения IP-адреса по имени хоста (компьютера или устройства), получения информации о маршрутизации почты, обслуживающих узлах для протоколов в домене (SRV-запись).
DNS была разработана Полом Мокапетрисом в 1983 году; оригинальное описание механизмов работы содержится в RFC 882 и RFC 883. В 1987 публикация RFC 1034 и RFC 1035 изменила спецификацию DNS и отменила RFC 882 и RFC 883 как устаревшие.
Начиная с 2010 года, в систему DNS внедряются средства проверки целостности передаваемых данных, называемые DNS Security Extensions (DNSSEC). Передаваемые данные не шифруются, но их достоверность проверяется криптографическими способами.
Ключевыми понятиями DNS являются:
Доме́н (англ. domain — область) — узел в дереве имён, вместе со всеми подчинёнными ему узлами (если таковые имеются), то есть именованная ветвь или поддерево в дереве имен. Структура доменного имени отражает порядок следования узлов в иерархии; доменное имя читается слева направо от младших доменов к доменам высшего уровня (в порядке повышения значимости), корневым доменом всей системы является точка ('.'), ниже идут домены первого уровня (географические или тематические), затем — домены второго уровня, третьего и т. д. (например, для адреса ru.wikipedia.org домен первого уровня — org, второго wikipedia, третьего ru). На практике точку в конце имени часто опускают, но она бывает важна в случаях разделения между относительными доменами и FQDN (англ. Fully Qualifed Domain Name, полностью определённое имя домена).
Поддомен(англ. subdomain) — подчиненный домен (например, wikipedia.org — поддомен домена org, а ru.wikipedia.org — домена wikipedia.org). Теоретически такое деление может достигать глубины 127 уровней, а каждая метка может содержать до 63 символов, пока общая длина вместе с точками не достигнет 254 символов. Но на практике регистраторы доменных имён используют более строгие ограничения. Например, если у вас есть домен вида mydomain.ru, вы можете создать для него различные поддомены вида mysite1.mydomain.ru, mysite2.mydomain.ru и т. д.
Ресурсная запись — единица хранения и передачи информации в DNS. Каждая ресурсная запись имеет имя (то есть привязана к определенному Доменному имени, узлу в дереве имен), тип и поле данных, формат и содержание которого зависит от типа.
Зона — часть дерева доменных имен (включая ресурсные записи), размещаемая как единое целое на некотором сервере доменных имен (DNS-сервере), а чаще — одновременно на нескольких серверах. Целью выделения части дерева в отдельную зону является передача ответственности за соответствующий Домен другому лицу или организации, так называемое Делегирование. Как связная часть дерева, зона внутри тоже представляет собой дерево. Если рассматривать пространство имен DNS как структуру из зон, а не отдельных узлов/имен, тоже получается дерево; оправданно говорить о родительских и дочерних зонах, о старших и подчиненных. На практике, большинство зон 0-го и 1-го уровня ('.', ru, com, …) состоят из единственного узла, которому непосредственно подчиняются дочерние зоны. В больших корпоративных доменах (2-го и более уровней) иногда встречается образование дополнительных подчиненных уровней без выделения их в дочерние зоны.
Делегирование — операция передачи ответственности за часть дерева доменных имен другому лицу или организации. За счет делегирования в DNS обеспечивается распределенность администрирования и хранения. Технически делегирование выражается в выделении этой части дерева в отдельную зону, и размещении этой зоны на DNS-сервере, управляемом этим лицом или организацией. При этом в родительскую зону включаются «склеивающие» ресурсные записи (NS и А), содержащие указатели на DNS-сервера дочерней зоны, а вся остальная информация, относящаяся к дочерней зоне, хранится уже на DNS-серверах дочерней зоны.
DNS-сервер — специализированное ПО для обслуживания DNS, а также компьютер, на котором это ПО выполняется. DNS-сервер может быть ответственным за некоторые зоны и/или может перенаправлять запросы вышестоящим серверам.
DNS-клиент — специализированная библиотека (или программа) для работы с DNS. В ряде случаев DNS-сервер выступает в роли DNS-клиента.
Авторитетность (англ. authoritative) — признак размещения зоны на DNS-сервере. Ответы DNS-сервера могут быть двух типов: авторитетные (когда сервер заявляет, что сам отвечает за зону) и неавторитетные (англ. Non-authoritative), когда сервер обрабатывает запрос, и возвращает ответ других серверов. В некоторых случаях вместо передачи запроса дальше DNS-сервер может вернуть уже известное ему (по запросам ранее) значение (режим кеширования).
DNS-запрос(англ. DNS query) — запрос от клиента (или сервера) серверу. Запрос может быть рекурсивным или нерекурсивным.
Термином Рекурсия в DNS обозначают алгоритм поведения DNS-сервера, при котором сервер выполняет от имени клиента полный поиск нужной информации во всей системе DNS, при необходимости обращаясь к другим DNS-серверам. DNS-запрос может быть рекурсивным — требующим полного поиска, — и нерекурсивным — не требующим полного поиска.
Аналогично, DNS-сервер может быть рекурсивным (умеющим выполнять полный поиск) и нерекурсивным (не умеющим выполнять полный поиск). Некоторые программы DNS-серверов, например, BIND, можно сконфигурировать так, чтобы запросы одних клиентов выполнялись рекурсивно, а запросы других — нерекурсивно.
В общих чертах система DNS применяется следующим образом. Для преобразования имени в IP-адрес прикладная программа обращается к библиотечной процедуре, называющейся распознавателем, передавая ей имя в качестве параметра. Распознаватель посылает UDP-пакет локальному DNS-серверу, который ищет имя в базе данных и возвращает соответствующий IР-адрес распознавателю, который, в свою очередь, передает этот адрес вызвавшей его прикладной программе. Имея IP-адрес, программа может установить TCP-соединение с адресатом или послать ему UDP-пакеты.
Управление большим и постоянно изменяющимся набором имен представляет собой нетривиальную задачу. Система DNS работает аналогично почтовой системе.
Интернет концептуально разделен на 200 доменов верхнего уровня. Доменами называют в Интернете множество хостов, объединенное в логическую группу. Каждый домен верхнего уровня подразделяется на поддомены, которые, в свою очередь, также могут состоять из других доменов, и т. д. Все эти домены можно рассматривать в виде дерева. Листьями дерева являются домены, не разделяющиеся на поддомены. Такой конечный домен может состоять из одного хоста или может представлять компанию и содержать в себе тысячи хостов.
Домены верхнего уровня разделяются на две группы: родовые домены и домены государств. К родовым относятся домены com (commercial — коммерческие организации), edu (educational — учебные заведения), gov (government — федеральное правительство), int (international — определенные международные организации), mil (military — вооруженные силы США), net (network — сетевые операторы связи) и org (некоммерческие организации) и др. За каждым государством в соответствии с международным стандартом ISO 3166 закреплен один домен государства.
В принципе, получить домен второго уровня типа name-of-company.com несложно. Надо лишь проверить, не занято ли желаемое имя домена кем-то другим и не является ли оно чьей-нибудь торговой маркой. Для этого надо зайти на сайт регистрационного бюро верхнего уровня (в данном случае com). Если все в порядке, заказчик регистрируется и за небольшую ежегодную абонентскую плату получает домен второго уровня. На сегодняшний день в качестве имен поддоменов com уже используются практически все общеупотребительные английские слова.
Имя каждого домена, подобно полному пути к файлу в файловой системе, состоит из пути от этого домена до (безымянной) вершины дерева. Компоненты пути разделяются точками.
Имена доменов нечувствительны к изменению регистра символов. Так, например, edu и EDU означают одно и то же. Длина имен компонентов может достигать 63 символов, а длина полного пути не должна превосходить 255 символов.
Каждый домен управляет доступом к доменам, расположенным под ним. Для создания нового домена требуется разрешение домена, в который он будет включен. Например, если в Йеле образовалась группа VLSI, которая хочет зарегистрировать домен vlsi.cs.yale.edu, ей нужно разрешение от того, кто управляет доменом cs.yale.edu. Аналогично наш университет просил менеджера домена ru присвоить их домену имя chsu.ru. Таким образом удается избежать конфликта имен, а каждый домен отслеживает состояние всех своих поддоменов. После того как домен создан и зарегистрирован, в нем могут создаваться поддомены, например rasp.chsu.ru, для чего уже не требуется разрешения вышестоящих доменов.
Структура доменов отражает не физическое строение сети, а логическое разделение между организациями и их внутренними подразделениями.
Записи ресурсов
У каждого домена, независимо от того, является ли он одиноким хостом или доменом верхнего уровня, может быть набор ассоциированных с ним записей ресурсов. Для одинокого хоста запись ресурсов чаще всего представляет собой просто его IP-адрес, но существует также много других записей ресурсов. Когда распознаватель передает имя домена DNS-серверу, то, что он получает обратно, представляет собой записи ресурсов, ассоциированные с его именем. Таким образом, истинное назначение системы DNS заключается в преобразовании доменных имен в записи ресурсов.
Запись ресурса состоит из пяти частей. Хотя для эффективности они часто перекодируются в двоичную форму, в большинстве описаний записи представляются в виде ASCII-текста, по одной строке на запись ресурса. Мы будем использовать следующий формат:
Domain_name Time_to_live Class Type Value
Поле Domain_name (имя домена) обозначает домен, к которому относится текущая запись. Обычно для каждого домена существует несколько записей ресурсов, и каждая копия базы данных хранит информацию о нескольких доменах. Поле имени домена является первичным ключом поиска, используемым для выполнения запросов. Порядок записей в базе данных значения не имеет. В ответ на запрос о домене возвращаются все удовлетворяющие запросу записи требуемого класса.
Поле Time_to_live (время жизни) указывает, насколько стабильно состояние записи. Редко меняющимся данным присваивается высокое значение этого поля, например, 86 400 (число секунд в сутках). Непостоянная информация помечается небольшим значением, например, 60 (1 минута).
Третьим полем каждой записи является поле Class (класс). Для информации Интернета значение этого поля всегда равно IN. Для прочей информации применяются другие коды, однако на практике они встречаются редко.
Поле Туре (тип) означает тип записи. Наиболее важные типы записей перечислены в таблице:
Основные типы записей ресурсов DNS для IРv4
Тип
Смысл
Значение
SOA
Начальная запись зоны
Параметры для этой зоны
А
1Р-адрес хоста
32-разрядное целое число
МХ
Обмен почтой
Приоритет, с которым домен желает принимать электронную почту
NS
Сервер имен
Имя сервера для этого домена
CNAME
Каноническое имя
Имя домена
PTR
Указатель
Псевдоним IР-адреса
HINFO
Описание хоста
Описание центрального процессора и ОС в виде ASCII-текста
ТХТ
Текст
Не интерпретируемый ASCII-текст
Запись SOA (Start Of Authority — начальная точка полномочий) сообщает имя первичного источника информации о зоне сервера имен, адрес электронной почты его администратора, уникальный порядковый номер, различные флаги и тайм-ауты.
Самой важной является запись А (Address — адрес). Она содержит 32-разрядный IP-адрес хоста. Следующей по важности является запись МХ. В ней указывается имя хоста, готового принимать почту для указанного домена.
Записи NS содержат информацию о серверах имен. Например, в каждой базе данных DNS содержится NS-запись для каждого домена верхнего уровня, что позволяет пересылать электронную почту на удаленные участки дерева имен.
Записи CNAME позволяют создавать псевдонимы, т.е. присваивать доменам несколько имен.
Запись HINFO позволяет определять тип машины и операционной системы, которой соответствует домен.
TXT-записи позволяют доменам идентифицировать себя произвольным образом.
Записи HINFO и TXT не являются обязательными.
Поле Value (значение) – это число, имя домена или строка, в зависимости от значения Type.