|
некоторый предел) и его приходится обслуживать сразу нескольким компью-
терам. Такая схема используется, например, на сайте компании Netscape.
Как же ведется поиск по DNS-адресу? Для начала он преобразуется специальными
DNS-серверами, раскиданными по всему миру, в IP-адрес. Давайте посмотрим, как
это происходит. Пусть клиентом выдан запрос на определение IP-адреса машины
www.host.ru. (еще раз обратите внимание на завершающую точку! — это не конец
предложения). Чтобы его обработать, первым делом посылается запрос к так назы-
ваемому корневому домену (точнее, к программе — DNS-серверу, запущенному на
этом домене), который имеет имя "." (на самом деле его база данных распределена
по нескольким компьютерам, но для нас это сейчас несущественно). Запрос
содержит
команду: вернуть IP-адрес машины (точнее, IP-адрес DNS-сервера), на котором
рас-
положена информация о домене ru. Как только IP-адрес получен, по нему
происходит
аналогичное обращение с просьбой — определить адрес, соответствующий домену
host внутри домена ru внутри корневого домена ".".
В конце у предпоследней машины запрашивается IP-адрес поддомена www в домене
somehost.ru.
Важно, что каждый домен "знает" все о своих поддоменах, а те, в свою очередь —
о
своих, т. е. система имеет некоторую иерархичность. Корневой домен, как мы уже
заметили, принято называть доменом нулевого уровня, домен ru. (в нашем приме-
ре) — первого, host.ru. — второго уровня, ну и т. д. При изменении доменов
неко-
торого уровня об этом должны узнать все домены, родительские по отношению к не-
му, для чего существуют специальные протоколы синхронизации. Нам сейчас нет
Часть I. Основы Web-программирования 18
нужды вникать, как они действуют — скажу только, что распространяются сведения
об изменениях не сразу, а постепенно, спустя некоторое время, задаваемое
админист-
ратором DNS-сервера, и рассылкой также занимаются DNS-серверы.
Просто? Не совсем. Представьте, какое бы произошло столпотворение на корневом
домене ".", если бы все запросы на получение IP-адреса проходили через него.
Чтобы
этого избежать, практически все машины в Сети кэшируют информацию о DNS-
запросах, обращаясь к корневому домену (и доменам первого уровня — ru, com
и т. д.) лишь изредка для обновления этого кэша. Например, пусть пользователь,
под-
ключенный через модем к провайдеру, впервые соединяется с машиной
www.host.ru. В этом случае будет передан запрос корневому домену, а затем, по
цепочке, поддомену host и, наконец, домену www. Если же пользователь вновь
обра-
тится к www.host.ru., то сервер провайдера сразу же вернет ему нужный IP-адрес,
потому что он сохранил его в своем кэше запросов ранее. Подобная технология по-
зволяет значительно снизить нагрузку на DNS-серверы в Интернете. В то же время
у
нее имеются и недостатки, главный из которых — вероятность получения ложных
данных, например, в случае, если хост host.ru. только что отключился или сменил
свой IP-адрес. Так как кэш обновляется сравнительно редко, мы всегда можем
столк-
нуться с такой ситуацией.
Конечно, не обязательно, чтобы все компьютеры, имеющие различные доменные
имена, были разными или даже имели уникальные IP-адреса: вполне возможна си-
туация, когда на одной и той же машине на одном и том же IP-адресе
располагаются
сразу несколько доменных имен.
Здесь и далее я иногда буду подразумевать, что одной машине в Сети всегда
соответствует уникальный IP-адрес, и наоборот, для каждого IP-адреса суще-
ствует своя машина, хотя это, разумеется, не так. Просто так получится немно-
го короче.
Порт
Итак, мы ответили на первый поставленный вопрос — как адресовать отдельные ма-
шины в Интернете. Теперь давайте поглядим, как нам быть с программным обеспе-
чением, использующим Сеть для обмена данными.
До сих пор мы расценивали машины, подключенные к Интернету, как некие недели-
мые сущности. Так оно, в общем-то, и есть (правда, с некоторыми оговорками) с
точ-
ки зрения протокола IP. Но TCP использует в своей работе несколько другие
понятия.
А именно, для него отдельной сущностью является процесс — программа, запущен-
ная где-то на компьютере в Интернете. Именно между процессами, а не между ма-
шинами, и осуществляется обмен данными в терминах протокола TCP. Мы уже
знаем, как идентифицируются отдельные компьютеры в Сети. Осталось рассмотреть,
как же TCP определяет тот процесс, которому
|
|