Протокол HTTP

Протоколы прикладного уровня представляют собой протоколы верхнего (7) уровня модели взаимодействия открытых систем OSI, обеспечивающие взаимодействие сети и пользователя.

Протокол HTTP (HyperText Transfer Protocol, протокол передачи гипертекста) — протокол прикладного уровня передачи данных (изначально — в виде гипертекстовых документов). Данный протокол был разработан как основа World Wide Web. Работа протокола HTTP осуществляется по технологии «клиент-сервер»: программа-клиент устанавливает TCP-соединение с сервером (стандартный номер порта-80) и выдает ему HTTP-запрос. Сервер обрабатывает этот запрос и выдает HTTP-ответ клиенту.

Структура HTTP-запроса

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

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

  • Метод (команда HTTP):
  • POST – применяется для передачи данных CGI-скриптам; сами данные следуют в последующих строках запроса в виде параметров;
  • GET – запрос документа;
  • HEAD – запрос заголовка документа; отличается от GET тем, что выдается только заголовок запроса с информацией о документе, сам документ не выдается;
  • PUT – разместить документ на сервере; запрос с этим методом обязательно имеет тело, в котором передается сам документ.
  • Ресурс – это путь к определенному файлу на сервере, который клиент хочет получить. Если ресурс – просто какой-либо файл для считывания, сервер должен по этому запросу выдать его в теле ответа. Если же это путь к CGI-скрипту, то сервер запускает скрипт и возвращает результат его выполнения.
  • Версия протокола – версия протокола HTTP, с которой работает клиентская программа.

Таким образом, простейший HTTP-запрос может выглядеть следующим образом: HEAD / HTTP /1.1 (запрашивается информация о корневом файле из корневой директории web-сервера).

Строки после главной строки запроса имеют формат <Параметр: значениe>.

К наиболее часто употребляемым параметрам HTTP-запросов можно отнести:

  • Connection (соединение) – может принимать значения «Keep-Alive» и «close». Keep-Alive («оставить в живых») означает, что после выдачи данного документа соединение с сервером не разрывается, и можно выдавать еще запросы. Большинство браузеров работают в режиме Keep-Alive, так как он позволяет за одно соединение с сервером загрузить html-страницу и рисунки к ней. Будучи установленным, режим Keep-Alive сохраняется до первой ошибки или до явного указания в запросе Connection: close («закрыть» – соединение закрывается после ответа на данный запрос).
  • User-Agent – значением является «кодовое обозначение» браузера, например: Mozilla/6.0 (compatible; MSIE 7.0; Windows 7; DigExt)
  • Accept – список поддерживаемых браузером типов содержимого в порядке их предпочтения данным браузером, например: Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, application/vnd.ms-excel, и т.д. Значение этого параметра используется в основном CGI-скриптами для формирования ответа, адаптированного для браузера.
  • Referer – URL, с которого перешли на этот ресурс.
  • Host – имя хоста, с которого запрашивается ресурс. Полезно, если на сервере имеется несколько виртуальных серверов под одним IP-адресом. В этом случае имя виртуального сервера определяется по этому полю.
  • Accept-Language – поддерживаемый язык. Имеет значение для сервера, который может выдавать один и тот же документ в разных языковых версиях.

Структура HTTP-ответа

Структура ответа очень похожа на структуру запроса: ответ также имеет заголовок и тело, разделенное пустой строкой.
Заголовок также состоит из основной строки и строк параметров.

Основная строка запроса состоит из 3-х полей, разделенных пробелами:

  • Версия протокола – аналогично соответствующему параметру запроса.
  • Код ошибки – кодовое обозначение результата выполнения запроса, например, код 200.
  • Словесное описание ошибки – «расшифровка» предыдущего кода. Например, для 200 это OK, для 500 – Internal Server Error.

К наиболее часто употребляемым параметрам HTTP-ответов можно отнести:

  • Connection – аналогичен соответствующему параметру запроса. Если сервер не поддерживает Keep-Alive (есть и такие), то значение Connection в ответе всегда close.
  • Content-Type – обозначение типа содержимого ответа. В зависимости от значения Content-Type браузер воспринимает ответ как HTML-страницу, картинку gif или jpeg, как файл, который надо сохранить на диске, или как что-либо еще и предпринимает соответствующие действия. Значение Content-Type для браузера аналогично значению расширения файла для Windows. Некоторые типы содержимого: text/html – текст в формате HTML (веб-страница); text/plain – простой текст (аналогичен “блокнотовскому”); image/jpeg – картинка в формате JPEG; image/gif – то же, в формате GIF; application/octet-stream – поток “октетов” (т.е. просто байт) для записи на диск, и т.д.
  • Content-Length – длина содержимого ответа в байтах.
  • Last-Modified – дата последней модификации документа.
Узнай цену консультации

"Да забей ты на эти дипломы и экзамены!” (дворник Кузьмич)