Слайд 2
Назначение
HTTP (HyperText Transfer Protocol) - «протокол передачи гипертекста»)
прикладной протокол стека TCP/IP;
символьный, клиент-серверный
основной протокол WWW;
«транспорт» для других
прикладных протоколов (SOAP, XML-RPC, WebDAV …);
HTTP/1.0 - RFC 1945, HTTP/1.1 - RFC 2616
Слайд 3
Участники обмена
Веб-серверы — поставщики услуг хранения и обработки
информации
Apache, IIS, nginx ...
Клиенты — конечные потребители услуг сервера
Браузеры:
Mozilla, IE, Opera, Safari, Chrome …
Роботы: пауки, кроулеры, дятлы & so on...
Прокси-серверы — транспортные посредники (кэширование данных)
Squid, Naviscope, Kerio, UserGate ...
Слайд 4
Процедура обмена
in nuce:
Клиент запрашивает ресурс (по URI)
Прокси-сервер проверяет
запрос на наличие ресурса в кэше (hit || miss)
Веб-сервер
возвращает запрошенный ресурс
Слайд 5
Структура протокола
Стартовая строка
Методы
Заголовки
Коды состояния
Тело сообщения
Слайд 6
Стартовая строка
Запрос клиента
Метод Ресурс Протокол/Версия
GET /index.html HTTP/1.1
Ответ сервера
Протокол/Версия
КодСостояния Пояснение
HTTP/1.0 200 OK
Слайд 7
Методы протокола
GET - запрос содержимого
GET /path/resource?param1=value1 HTTP/1.1
Данные передаются
в адресной строке
Условные GET содержат заголовки If-Modified-Since, If-Match и
подобные (кэширование)
Частичные GET содержат в запросе Range (докачка, многопоточное скачивание)
Слайд 8
Еще методы...
POST - применяется для передачи пользовательских данных
(из веб-форм) и загрузки файлов на сервер.
Данные передаются
в теле запроса
Повторные запросы могут изменять возвращаемые результаты
Ответы сервера не кэшируются
Слайд 9
Опять методы...
OPTIONS - определение возможностей веб-сервера и/или параметров
соединения
HEAD - применяется для извлечения метаданных и валидации ресурса
(link check)
TRACE - Возвращает полученный запрос так, что клиент может увидеть, что́ прокси-сервера добавляют или изменяют в запросе
Слайд 10
Снова методы...
PUT - Применяется для загрузки содержимого запроса
по указанному адресу.
PATCH - Аналогично PUT, но применяется только
к фрагменту ресурса.
DELETE - Удаляет указанный ресурс.
LINK - Устанавливает связь указанного ресурса с другими.
CONNECT - используется для туннелирования трафика
Слайд 11
Заголовки
General Headers ― должны включаться в любое сообщение
клиента и сервера
Request Headers ― только в запросах клиента
Response
Headers ― только в ответах сервера
Entity Headers ― сопровождают каждую сущность сообщения, применяются при передаче множественного содержимого
Слайд 12
Пример обмена
Запрос:
GET /index.html HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; U;
Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5
Accept: text/html
Connection: close
Ответ:
HTTP/1.0 200
OK
Date: Wed, 11 Feb 2009 11:20:59 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5wm1
Last-Modified: Wed, 11 Feb 2009 11:20:59 GMT
Content-Language: ru
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close
тут пустая строка (обязательно!)
...
Слайд 13
Коды состояния
1xx Informational — Состояние процесса передачи
2xx Success
— Успешное выполнение
3xx Redirection — Перенаправление
4xx Client Error —
Ошибки клиента
5xx Server Error — Ошибки сервера
Слайд 14
Тело сообщения
Непосредственно запрошенные данные
гипертекст, двоичные данные
Тип определяется значением
заголовка Content-Type
Content-Type: text/html;
MIME types
Multipurpose Internet Mail Extensions
text/html, text/plain, multypart/mixed,
text/xml, application/xml...
(подробно: http://www.iana.org/assignments/media-types/media-types.xhtml)
Слайд 15
Pro et Contra
Достоинства - простота, расширяемость, распространённость
Недостатки -
большой размер сообщений, отсутствие «навигации» (клиент не может явным
образом запросить список доступных файлов, как в протоколе FTP), нет поддержки распределённых вычислений
В 1998 году W3C предложил альтернативный протокол HTTP-NG: до сих пор на стадии разработки.