Обзор 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

 

  1. Указание прикладного протокола посредством, которого осуществ­ляется доступ к указанному ресурсу. Он определяет сетевую службу, в которой производится запрос файла. После указания протокола ставится двоеточие и два знака «косая черта». В нашем примере указан протокол HTTP, определяющий службу World Wide Web.Если бы, например, ресурс поставлялся сервером FTP или Gopher, то можно было бы записать так:

ftp:/best.server.com/Docs/Rus/mydoc.zip

gopher://best.server.com /Docs/Rus/mydoc.

 

Если априори известно, что запрос производится по протоколу HTTP, то для упрощения записи имя протокола разрешается не указывать.

 

  1. Указание доменного имени компьютера, на котором располагается указанный ресурс. Вместо него может быть указан соответствующий ему IP-адрес, например так:

http://212.34.105.71/Docs/Rus/mydoc.htm

 

  1. Полный путь доступа к файлу на данном компьютере. Здесь важно обратить внимание на то, что промежуточные каталоги отделяются друг от друга знаком обычной косой черты « / », а не обратной « », как это принято в MS-DOS и Windows. В этой части URL–адреса необходимо также строго соблюдать регистр символов (строчные и прописные буквы), что для операционных систем Windows и MS-DOS нехарактерно.

 

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

Протокол передачи гипертекста, HTTP. Это третий компонент службы WWW, введённый Тимом Бернерсом-Ли. По сравнению с другими прикладными протоколами Интернета HTTP, по-видимому, наиболее прост. Согласно ему работа клиентской программы (броузера) с Web-сервером состоит из четырех простых этапов.

  1. Устанавливается TCP-соединение с сервером.
  2. Отправляется запрос. В запросе указывается URL-адрес нужного объекта и метод (он определяет, что надо сделать с объектом). В большинстве случаев указывается метод GET (принять объект).
  1. Исполняется запрос. Если метод = GET, то объект отправляется клиентской программе.
  2. TCP-соединение разрывается той или иной стороной или обеими вместе.