Hypertext Transfer Protocol (HTTP) Протокол передачи гипертекста
Основные сведения Уровень ( по модели OSI): Прикладной Семейство : TCP/IP Создан в : 1990 г. Порт /ID: 80/TCP, 8080/TCP Назначение : Доступ к гипертексту, ныне стал универсальным Спецификация : RFC 1945, RFC 2616RFC 1945RFC 2616 Основные реализации ( клиенты ): Веб - браузеры, например Internet Explorer, Mozilla Firefox, Opera, Google Chrome и др. Основные реализации ( серверы ): Apache, IIS и др.
Основные сведения Передача данных в первую очередь в виде текстовых сообщений. Основой HTTP является технология « клиент - сервер ». HTTP в настоящее время повсеместно используется во Всемирной паутине для получения информации с веб - сайтов HTTP используется также в качестве « транспорта » для других протоколов прикладного уровня, таких как SOAP. Основным объектом манипуляции в HTTP является ресурс, на который указывает URI ( англ. Uniform Resource Identifier) в запросе клиента. Особенностью протокола HTTP является возможность указать в запросе и ответе способ представления одного и того же ресурса по различным параметрам : формату, кодировке, языку и т. д. В отличие от многих других протоколов, HTTP не сохраняет своего состояния. Это означает отсутствие сохранения промежуточного состояния между парами « запрос - ответ ».
Достоинства Простота Расширяемость Распространённость
Недостатки и проблемы Большой размер сообщений Отсутствие « навигации » Нет поддержки распределённости
Программное обеспечение Серверы как основные поставщики услуг хранения и обработки информации ( обработка запросов ). Клиенты конечные потребители услуг сервера ( отправка запроса ). Прокси для выполнения транспортных служб.
Структура протокола Каждое HTTP- сообщение состоит из трёх частей, которые передаются в указанном порядке : 1. Стартовая строка ( англ. Starting line) определяет тип сообщения ; 2. Заголовки ( англ. Headers) характеризуют тело сообщения, параметры передачи и прочие сведения ; 3. Тело сообщения ( англ. Message Body) непосредственно данные сообщения. Обязательно должно отделять от заголовков пустой строкой.
Стартовая строка запроса Метод URI HTTP/ Версия Метод ( англ. Method) название запроса, одно слово заглавными буквами. В версии HTTP 0.9 использовался только метод GET, список запросов для версии 1.1 представлен ниже. URI определяет путь к запрашиваемому документу. Версия ( англ. Version) пара разделённых точкой арабских цифр. Например : 1.0. GET /main.html HTTP/1.0
Стартовая строка ответа HTTP/ Версия КодСостояния Пояснение Версия пара разделённых точкой арабских цифр как в запросе. КодСостояния ( англ. Status Code) три арабские цифры. По коду статуса определяется дальнейшее содержимое сообщения и поведение клиента. Пояснение ( англ. Reason Phrase) текстовое короткое пояснение к коду ответа для пользователя. Никак не влияет на сообщение и является необязательным. HTTP/ Ok
Методы OPTIONS Используется для определения возможностей веб - сервера или параметров соединения для конкретного ресурса. GET Используется для запроса содержимого указанного ресурса. Клиент может передавать параметры выполнения запроса в URI целевого ресурса после символа «?»: GET /path/resource?param1=value1¶m2=value2 HTTP/1.1 HEAD Аналогичен методу GET, за исключением того, что в ответе сервера отсутствует тело.
Методы POST Применяется для передачи пользовательских данных заданному ресурсу. PUT Применяется для загрузки содержимого запроса на указанный в запросе URI. PATCH Аналогично PUT, но применяется только к фрагменту ресурса. CONNECT Для использования вместе с прокси - серверами, которые могут динамически переключаться в туннельный режим SSL. LINK Устанавливает связь указанного ресурса с другими. UNLINK Убирает связь указанного ресурса с другими.
Коды состояния 1xx Informational ( Информационный ) 2xx Success ( Успешно ) 3xx Redirection ( Перенаправление ) Коды статуса класса 3xx сообщают клиенту что для успешного выполнения операции нужно произвести следующий запрос к другому URI. В большинстве случаев новый адрес указывается в поле Location заголовка. Клиент в этом случае должен, как правило, произвести автоматический переход ( редирект ). 4xx Client Error ( Ошибка клиента ) 5xx Server Error ( Ошибка сервера )
Примеры диалогов HTTP Обычный GET- запрос GET /main.html HTTP/1.1 Host: sample.org User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/ Firefox/3.0b5 Accept: text/html Connection: close
Ответ сервера HTTP/ OK Date: Wed, 11 Feb :20:59 GMT Server: Apache X-Powered-By: PHP/ ubuntu5wm1 Last-Modified: Wed, 11 Feb :20:59 GMT Content-Language: ru Content-Type: text/html; charset=utf-8 Content-Length: 1234 Connection: close (далее следует запрошенная страница в HTML)
Перенаправления GET /about.html HTTP/1.1 Host: User-Agent: MyLonelyBrowser/5.0 HTTP/1.x 301 Moved Permanently Location: Date: Thu, 19 Feb :08:01 GMT Server: Apache/2.2.4 Content-Type: text/html; charset=windows-1251 Content-Length: 110 (пустая строка) Click here
Материалы доступны по адресу