Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория для защиты 1 лабы.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
405.5 Кб
Скачать

6.2 Протокол http

Первый документ (но не стандарт) - RFC1945 (Hypertext Transfer Protocol -- HTTP/1.0 T. Berners-Lee, R. Fielding, H. Frystyk May 1996) Последняя версия - RFC2616 (Hypertext Transfer Protocol -- HTTP/1.1 R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, T. Berners-Lee June 1999)

Hypertext Transfer Protocol - протокол передачи гипертекста, протокол высокого уровня (а именно, уровня приложений). . Используется службой WWW для передачи Web-страниц.

Протокол HTTP определяет запрос-ответный способ взаимодействия между программой-клиентом и программой-сервером в рамках технологии World Wide Web. Ниже приведены примеры запроса клиента и ответа сервера:

Установка соединения Connecting to ipm.kstu.ru ... Connected to ipm.kstu.ru [195.208.44.20]

Запрос клиента: GET /internet/index.php HTTP/1.1 - (запрос файла и указание протокола HTTP/1.1) Connection: close - (закрыть соединение после отправки файла) Host: ipm.kstu.ru - (указание адреса сервера) Accept: */* - (предпочтение типов данных) Cache-Control: no-cache - (не кешировать) Referer: http://ipm.kstu.ru/internet/ - (от куда пришел клиент) User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 95) - (название программы клиента)

Ответ сервера HTTP/1.0 200 OK - (какой протокол используется, 200 - означает, что файл найден) Date: Wed, 23 Oct 2002 08:32:31 GMT - (дата и время ответа) Server: Apache/1.3.26 (Unix) PHP/4.1.2 rus/PL30.15 - (название, версия и модули http-сервера) X-Powered-By: PHP/4.1.2 - (чем создана страница) Connection: close - (закрыть соединение после получения файла) Content-Type: text/html; charset=windows-1251 - (тип данных html, кодировка windows-1251)

Дальше идет содержимое файла (тело запроса).

Работа по протоколу HTTP происходит следующим образом: программа-клиент устанавливает TCP-соединение с сервером (стандартный номер порта-80) и выдает ему HTTP-запрос. Сервер обрабатывает этот запрос и выдает HTTP-ответ клиенту.

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

Запрос в главной строке состоит из трех частей, разделенных пробелами:

1) Метод (иначе говоря, команда HTTP):

GET - Метод GET служит для получения любой информации, в соответствии URI-запроса.

HEAD - запрос заголовка документа. Отличается от GET тем, что выдается только заголовок запроса с информацией о документе. Сам документ не выдается.

POST - этот метод применяется для передачи данных CGI-скриптам. Сами данные следуют в последующих строках запроса в виде параметров.

PUT - поместить документ на сервере. Запрос с этим методом имеет тело, в котором передается сам документ.

DELETE - используется для удаления ресурсов, идентифицированных с помощью URI-запроса

2) Ресурс - это путь к определенному файлу на сервере (называется URI), который клиент хочет получить (или разместить - для метода PUT). Если ресурс - просто какой-либо файл для считывания, сервер должен по этому запросу выдать его в теле ответа. Если же это путь к какому-либо CGI-скрипту, то сервер запускает скрипт и возвращает результат его выполнения. Кстати, благодаря такой унификации ресурсов для клиента практически безразлично, что он представляет собой на сервере.

3) Версия протокола - версия протокола HTTP, с которой работает клиентская программа.

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

Параметр: значение.

Таким образом, задаются параметры запроса. Это является необязательным, все строки после главной строки запроса могут отсутствовать; в этом случае сервер принимает их значение по умолчанию или по результатам предыдущего запроса (при работе в режиме Keep-Alive).