logo
Проектирование инт-прил / лекции / Проектирование инет приложений

Имя в интернете

Другой важной составляющей интернета является служба имен (DNS, DomainNameSystem), которая предназначена для представления адресов компьютеров в более "человеческой" универсальной форме. Служба DNS преобразует полученное имя хоста (строку) в IP-адрес устройства. Ключевым элементом отсчета является точка (. - так и называется - "домен точка", или "корневой домен", или "домен нулевого уровня"). Домен "точка" разделен на зоны (.com., .org., .net., .ru. и так далее). В связи с тем, что домен точка присутствует в адресе всегда, он опускается в записи адреса (последняя точка - не указывается, вместо urfu.ru. пишут urfu.ru )

Существует несколько утилит, позволяющих "вручную" провести распознавание адреса. Направлены эти утилиты прежде всего на то, чтобы диагностировать работоспособность службы DNS на данном участке сети. В частности, можно отметить команды host и nslookup:

sally ~ # host urfu.ru

urfu.ru has address 93.88.190.5

urfu.ru mail is handled by 100 relay1.urfu.ru.

urfu.ru mail is handled by 200 relay2.urfu.ru.

У DNSсуществует как прямое направление распознавания (по имени найтиIPадрес), так и обратное (по адресу найти имя). В общем случае полученные значения могут не совпадать между собой, потому что один физический IP адрес может иметь несколько имен. В приведенном выше примере адрес urfu.ru и его IP адрес не совпадают между собой в прямом и обратном направлении:

sally ~ # host 93.88.190.5

5.190.88.93.in-addr.arpa domain name pointer ustu.ru.

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

имя_службы://имя_хоста.имя_домена.зона:порт/имя_ресурса

Кроме того, указанная строка при необходимости может быть дополнена именем входа / паролем, а так же дополнительными произвольными параметрами, передаваемыми в запросе ресурса (например, параметрами для вызова RPC-процедуры).

Вот как выглядит адрес ресурса, предоставляющего сведения о погоде в Екатеринбурге:

http://www.gismeteo.ru/city/hourly/4517/#wdaily1

Забегая вперед, отметим, что довольно часто при разработке интернет-приложений появляется необходимость чуть-чуть "обмануть" службу DNS, присвоив некоторым соседним компьютерам фиктивные имена, на самом делеDNS'ом не распознаваемые. Либо, второй вариант, присвоить одному компьютеру несколько имен. Делается это при помощи файликаhosts. ВMSWindowsфайликhostsрасположен в каталогеc:\Windows\System32\drivers\etc\, в *nixсистемах - в каталоге/etc.

Например, мы хотим одновременно разрабатывать на одном компьютере два Web-приложения. Одно из них представляет собой библиотеку книг с указанием автора и краткой аннотацией и называетсяlibrary. Другое из них посвящено учету персональных финансов и называетсяpurse. Когда приложения будут готовы - в файлыDNSбудут внесены соответствующие изменения и имена станут доступны всем пользователям интернета, но на этапе разработки это не обязательно. Достаточно внести следующую строчку в упомянутый файлhosts:

127.0.0.1 localhost purse library

И компьютер, за клавиатурой которого непосредственно производится разработка обоих указанных приложений (то есть "локальный" компьютер) будет откликаться на два этих имени:

C:\Windows\System32\drivers\etc>ping purse

Обмен пакетами с home [127.0.0.1] с 32 байтами данных:

Ответ от 127.0.0.1: число байт=32 время<1мс TTL=128

Ответ от 127.0.0.1: число байт=32 время<1мс TTL=128

Ответ от 127.0.0.1: число байт=32 время<1мс TTL=128

Ответ от 127.0.0.1: число байт=32 время<1мс TTL=128

Статистика Ping для 127.0.0.1:

Пакетов: отправлено = 4, получено = 4, потеряно = 0

(0% потерь)

Приблизительное время приема-передачи в мс:

Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек

C:\Windows\System32\drivers\etc>ping library

Обмен пакетами с home [127.0.0.1] с 32 байтами данных:

Ответ от 127.0.0.1: число байт=32 время<1мс TTL=128

Ответ от 127.0.0.1: число байт=32 время<1мс TTL=128

Ответ от 127.0.0.1: число байт=32 время<1мс TTL=128

Ответ от 127.0.0.1: число байт=32 время<1мс TTL=128

Статистика Ping для 127.0.0.1:

Пакетов: отправлено = 4, получено = 4, потеряно = 0

(0% потерь)

Приблизительное время приема-передачи в мс:

Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек

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

http://purse

http://library

и получая ответ от разрабатываемых приложений.

Yandex.RTB R-A-252273-3
Yandex.RTB R-A-252273-4