На главную | Содержание | Назад | Вперёд
Наши друзья

 

 

ДЕТАЛИ HTTP

Internet поддерживает огромное число разнообразных протоколов. Однако когда вы создаете программы Web, они в большинстве своем используют HTTP. В последующих разделах мы ближе познакомимся с протоколом HTTP.
ПРИНЦИПЫ РАБОТЫ HTTP
HTTP сильно отличается от таких FTP, обеспечивающих неразрывное соединение до тех пор, пока не произойдет ошибка или не будет подан сигнал к завершению соединения. Каждая операция HTTP начинается с того, что броузер и сервер устанавливают соединение, и заканчивается его уничтоже­нием. Например, когда вы подключаетесь к Web-сайту, броузер и сервер созда­ют соединение, позволяющее серверу передать HTML-страницу сайта броузеру.
Примечание. Обычно авторы Web именуют HTML-файлы так: «ИмяФайла.НТМЬ или «ИмяФайла.НТМ». Однако это совсем необязательно, так как протокол HTTP не использует ни имена файлов, ни их длину или формат. Лучше все же придер­живаться установившейся схемы - так вы облегчите жизнь и себе, и многим дру­гим людям.
После того как броузер принял файл, сервер разрывает соединение. Если после анализа HTML-страницы выясняется, что необходимо передать графический файл, соединение необходимо устанавливать заново. Таким образом, для пере­дачи нового файла нужно каждый раз устанавливать соединение, что чрезвычайно замедляет работу хостов. Поэтому в настоящее время появляются
Одна операция HTTP часто называется транзакцией. HTTP использует соедине­ние TCP/IP, устанавливаемое на период транзакции. Ни броузер (клиент), ни сервер не хранят информацию даже о последнем соединении. Таким образом, путешествие по Web представляет собой ряд последовательных HTTP. Когда вы щелкаете мышью на гипертекстовой ссылке, броузер переносит вас с одного сайта Web на другой. Поскольку можно в 'любой момент перейти на
другой сайт или выйти из программы-броузера, сервер всегда первый разрывает соединение. Если это не так, то сервер просто устанавливает новое соедине­ние. В случае ухода с сайта ему ничего не нужно делать — соединение было разорвано ранее. Такой стиль работы позволяет серверу быстрее переходить к обслуживанию других клиентов, что увеличивает эффективность его работы.
Недавно появилась технология кэширования соединения, когда сервер не разры­вает связь немедленно после ответа клиенту. Кэшируя соединение, сервер мо­жет очень быстро восстановить его, если клиент решит «побродить» по сайту. Эта технология особенно полезна на тех сайтах, где расположено много локаль­ных ссылок.
HTTP   ПОДДЕРЖИВАЕТ ДИНАМИЧЕСКИЕ ФОРМАТЫ
Используя HTTP, клиенты и серверы определяют форматы документов динами­чески. Это означает, что при подключении к серверу броузер первым делом высылает ему список доступных ему форматов данных. После этого сервер ста­рается отвечать ему, используя только такие форматы. В таком случае сервер и
клиент могут использовать собственные форматы данных.
Когда сервер посылает документ Web, он может включить информацию о файле (так называемую метаинформацию) в заголовок HTTP. Программа, принимаю­щая данные, может в свою очередь использовать заголовок для правильной ин­терпретации. Таким образом, принимающая сторона получает сообщение, опи­сывающее входящие данные. Если получатель не может использовать какой-либо тип данных, ему предоставляется возможность загрузить соответствующее про­граммное расширение. показано, как таким образом можно рас­ширить возможности броузера.
аудио
Программные расширения увеличивают возможности броузера.
ИНФОРМАЦИЯ ЗАГОЛОВКА HTTP
Заголовок HTTP хранит информацию о тех объектах, которые приложения пе­редают по Web. Используя информацию заголовка, программы договариваются о форматах данных для передаваемых объектов. Большинство приложений, если не может распознать информацию заголовка HTTP, просто игнорируют ее. По­скольку приложения игнорируют неизвестные форматы, можно смело тестиро­вать новые протоколы Web без нарушения целостности HTTP. Вы не сможете нарушить работу HTTP, используя неизвестные форматы данных.
ЧИТАБЕЛЬНОСТЬ HTTP
HTTP является читабельным протоколом, поскольку в его основе лежит тексто­вая информация,  не требующая дополнительной расшифровки. Фактически
многие броузеры обеспечивают информацию о состоянии текущей транзакции
HTTP, которую можно просмотреть во время HTTP-транзакции. Наиболее час­то эта информация отображается в строке состояния.
Netscape Navigator отображает информацию о транзакции в строке состояния.
HTTP-   ОБЩИЙ ПРОТОКОЛ
Сообщения HTTP представляют собой запросы клиента к серверу и ответы сер­вера клиенту. Существует два типа сообщений: простые (simple) и полные (full).
Сообщения HTTP, такие как Full-Request и Full-Response, используют стандарт­ный формат. Сообщения в этом формате могут состоять из дополнительных по­лей заголовка и тела объекта (документа). Формат сообщений HTTP является общим для всех типов данных, поскольку форматы данных в сообщениях не зависят от самого протокола. Другими словами, HTTP не интересует содержи­мое тела объекта. (За более подробной информацией обратитесь к RFC 822.)
Сообщения типа и не допускают использования заголовка и ограничены только данными из тела объекта. Не рекомендуется использовать такой формат сообщений, так как в этом случае сервер не может определить тип данных, содержащихся внутри сообщения. В свою очередь бро­узер тоже вынужден пытаться распознавать формат данных. по­казаны различия между сообщениями формата Simple-Response и Full-Response. Обратите внимание: единственным их различием является заголовок MIME у
документов Full-Response.
Full-Response
заголовок объекта
тело объекта
Simple-Response
тело объекта
Различие между сообщениями формата Simple-Response и Full-Response
ТРИ ОСНОВНЫЕ ОПЕРАЦИИ HTTP
С помощью HTTP приложения могут выполнять три основных операции: поиск, извлечение и проверку. При поиске объекта Web-программы применяют HTTP для указания серверу объекта. Если объект существует, приложение использует HTTP, чтобы получить его. По окончании операции HTTP сообщает о ее статусе. Другими словами, HTTP передает программе информацию о том, успешными или неудачными были операции поиска/извлечения данных. В сле­дующих разделах мы рассмотрим все три операции подробнее.
ПОИСК ИНФОРМАЦИИ
HTTP основан на операциях запроса клиента и ответа сервера. Клиент (запра­шивающая сторона) устанавливает с сервером (отвечающая сторона) с помощью сообщения о запросе на соединение. Если сервер доступен, он принимает это сообщение от клиента и устанавливает соединение.
Когда вы используете броузер для поиска информации в Web, он передает ваш запрос серверу, на котором хранятся искомые данные. После создания соеди­нения броузер посылает сообщение-запрос, в котором содержится информация о методе запроса, UR1 (Uniform Resource Identifier), версии протокола и сообще­ние MIME. В сообщении MIME указываются параметры запроса, информация о клиенте и (возможно) тело объекта.
ИЗВЛЕЧЕНИЕ ИНФОРМАЦИИ
того как броузер установил соединение с сервером и сделал запрос, начина­ется процесс извлечения документа. Сервер отвечает сообщением, где указаны его версия протокола, код ошибки либо успешного соединения, а также сооб­щение типа MIME, в котором присутствуют информация о сервере, заголовок Entity-Header и (возможно) содержимое тела объекта. показано взаимодействие по схеме «поиск-запрос» между броузером и сервером.
ИНФОРМАЦИЯ о  СТАТУСЕ СОЕДИНЕНИЯ
Когда ваш броузер пытается подключиться к серверу или извлечь (скопировать) информацию, в окне статуса соединения можно наблюдать за всеми фазами
процесса. Сообщения о статусе объекта позволяют определить размер информа­ции, необходимой для копирования, а также начало процесса извлечения дан­ных, и тем самым при необходимости прервать процесс копирования. Кроме того, пользователю предоставляются более полные сведения о попытках поиска информации (в разделе «Классы ответных кодов HTTP» настоящей главы коды статуса информации будут описаны подробнее). Коды статуса обычно выводятся в соответствующем окне броузера.
ЧЕТЫРЕ ЭТАПА  ТРАНЗАКЦИИ HTTP
Перед тем как клиент и сервер смогут обмениваться данными, им необходимо сперва установить соединение. В Internet это делается с использованием прото­кола TCP/IP. Далее клиент запрашивает данные у сервера, а сервер отвечает ему и передает необходимую информацию. Для выполнения подобных операций клиенты и серверы используют протокол HTTP. Кроме того, такое соединение устанавливается на время только одной транзакции и закрывается сервером по ее окончании. Теперь рассмотрим все четыре этапа транзакции более подробно.
ШАГ 1:   УСТАНАВЛИВАЕМ СОЕДИНЕНИЕ
Перед тем как обменяться информацией, клиент и сервер должны сперва уста­новить соединение TCP/IP. Как известно, Internet использует набор протоколов TCP/IP для организации взаимодействия компьютеров. Чтобы отличать прото­колы, приложения используют для каждого из них уникальные номера. Общие протоколы, вроде FTP и HTTP, используют известные номера портов. Стандарт­ным значением для порта HTTP является 80, хотя сервер и клиент могут работать и по другому номеру. В таблице 6.2 приведены значения портов для наиболее известных протоколов Web и Internet.

ШАГ 2: ЗАПРОС КЛИЕНТА
Каждый запрос клиента, передаваемый серверу Web, начинается с метода, за которым следует URL объекта. Кроме того, клиент должен указать используе­мую версию протокола HTTP. После этого ставятся символы возврата каретки и перевода строки (CRLF), за которыми могут идти данные. В конце броузер еще раз добавляет CRLF.
Метод HTTP представляет собой команду, с помощью которой клиент указыва­ет цель запроса к серверу. Каждый метод ссылается на какой-либо ресурс (опре­деляемый с помощью URL). Кроме того, клиент должен указать используемую версию протокола HTTP (например, HTTP 1.0). Все эти данные - метод, URL и версия протокола HTTP — входят в состав строки запроса (Request-Line). Строка запроса - это раздел поля заголовка запроса (Request-Header). Например, с по­мощью метода С7£Тклиент может запросить графическую информацию Web-стра­ницы.
С помощью поля заголовка запроса клиент передает серверу информацию о запросе и о себе. В каждом запросе тело объекта представляет собой информацию запроса. Обычно в теле запроса клиент указывает имя необходимого файла. схематично показано, как после создания соединения клиент посы­лает серверу запрос.
сервер
Такое сообщение всегда начинается с версии прото­кола HTTP, затем идут три цифры кода статуса и тема ответа, пара CRLF и
(возможно) дополнительная информация, оформленная в виде соответствую­щих заголовков. В конце сервер добавляет CRLF, за которым может следовать
тело объекта.
Код статуса представляет собой трехзначное число, указывающее, может ли сервер принять и удовлетворить запрос пользователя. Тема ответа — это корот­кое текстовое описание кода статуса. Более подробно они будут описаны далее. Версия протокола HTTP, код статуса и тема ответа вместе составляют строку состояния.
Заголовок ответа может содержать информацию о запрашиваемом ресурсе, а также соответствующие определения MIME. Обычно он совпадает с заголовком, принятым от клиента. Далее мы подробнее рассмотрим форматы заголовков. Тело объекта содержит данные, пересылаемые клиенту. Ответ сервера схема­тично показан 9.
броузер
заголовок содержание
соединение
.ягяю
сообщение-ответ |
сервер
Ответ сервера.
ШАГ 4:  СЕРВЕР РАЗРЫВАЕТ СОЕДИНЕНИЕ
Прерогативой сервера является разрыв соединения TCP/IP после обработки запроса клиента. Однако как сервер, так и клиент должны отслеживать незапла­нированные разрывы соединения. Другими словами, если вы щелкаете на кнопке Stop вашего броузера, он должен закрыть соединение. Кроме того, если про­изошла поломка одного из компьютеров, другой должен определить это и кор­ректно завершить работу. В любом случае, закрытие соединения всегда приводит к завершению текущей транзакции, вне зависимости от ее статуса. На рисун­ке       схематично показаны все этапы транзакции HTTP.
Примечание. В этой главе описаны сообщения Full-Request и Full-Response, исполь­зуемые в HTTP версии 1.x. Однако в HTTP 0.9 используются только сообщения Simple-Reques, и Simple-Response. В настоящее время эта версия протокола устаре­ла и используется крайне редко. Стоит отметить, что HTTP 0.9 является под­множеством протоколов HTTP 1.x.
КЛАССЫ ОТВЕТНЫХ кодов HTTP
Первая цифра кода статуса HTTP определяет класс кода ответа. В настоящее время последние две цифры не используются. Существует пять возможных зна­чений для первой цифры (от 1 до 5).
Код_
Описание
Информационная
2хх: Успешно
Зхх: Перенаправление
4хх: Ошибка клиента
5хх: Ошибка сервера_
Не используется, но зарезервирована для будущего использования.
Данные были успешно приняты и обработаны.
Для выполнения запроса требуются дополнительные действия.
Запрос содержит синтаксические ошибки либо не полон.
Сервер не смог правильно обработать запрос.
Классы кодов ответа.
Каждый из пяти классов содержит группу значений статуса кода. В таблице 6.4 перечислены значения статуса кода для HTTP 1.0 и 1.1 и соответствующие им темы ответов. Темы ответов представляют собой рекомендованные значения и могут быть заменены другим текстом без ущерба для HTTP. Вам могут повстре­чаться не все коды статуса из этой таблицы. Но это говорит лишь о том, что не
каждый сервер сможет обрабатывать все коды статуса.
Код статуса Тема ответа_
200 (Ж
201 Успешная команда POST
202 Запрос принят
203 Запрос GET либо HEAD выполнен
204 Запрос выполнен, но нет содержимого
300 Ресурс обнаружен в нескольких местах
301 Ресурс удален навсегда
302_Ресурс отсутствует временно_


Код статуса
Тема ответа
401
402 403 404 405 406
410
400
502
504
500
304
501
503
Ресурс не был изменен Плохой запрос от клиента Неавторизованный запрос Необходима оплата за запрос Доступ к ресурсу запрещен
Ресурс не найден
Метод неприменим для этого ресурса
Недопустимый тип ресурса
Ресурс недоступен Внутренняя ошибка сервера Метод не реализован
Неисправный шлюз либо перегрузка сервера Сервер недоступен или тайм-аут шлюза Вторичный шлюз или тайм-аут сервера_
Коды статуса и темы ответов (окончание).
ДЕТАЛИ URI
В литературе по Web часто можно встретить термин URI (Uniform Resource Identifier). Большинство книг ссылаются на URI как на адреса Web, Uniform Document Identifiers, Uniform Resource Locators (URL) и Uniform Resource Names (URN). HTTP определяет URI как форматированную строку, включающую имена, местонахождение и другие характеристики сетевых ресурсов. Другими словами, URI представляет собой текстовую строку (адрес объекта Web).
ЕЩЕ РАЗ ОБ URL
Для поиска документов в Web вам необходимо знать адрес документа в Internet. Адрес в Internet еще называют URL (Uniform Resource Locator). Его можно срав­нить с содержанием книги. Для того чтобы найти информацию в книге, вы смотрите на ее содержание. Если вы ищете документ Web, вам понадобится его адрес. Броузеры Web используют URL для поиска ресурсов.
Основной синтаксис URL достаточно прост.
Как видно, для HTTP схемой является «hltp», а далее идет хост, порт, путь и путь поиска. Если вы опустили элемент «порт», то по умолчанию будет выбран порт 80 (стандартный порт HTTP). В настоящее время протокол HTTP не под­держивает параметр «путь поиска» и его можно игнорировать.
Можно перейти к разделу внутри документа, сославшись на определенную его часть. Например, набрав в окне броузера приведенный ниже (JRL и нажав кла­вишу Enter, вы попадете на биографию автора этой книги, расположенную на Web-сайте издательства Jamsa Press:
http: //www.jamsa.com/AUTHORS/bio. htm#lklander
В приведенном выше примере URL расширен анкером Ulklandei в конце своего наименования. Он направляет броузер по адресу, указанному в URL, и далее к соответствующему разделу документа. I показана страница с био­графией автора.
Связь URL с ПРОТОКОЛАМИ и ТИПАМИ ФАЙЛОВ
URL не только предоставляет адрес объекта Internet, но также описывает прото­кол для доступа приложений к объекту. Например, схема URL для HTTP обо­значает пространство Web, а схема FTP — пространство FTP. Пространство в Internet означает множество информации определенного типа. Например, все документы FTP составляют пространство FTP. может включать в себя и указатель на формат документа (document-resource
identifier), который определяет формат файла. При этом создатель файла дол­жен соблюдать соглашение о наименованиях. Например, файл с расширением html должен хранить текст в формате HTML, а файл с расширением аи должен содержать звуковые данные.
СОСТАВЛЯЮЩИЕ URL
Как вы уже могли заметить, для расшифровки URL можно разбить его на со­ставляющие. Например, рассмотрим структуру следующего URL:
http://www.j amsa.com/catalog/hacker/hacker.htm
В приведенном выше примере схема URL указывает на протокол HTTP. Две косые черты (слэши) после двоеточия указывают на то, что речь идет об объекте Internet. Затем следует адрес сервера - www.jamsa.com. Далее видна структура каталогов catalog/hacker. И самый последний элемент URL представляет собой имя и расширение документа Web, т. е.

 

На главную | Содержание | Назад | Вперёд
 
Яндекс.Метрика