Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
13
Добавлен:
19.02.2016
Размер:
94.21 Кб
Скачать

3.1. Общая характеристика протокола http

Для общения между собой клиенты и серверы WWW используют протокол передачи гипертекстовых данных (HyperText Transfer Protocol – HTTP). Данные, поступающие от клиентской части к серверной и наоборот, оформляются в виде запросов в соответствии с протоколом HTTP.

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

Аналогично, протоколы позволяют нам описать или понять процесс передачи данных, не зная на каком оборудовании этот процесс выполняется. Протокол HTTP определяет язык запросов от Web-клиента к Web-серверу.

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

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

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

Данный протокол предназначен для обмена гипертекстовыми документами и учитывает специфику такого обмена. Управление в HTTP реализовано в виде ASCII-команд. Реально сталкиваются с элементами протокола только при использовании внешних расчетных программ или при доступе к внешним относительно Web информационным ресурсам, например базам данных.

HTTP основывается на парадигме запросов/ответов.

3.2. Структура запросов клиента

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

СТРОКА ЗАПРОСА

[РАЗДЕЛ ЗАГОЛОВКОВ]

[пустая строка]

[ТЕЛО ЗАПРОСА]

Дадим общую характеристику каждой части.

3.2.1. Строка запроса

Синтаксис строки запроса следующий:

Метод <пробел> URL-Запроса <пробел> Версия-HTTP <конец строки>

В поле Метод указывается метод, который должен быть применен к ресурсу, идентифицируемому URL-Запроса и может принимать одно из следующих значений:

Метод = "GET" | "HEAD" | "PUT" | "POST" | "DELETE" | "LINK" | "UNLINK"| дополнительный метод.

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

Тело запроса метода GET всегда пустое. При передаче входной информации в CGI-программы, входные данные присоединяются к URL ресурса в строке запроса (т.е. пары ключ-значение, представляющие собой введенные данные из формы, присоединяются к URL после символа "?"). Например:

GET http://stat.kar.net:88/cgi-bin/env.pl?month=Mar&day=24 HTTP/1.0

POST. Метод POST используется для запроса серверу, чтобы тот принял данные, включенные в тело запроса. По завершении обработки строки запроса и заголовков сервер передает тело запроса в программу, заданную в поле URL-Запроса.

PUT. Метод PUT запрашивает сервер о сохранении содержимого тела запроса под URL, равным URL-Запроса. Если URL-Запроса ссылается на уже существующий ресурс.

Тело-Запроса должно рассматриваться как модифицированная версия данного ресурса. Если ресурс, на который ссылается URL-Запроса не существует, и данный URL может рассматриваться как описание для нового ресурса, сервер может создать ресурс с данным URL. Если был создан новый ресурс, сервер должен информировать направившего запрос клиента через ответ с кодом статуса "201 Created". Если существующий ресурс был модифицирован, должен быть послан ответ "200 OK", для информирования клиента об успешном завершении операции. Если ресурс с указанным URL не может быть создан или модифицирован, должно быть послано соответствующее сообщение об ошибке.

Фундаментальное различие между методами POST и PUT заключается в различном значении поля URL-Запроса. Для метода POST данный URL указывает ресурс, который будет управлять информацией, содержащейся в теле запроса, как неким придатком. Ресурс может быть обрабатывающим данные процессом, шлюзом в какой-нибудь другой протокол, или отдельным ресурсом, допускающим аннотации. В противоположность этому, URL для запроса PUT идентифицирует информацию, содержащуюся в теле запроса. Использующий запрос PUT точно знает какой URL он собирается использовать, и получатель запроса не должен пытаться применить этот запрос к какому-нибудь другому ресурсу.

DELETE. Метод DELETE используется для удаления ресурсов, идентифицированных с помощью URI-Запроса. Результаты работы данного метода на сервере могут быть изменены с помощью человеческого вмешательства (или каким-нибудь другим способом). В принципе, клиент никогда не может быть уверен, что операция удаления была выполнена, даже если код статуса, переданный сервером, информирует об успешном выполнении действия. Тем не менее, сервер не должен информировать об успехе до тех пор, пока на момент ответа он не будет собираться стереть данный ресурс или переместить его в некоторую недостижимую область.

LINK. Метод LINK устанавливает взаимосвязи между существующим ресурсом, указанным в URI-Запроса, и другими существующими ресурсами. Отличие метода LINK от остальных методов, допускающих установление ссылок между документами, заключается в том, что метод LINK не позволяет передавать в запросе Тело-Запроса, и в том, что в результате работы данного метода не создаются новые ресурсы.

UNLINK. Метод UNLINK удаляет одну или более ссылочных взаимосвязей для ресурса, указанного в URI- Запроса. Эти взаимосвязи могут быть установлены с помощью метода LINK или какого-нибудь другого метода, поддерживающего заголовок "Link". Удаление ссылки на ресурс не означает, что ресурс прекращает существование или становится недоступным для будущих ссылок.

Соседние файлы в папке с добрым утром)