Обзор HTTP
В «сердце» web находится протокол передачи гипертекста (HTTP), являющийся протоколом прикладного уровня. Описание HTTP можно найти в RFC 1945 и RFC 2616. Протокол HTTP реализуется с помощью двух программ: клиента и сервера которые, находясь на разных оконечных системах, обмениваются НТТР-сообщениями. Порядок обмена и содержание сообщений описаны в протоколе. Перед тем как углубиться в изучение НТТР, сначала освоим терминологию, используемую в контексте web.
Каждая web-страница, или документ, состоит из объектов. Объект представляет собой обычный файл в формате HTML, изображение в формате JPEG или GIF, Java-апплет, аудиоклип и т. п., то есть единицу, обладающую собственным универсальным указателем ресурса (Uniform Resource Locator, URL). Как правило, web-страницы состоят из базового HTML-файла и объектов, на которые он ссылается. Так, если web-страница включает базовый HTML-файл и пять изображений, то она состоит из шести объектов. Ссылки на объекты, относящиеся web-странице, представляют собой URL-адреса, включенные в базовый HTML -файл. URL состоит из двух частей: имени хоста сервера, на котором находится объект, и пути к объекту. Так, например, для URL www.someSchool.edu/someDepartment/picture.gif именем хоста является фрагмент www.someSchool.edu, а путем к объекту – фрагмент someDepartment/picture.gif. Браузером называется агент пользователя web; он отображает web-страницы, а также выполняет множество дополнительных служебных функций. Кроме того, браузеры представляют клиентскую сторону протокола HTTP. Таким образом, термины «браузер» и «клиент» в контексте web будут употребляться как эквивалентные. В число наиболее популярных браузеров входят Netscape Navigator и Microsoft Internet Explorer.
Web-сервер содержит объекты, каждый из которых идентифицируется своим URL-
адресом. Кроме того, web-серверы представляют серверную сторону протокола
HTTP. К наиболее популярными web-серверам следует отнести Apache и Microsoft
Internet Information Server.
Протокол HTTP определяет, каким образом клиенты (например, браузеры) запрашивают web-страницы, а серверы осуществляют передачу этих страниц. Более
подробный разговор о взаимодействии клиента и сервера мы проведем позднее,
однако "основную идею можно понять из рис.4.21. Когда пользователь запрашивает
web-страницу (например, совершает щелчок на гиперссылке), браузер посылает
серверу НТТР-запрос объектов, составляющих web-страницу. Сервер получает
запрос и высылает ответные сообщения, содержащие требуемые объекты. В 1997
году практически все web-браузеры и web-серверы стали поддерживать протокол
НТТР версии 1.0, описанной в документе RFC 1945. В 1998 году начался переход
к версии 1.1, которая была описана в документе RFC 2616. Версия 1.1 имеет обратную совместимость с версией 1.0, то есть любой сервер или браузер, использующий версию 1.1 может в полной мере взаимодействовать с браузером или сервером поддерживающим версию 1.0.
Как НТТР 1.0, так и HTTP 1.1 используют TCP в качестве протокола транспортного уровня. HTTP-клиент сначала устанавливает TCP-соединение с сервером, а после создания соединения клиент и сервер начинают взаимодействовать с протоколом TCP через интерфейс сокетов. Как было сказано ранее, сокеты предсталяют собой «двери» между процессами и протоколом транспортного уровня.
Клиент посылает запросы и принимает ответы через свой интерфейс сокетов, а сервер использует интерфейс сокетов для получения запросов и их выполнения. После того как web-запрос минует сокет клиента, он оказывается «в руках» протокола TCP. Вспомним, что одной из функций протокола TCP является обеспечение надежной передачи данных; это означает, что каждый запрос, посылаемый клиентом, и каждый ответ сервера доставляются в виде, точно соответствующем отправленному. Здесь проявляется одно из достоинств многоуровневой коммуникационной модели: протоколу HTTP не нужно контролировать надежность передачи и обеспечивать повторную передачу пакетов при искажениях. Вся «черновая» работа будет проделана протоколом TCP и протоколами более низких уровней.
Рис. 4.21 Передача запросов и ответов HTTP
Необходимо отметить, что после завершения обслуживания клиентов сервер не сохраняет о них никакой информации. Если, например, какой-либо клиент сделает два запроса одного и того же ресурса подряд, сервер выполнит их, не выдав клиенту никакого оповещения о дублирующем запросе. Говорят, что протокол HTTP является протоколом без запоминания состояния (stateless protocol) соединения.
Понятие адреса URL. При активаций гиперссылки в текущем документе должна происходить загрузка другого документа, на который эта ссылка, указывает. Чтобы такая система успешно работала, каждый документ должен иметь в своем информационном пространстве некий уникальный адрес. Такой адрес назвали унифицированным указателем ресурса (URL – Uniformed Resource Locator). Под словом ресурс понимается, что загружаемый объект не обязательно должен быть текстом. Это может быть рисунок, видеозапись, звукозапись, программный код и многое другое.
Несмотря на то что в мире очень много компьютеров и на каждом хранится великое множество файлов, дать каждому файлу уникальный г адрес оказалось не так уж и трудно. Вспомним, что каждый компьютер Всемирной сети имеет уникальный IР-адрес (соответствующее ему доменное имя тоже однозначно характеризует компьютер); а на каждом компьютере любой файл имеет уникальное полное имя, если рассматривать его вместе с путем доступа к файлу, ведущим от корневого каталога. Объединив эти два адреса, можно получить унифицированный указатель ресурса. Общая форма URL-адреса выглядит так:
http://best.server.com/Docs/Rus/mydoc.htm
1 2 3
- Указание прикладного протокола посредством, которого осуществляется доступ к указанному ресурсу. Он определяет сетевую службу, в которой производится запрос файла. После указания протокола ставится двоеточие и два знака «косая черта». В нашем примере указан протокол HTTP, определяющий службу World Wide Web.Если бы, например, ресурс поставлялся сервером FTP или Gopher, то можно было бы записать так:
ftp:/best.server.com/Docs/Rus/mydoc.zip
gopher://best.server.com /Docs/Rus/mydoc.
Если априори известно, что запрос производится по протоколу HTTP, то для упрощения записи имя протокола разрешается не указывать.
- Указание доменного имени компьютера, на котором располагается указанный ресурс. Вместо него может быть указан соответствующий ему IP-адрес, например так:
http://212.34.105.71/Docs/Rus/mydoc.htm
- Полный путь доступа к файлу на данном компьютере. Здесь важно обратить внимание на то, что промежуточные каталоги отделяются друг от друга знаком обычной косой черты « / », а не обратной « », как это принято в MS-DOS и Windows. В этой части URL–адреса необходимо также строго соблюдать регистр символов (строчные и прописные буквы), что для операционных систем Windows и MS-DOS нехарактерно.
С помощью гиперссылок, ведущих к URL -ресурсам, оказалось очень удобно подгружать не только новые текстовые документы.но и объекты, встраиваемые в текст: рисунки, видеоклипы, аудиоклипы, программные объекты и т. п. Современная Web-страница – это далеко не текстовый документ, в который имплантированы коды управления просмотром (их называют тегами), но целый комплекс взаимосвязанных объектов.
Протокол передачи гипертекста, HTTP. Это третий компонент службы WWW, введённый Тимом Бернерсом-Ли. По сравнению с другими прикладными протоколами Интернета HTTP, по-видимому, наиболее прост. Согласно ему работа клиентской программы (броузера) с Web-сервером состоит из четырех простых этапов.
- Устанавливается TCP-соединение с сервером.
- Отправляется запрос. В запросе указывается URL-адрес нужного объекта и метод (он определяет, что надо сделать с объектом). В большинстве случаев указывается метод GET (принять объект).
- Исполняется запрос. Если метод = GET, то объект отправляется клиентской программе.
- TCP-соединение разрывается той или иной стороной или обеими вместе.