
В рассматриваемом нами курсе мы изучили протоколы TCP и UDP, предоставляющие
транспортные и сеансовые услуги прикладным протоколам стека TCP/IP, после чего перешли к
изучению собственно прикладных протоколов. Протокол DHCP нами уже изучен, на очереди
рассмотрение следующего крайне важного прикладного служебного протокола стека TCP/IP –
протокола DNS.
Начнем с того, что еще раз вспомним, каким образом пользователи с помощью
клиентского программного обеспечения обращаются к серверам за необходимой информацией.
Как Вам уже известно, адресом серверного программного обеспечения в сети является
совокупность адреса узла в сети (IP адреса) и номера порта, используемого данным серверным
программным обеспечением. Как нам известно, чаще всего пользователю необходимо заранее
знать IP адрес сервера для того, чтобы установить с ним соединение, а вот запоминать номера
портов, занимаемых приложениями на сервере обычно нет необходимости – вместо этого
используется концепция хорошо известных портов. Итак, для того, чтобы обмениваться данными
с сервером, пользователю необходимо некоторое клиентское программное обеспечение,
реализующее необходимый прикладной протокол и знание IP адреса сервера в сети. Ясно, что
для пользователя неудобно запоминать числовые адреса, например IP адреса. Вспомним, в
самом начале обучения на специальности мы проводили классификацию различных типов
адресов, применяемых в сетях и говорили о том, какие требования предъявляются к адресам.
Отметим, что IP адреса структурированы и достаточно компактны, однако совершенно не удобны
для запоминания пользователями – для этого удобнее применить некие символьные имена. Ясно,
что для того, чтобы обеспечить пользователям удобство пользования сетевыми ресурсами нет
необходимости отказывать от протокола IP в пользу некоторого другого протокола, адреса,
введенные в рамках которого будут удобны для пользователя, вместо этого необходимо
дополнить существующую схему сетевого взаимодействия таким образом, чтобы:
•
Пользователи должны были запоминать удобные для использования символьные адреса
(имена) узлов сети
•
Эти имена простым, желательно, максимально прозрачным для пользователя образом
преобразовывались в IP адреса, после чего клиентское программное обеспечение
осуществляло прикладное взаимодействие с узлом, IP адрес которого получен в
результате такого преобразования.
Таким образом, для пользователя будет не сложно запоминать адреса узлов для
последующего обращения к прикладным службам этих узлов: пользователи должны будут
запомнить лишь удобное ИМЯ узла, на котором расположено необходимо серверное
программное обеспечение, это имя будет преобразовано в IP адрес искомого узла, а номер порта
пользователю так же не придется запоминать благодаря концепции хорошо известных портов.
Рассмотрим простейший способ реализации данного подхода, применявшийся в сети –
прообразе Интернет. На одном из узлов сети формировался специальный текстовый файл Hosts,
в котором с помощью определенного формата описывалась взаимное соответствие имен узлов
сети и IP адресов этих узлов. Такой файл поддерживался и обновлялся централизовано в сети,
для внесения в него изменений, связанных с добавлением новых узлов, переименованием или
удалением существующих узлов необходимо было связаться с лицом, ответственным за
поддержку этого файла и сообщить о тех изменениях, которые необходимо внести. Такой файл
копировался на ВСЕ узлы составной сети, после чего каждый узел сети имел локальную копию
ВСЕЙ базы данных соответствий IP адресов и имен сети – при необходимости разрешить имя в IP
адрес программное обеспечение узла должно было проанализировать собственную копию файла
Hosts, обнаружить в этом файле IP соответствующий имени искомого узла и после этого
осуществлять взаимодействие с целевым узлом так, как это происходило бы в том случае, если
бы пользователь указал IP адрес, а не имя узла, с которым необходимо осуществить
взаимодействие.
Отметим, что отголоски данного подхода можно найти и в современных операционных
системах, например, в Windows: в папке %systemroot%\system32\drivers\etc находится файл Hosts,
в том случае, если в этом файле будут вручную указаны соответствия IP адресов и некоторых
имен произвольного формата, то при обращении к узлу по имени, для которого в данном файле
есть соответствие, будет произведено разрешение этого имени в IP адрес. Сразу рассмотрим
пример, внесем в файл Hosts строку и пробуем обменяться пакетами с узлом, обращаясь к нему
по имени узла.