Home (Главная)

Page - Страница
Page 1
background image

В   рассматриваемом   нами   курсе   мы   изучили   протоколы  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 строку и пробуем обменяться пакетами с узлом, обращаясь к нему 
по имени узла.