| Index Page - Lections - Application Layer - HTTP | |
|
Протокол HTTP Протокол HTTP - это протокол
запросов/ответов. Клиент посылает по соединению
запрос серверу, содержащий: метод запроса, URI,
версию протокола, MIME-подобное сообщение,
включающее модификаторы запроса, клиентскую
информацию и, возможно, тело запроса. Сервер
отвечает строкой состояния, включающей версию
протокола сообщения, кодом успешного выполнения
или ошибки, MIME-подобным сообщением, содержащим
информацию о сервере, метаинформацию объекта и,
возможно, тело объекта. Большинство HTTP соединений,
инициализируется агентом пользователя и состоит
из запроса, который нужно применить к ресурсу на
некотором первоначальном сервере. В самом
простом случае, он может быть выполнен
посредством одиночного соединения между агентом
пользователя и первоначальным сервером.
Более сложная ситуация возникает,
когда в цепочке запросов/ответов присутствует
один или несколько посредников. Существуют три
основных разновидности посредников:
прокси-сервера, шлюзы, и туннели. Прокси-сервер
является агентом-посредником, который получает
запросы на некоторый URI в абсолютной форме,
изменяет все сообщение или его часть и отсылает
измененный запрос серверу, идентифицированному
URI. Шлюз - это принимающий агент, действующий как
бы на уровень выше некоторого другого сервера(ов)
и при необходимости транслирующий запросы в
протокол основного сервера. Туннель действует
как реле (relay) между двумя соединениями не изменяя
сообщений; туннели используются, когда связь
нужно производить через посредника (например
firewall), который не понимает содержание сообщений. На рисунке показаны три посредника (A,
B и C) между агентом пользователя и первоначальным
сервером. Запросы и ответы передаются через
четыре отдельных соединения. Это отличие важно,
так как некоторые опции HTTP соединения применимы
только к соединению с ближайшим не туннельным
соседом, некоторые только к конечным точкам
цепочки, а некоторые ко всем соединениям в
цепочке. Хотя эта диаграмма линейна, каждый
участник может быть задействован в нескольких
соединениях одновременно. Например, B может
получать запросы от других клиентов, а не только
от A, и/или пересылать запросы серверам, отличным
от C, в то же время, когда он обрабатывает запрос А.
Фактически, имеется широкое
разнообразие архитектур и конфигураций кэшей и
прокси-серверов, разрабатываемых в настоящее
время или развернутых в World Wide Web; эти системы
включают национальные иерархии прокси-кэшей,
которые сохраняют пропускную способность
межокеанских каналов, системы, которые
распространяют по многим адресам содержимое
кэша, организации, которые распространяют
подмножества кэшируемых данных на CD-ROM, и так
далее. HTTP системы используются в корпоративных
интранет-сетях с высокоскоростными линиями
связи, и для доступа через PDA с маломощными
радиолиниями и неустойчивой связью. Цель HTTP/1.1
состоит в поддержании широкого многообразия
конфигураций, уже построенных при введении
ранних версий протокола, а также в
удовлетворении потребностей разработчиков web
приложений, требующих все более высокой
надежности. HTTP соединение обычно
происходит посредством TCP/IP соединений. Заданный
по умолчанию порт TCP - 80, но могут использоваться и
другие порты (например: 8080, 8081). HTTP также может
быть реализован посредством любого другого
протокола Интернет, или других сетей. HTTP
необходима только надежная передача данных,
следовательно может использоваться любой
протокол, который гарантирует надежную передачу
данных; отображение структуры запроса и ответа
HTTP/1.1 на транспортные модули данных
рассматриваемого протокола - вопрос, не решается
на уровне самого протокола. Большинство реализаций HTTP/1.0
использовало новое соединение для каждого
обмена запросом/ответом. В HTTP/1.1, установленное
соединение может использоваться для одного или
нескольких обменов запросом/ответом, хотя
соединение может быть закрыто по ряду причин. | |