Hyppertext Transfer Protocol (HTTP ),
протокол пересылки гипертекста - это язык, которым клиенты и серверы
World Wide Web пользуются для общения между собой.
Принципы
работы Все HTTP-трнзакции имеют один общий формат. Каждый запрос
клиента и ответ сервера состоит из трех частей: строки запроса
(ответа), раздела заголовка и тела. Клиент инициирует транзакцию
следующим образом: 1. Клиент устанавливает связь с сервером по
назначенному номеру порта (по умолчанию 80). Затем клиент посылает
запрос документа, указав HTTP-команду, называемую методом, адрес
документа и номер версии HTTP. Например, в запросе
GET
/index.html HTTP/1.0 используется метод GET, которым с помощью версии 1.0
HTTP запрашивается документ index.html. 2. Клиент посылает
информацию заголовка (необязательную), чтобы сообщить
серверу информацию о своей конфигурации и данные о форматах документов,
которые он может принимать. Вся информация заголовка указывается
построчно, при этом в каждой строке приводится имя и значение.
Например, приведенный ниже заголовок, посланный клиентом, содержит его
имя и номер версии, a также информацию о некоторых предпочтительных для
клиента типах документов:
USER-AGENT: Mozilla/2.02Gold (WinNT;
I) Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Завершается пустой строкой. 3. Послав запрос и заголовки, клиент может
отправить и дополнительные данные. Эти данные используются главным
образом теми CGI-программами, которые применяют метод POST. Клиенты
могут их использовать для помещения отредактированной страницы
обратно на Web-сервер.
Сервер отвечает на запросы клиента
следующим образом: 1. Первая часть ответа сервера - строка состояния,
содержащая три поля: версию HTTP, код состояния и описание. Поле версии
содержит номер версии HTTP, которой данный сервер пользуется для
передачи ответа. Код состояния - это трехразрядное число, обозначающее
результат обработки сервером запроса клиента. описание, следующее за
кодом состояния, представляет собой просто понятный для человека текст,
поясняющий код состояния. Например, строка состояния
HTTP/1.0. 200
OK говорит о том, что сервер для ответа использует версию HTTP 1.0. Код
состояния 200 означает, что запрос клиента был успешным и затребованные
данные будут переданы после заголовков. 2. После строки состояния
сервер передает клиенту информацию заголовка, содержащую данные о самом
сервере и затребованном документе. Пример HTTP-заголовка:
Date:
Fri, 20 Mar 1999 08:17:58 GMT Server: NCSA/1.5.2 Last-modified: Mon,
17 Jun 1996 21:53:08 GMT Content-type: text/html Content-lenght:
2482 Завершает заголовок пустая строка.
3. Если запрос клиента
успешен, то посылаются затребованные данные. Это может быть копия файла
или результат выполнения CGI-программы. Если запрос клиента удовлетворить
нельзя, передаются дополнительные данные в виде понятного для
пользователя разьяснения причин, по которым сервер не смог выполнить
данный запрос.
В HTTP 1.0 за передачей сервером затребованных
данных следует зазъединение с клиентом и транзакция считается
завершенной, если не передан заголовок Conection: Кeep Alive. В HTTP
1.1 сервер по умолчанию не разрывает соединение и клиент может посылать
другие запросы. Поскольку во многие документы встроены другие документы
- изображения, кадры, апплеты и т.д., это позволяет сэкономить время и
затраты клиента, которому в противном случае пришлось бы для получения
всего одной страницы многократно соединяться с одним и тем же сервером.
Таким образом, в HTTP 1.1 транзакция может циклически повторяться, пока
клиент или сервер не закроет соединение явно. HTTP не сохраняет
информацию по тразакциям, поэтому в следующей трнзакции
приходится начинать все заново. Преимущество состоит в том, что
HTTP-сервер может обслужить в заданный промежуток времени гораздо
больше клиентов, ибо устраняются дополнительные расходы на отслеживание
сеансов от одного соединения к другому. Есть и недостаток: для
сохранения информации по транзакциям более сложные CGI-программы должны
пользоваться скрытыми полями ввода или внешними средствами, например
"ключиками" NetScape. Запросы клиента Запросы клиента разбиваются на
три раздела. Первая строка сообщения всегда содержит HTTP-команду,
называемую методом, URI, который обозначает запрашиваемый клиентом
файл или ресурс, и номер версии HTTP. Следующие строки запроса клиента
содержат информацию заголовка. Информация заголовка содержит сведения о
клиенте и информационном объекте, который он посылает серверу. Третья
часть клиентского запроса представляет собой тело содержимого -
собственно данные, посылаемые серверу. URI (Uniform Resource
Identifier, универсальный идентификатор ресурса) - это общий термин для
всех допустимых форматов схем адресации, поддерживаемых в WWW.
Сейчас общепринятой является схема адресации с использованием
универсальных локаторов ресурсов (URL). Методы Метод - это
HTTP-команда, с которой начинается первая строка запроса клиента.
Метод сообщает серверу о цели запроса. Для HTTP определены три основных
метода: GET, HEAD и POST. Определены и другие методы, но они не так
широко поддерживаются серверами, как три перечисленных ( хотя эти
другие методы в будущем будут использоваться более часто). При задании
имен методов учитывается регистр, поэтому GET и get
различаются.
Метод GET. GET - зто запрос информации,
расположенной на сервере по указанному URL. GET - наиболее
распространенный метод поиска с помощью броузеров документов для
визуализации. Результат запроса GET может представлять собой, например,
файл, доступный для сервера, результат выполнения программы или
CGI-сценария, выходную информацию аппаратного устройства и т.д. Если
клиент пользуется в своем запросе методом GET, сервер отвечает строкой
состояния, заголовками и затребованными данными. Если сервер не может
обработать запрос вследствие ошибки или отсутствия полномочий, он, как
правило, посылает в информационном разделе ответа текстовое
пояснение. Тело информационного содержимого запроса GET всегда пустое.
GET в переводе на человеческий язык означает примерно следующее:"Дайте
мне этот файл". Для иднтификации указанных в запросе клиента файла или
программы обычно используется полное имя обьекта на сервере. Ниже
приведен пример успешного запроса GET на получение файла. Клиент посылает
запрос: GET /index.html HTTP/1.0 Connction:
Keep-Alive User-Agent: Mozilla/2.02Gold (WinNT; I) Host:
www.ora.com Accept: image/gif, image/x-xbitmap, image/jpeg,
image/pjpeg, */* Сервер отвечает: HTTP/1.0 200 Document
follows Date: Fri, 20 Sep 1996 08:17:58 GMT Server:
NCSA/1.5.2 Content-type: text/html Content-lenght: 2482 (далее
следует тело документа) Метод GET используется также для передачи выходной
информации в CGI-программы посредством тегов форм. Поскольку тело
запроса GET пусто, входные данные присоединяются к URL в строке GET
запроса. Если в теге
|