История и эволюция прокси-серверов

Хотя первоначально Web-сообщения передавались между пользовательским агентами и Web-серверами непосредственно, промежуточные компоненты быстро нашли применение. К трем наиболее распространенным промежуточным компонентам относятся собственно прокси-серверы, шлюзы и туннели. В этом разделе мы рассмотрим процесс эволюции этих компопеитов-посредников.

Прокси-серверы стали играть важную роль уже в 1994 г. К этому привел рост популярности Web. В первом проекте документа, описывающего синтаксис унифицированных идентификаторов ресурсов (URI) [BL94], упоминалась роль прокси-сервера как шлюза, т.е. HTTP-сервера, через который проходят сообщения и где может быть осуществлено преобразование протоколов. В целях безопасности многим организациям не разрешалось иметь непосредственный выход в Internet. Вместо этого все коммуникационные потоки проходили через межсетевой экран или брандмауэр [BC95] — компьютер, который выполнял роль «стража». Трафик к месту назначения и от него, представляющийся небезопасным, отфильтровывался межсетевым экраном. Поскольку весь трафик в Internet и из Internet проходил через межсетевой экран, последний естественным образом иснолпял функции прокси-сервера. Изначальным назначением прокси-сервера было предоставить доступ Web-клиентам, находящимся за межсетевым экраном организации [LA94J. Первоначальное назначение прокси-серверов состояло в том, чтобы клиенты не теряли каких-либо функциональных возможностей при передаче своих запросов и получении ответов через межсетевой экран. Самый первый прокси-сервер в действительности представлял собой шлюз в CERN (Европейский центр физики высоких энергий) [LA94], где впервые в мире был реализован Web-cepвep. Роль прокси-сер- веров в сокрытии информации и инкапсуляции подробно описана в [Sha86].

В первом проекте документа [BLFN95J, описывающем основные положения протокола НТТР/1.0, говорилось о роли прокси-серверов как промежуточных коммуникационных компонентов для различных других протоколов, таких как Simple Mail Transfer Protocol (SMTP) [Pos82], NNTP [KL86], FTP [PR85], Gopher [AML+93] и WAIS [PFG+94], Эти протоколы являются основой таких популярных приложений, как электронная почта, Группы новостей, передача файлов и т.д. Проект спецификации HTTP/1.0 [BLFN95] также содержал формальное определение прокси-сервера:

Промежуточная программа, которая действует и как сервер, и как клиент для целей передачи запросов. Прокси-серверы часто используются для передачи сообщений через межсетевой экран. Прокси-сервер принимает запросы от клиентов и либо обрабатывает их самостоятельно, либо передает запросы (возможно, с преобразованием) другим серверам.

Это определение но большей части сохранено и в последующих спецификациях HTTP. В данной кииге мы будем использовать именно это определение.

Итак, прокси-серверы, поначалу используемые в качестве шлюзов, в настоящее время стали составной частью пользовательского «восприятия» Web. Запрос от клиента может завершиться на прокси-сервере, если требуемый ответ содержится в кэше прокси-сервера. В противном случае запрос будет перенаправлен на другой сервер, который может быть конечным сервером в цепочке, так и не быть им. Конечный сервер фактически отвечает на клиентский запрос. На рис. 3.1 демонстрируется прокси-сервер, играющий роль клиента и сервера. Как показано на рисунке, клиент 1 запрашивает ресурс В. Запрос направляется прокси-сервером серверу 1, а ответ возвращается клиенту. Этот запрос не кэшируется. Запрос от клиента 2 на ресурс А направляется серверу 2, но ответ кэшируется на прокси-сервере и возвращается клиенту. Теперь, когда клиент 3 запрашивает ресурс А, запрос прокси-сер- вером не перенаправляется серверу 2, вместо этого клиенту 3 возвращается копия ресурса А из кэша.

Рис. 3.1. Прокси-сервер в качестве промежуточного звена между клиентом и сервером

Прокси-сервер представляет собой не только промежуточное звено между отправителем и получателем HTTP-сообщения. Шлюз — это сервер, который обычно действует как передаточное звено для серверов, работающих с другими протоколами, например, серверов электронной почты или FTP-серверов. При направлении сообщения такому серверу шлюз осуществляет преобразование НТТР-запроса к требуемому протоколу. Ответ возвращается шлюзу, который после выполнения соответствующего преобразования возвращает ответ отправителю запроса. Однако между прокси-сервером и шлюзом имеются различия. При использовании прокси-сервера отправителю следует зиать, что прокси-сервер может либо сам ответить на запрос, либо переадресовать запрос. В случае использования шлюза имеет место несколько другая картина. Для отправителя шлюз действует как исходный сервер. Клиенту, обращающемуся с запросом, необязательно знать, что где-то на пути сообщения имеется шлюз. Шлюз к другому сервису, например, к электронной почте или группам новостей, должен принимать входящий запрос и преобразовывать его в формат, используемый сервисом, которому направляется запрос.

Туннель — это промежуточное звено, которое передает битовые данные между двумя точками соединения. Туннель, в отличие от прокси-сервера или шлюза, не выполняет синтаксический Анализ и не интерпретирует НТТР-сообщение, передаваемое через пего вслед за строкой запроса (первой строки HTTP-сообщения) для указания адреса компьютера, с которым необходимо установить соединение. Туннель переходит в активное состояние в начале сеанса взаимодействия. В активном состоянии гунпель не воспринимается как часть HTTP-взаимодействия. Туннель активизируется в пачале сеанса и в активном состоянии не считается частью коммуникационного взаимодействия, поскольку оп не просматривает, не создает и не изменяет передаваемое информационное содержимое. Туннели не кэшируют ответы, тогда как шлюзы и прокси-серверы могут это делать. Еще более важно, что время существования туннеля, в отличие от прокси-сервера или шлюза, равно времени существования капала связи между конечными точками соединений. Если оба конца соединений закрыты, туннель прекращает свое существование.

В главе 7 (раздел 7.5) обсуждается концепция долговременных НТТР-соеди- непий, сохраняющихся и после выполпепия транзакции запрос-ответ. Прокси-серверы, шлюзы и туннели играют важную роль в поддержании долговременного соединения между клиентом и сервером, если они присутствуют на пути передачи сообщений. Все промежуточные компоненты должны удовлетворять правилам относительно передачи заголовков НТТР-сообщений. Прокси-серверы и шлюзы также нужны для того, чтобы скрывать определенную идентификационную информацию (иапример, IP-адреса отправителей) при использовании их для передачи сообщения через межсетевой экран. Аналогично последняя версия протокола HTTP, НТТР/1.1, требует, чтобы шлюзы и прокси-серверы идентифицировали себя в том случае, если они являются частью НТТР-транзакции. Промежуточные компоненты должны проявлять осторожность при корректировке тела сообщения. Например, сообщение может включать контрольную сумму для проверки целостности сообщения, которая может стать пекэрректпой в случае изменения тела сообщения.

Хотя имеются только три крупные категории промежуточных компонентов, в этой главе, да и во всей остальной книге мы ограничимся рассмотрением только прокси-серверов. Прокси-сервер — это промежуточное звено в Web, которое получило достаточно широкое распространение. Шлюзы и туннели используются гораздо реже.

Источник: Web-протоколы. Теория и практика. — M.: ЗАО «Издательство БИНОМ», 2002 г. – 592 c.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100