Иван Бибилов: http-протокол

34
HTTP HyperText Transfer Protocol «протокол передачи гипертекста» Бибилов Иван Владимирович ШРИ, Екатеринбург, осень-2013

Upload: yandex

Post on 11-Jun-2015

4.506 views

Category:

Documents


1 download

TRANSCRIPT

HTTPHyperText Transfer Protocol

«протокол передачи гипертекста»

Бибилов Иван ВладимировичШРИ, Екатеринбург, осень-2013

Гипертекст — термин, введённый Тедом Нельсоном в 1963 году для обозначения текста «ветвящегося или выполняющего действия по запросу». Обычно гипертекст представляется набором текстов, содержащих узлы перехода между ними, которые позволяют избирать читаемые сведения или последовательность чтения.

HTML – частный случай гипертекста

Сила в гиперссылках!

Изобрел

WWW, HTTP,URI (URL), HTML.

URN, URL, URI

isbn:978-5-5128-2556-3http://news.yandex.ru/world.html

<схема>://<логин>:<пароль>@<хост>:<порт>/<URL путь>?<параметры>#<якорь>‐

Классический клиент-сервер

Они общаются, соблюдая протокол – HTTP

http://playboyarchive.com/

GET / HTTP/1.1Host: playboyarchive.comUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3Accept-Encoding: gzip, deflateCookie: __utma=37709153.422365961.1364128733.1364128733.1364128733.1; __utmz=37709153.1364128733.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)Connection: keep-aliveHTTP/1.1 200 OKContent-Type: text/htmlContent-Encoding: gzipLast-Modified: Tue, 17 May 2011 18:53:33 GMTAccept-Ranges: bytesEtag: "2a32ddb8c314cc1:0"Vary: Accept-EncodingServer: Microsoft-IIS/7.0X-Powered-By: ASP.NETDate: Sun, 07 Apr 2013 06:58:05 GMTContent-Length: 1064

WWW погружена в Интернет

WWW погружена в Интернет

Построена на базе стека протоколов TCP/IP.

HTTP – протокол прикладного уровня, TCP-порт – 80.

В самом низу – Ethernet, WiFi

● Прикладной ● Представления● Сеансовый● Транспортный● Сетевой● Канальный● Физический

Сетевая модель OSI (open systems interconnection basic reference model — базовая эталонная модель взаимодействия открытых систем)

Матрешка пакетов (инкапсуляция)

Как это работает?

● ARP● DNS (через UDP)● TCP-соединение● HTTP

Cisco Packet Tracer

HTTP. Актуальные версии – 1.0, 1.1

● Текстовый, человекочитаемый● Простой● Не хранит состояния● Нет шифрования

HTTP, методы

● GET – запрос содержимого.● POST – передача параметров.● HEAD – только заголовки, без тела.● PUT – загрузить содержимое.● DELETE – удалить ресурс.

Коды ответов

● 1xx Informational («Информационный»)● 2xx Success («Успех»)● 3xx Redirection («Перенаправление»)● 4xx Client Error («Ошибка клиента»)● 5xx Server Error («Ошибка сервера»)

Заголовки● Authorization: Basic QwxhZGRpbjpvcGVuIHNlc2FtZQ==

● Authorization: Digest username=...● Content-Length: 34567● If-Modified-Since: Sat, 19 Oct 2013 13:41:13 GMT

● Accept: text/plain● Connection: Keep-Alive● Cookie: name=value● Set-Cookie: name=value

HTTPSОбычный HTTP, работающий через шифрованные транспортные механизмы SSL и TLS. TCP-порт 443

HTTP может служить транспортом(SOAP, RPC)

POST /DailyInfoWebServ/DailyInfo.asmx HTTP/1.1Host: www.cbr.ruContent-Type: text/xml; charset=utf-8Content-Length: 308SOAPAction: "http://web.cbr.ru/GetLatestDate"

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <GetLatestDate xmlns="http://web.cbr.ru/" /> </soap:Body></soap:Envelope>HTTP/1.1 200 OKCache-Control: no-cachePragma: no-cacheContent-Length: 371Content-Type: text/xml; charset=utf-8Expires: -1Server: Microsoft-IIS/7.0X-AspNet-Version: 2.0.50727X-Powered-By: ASP.NETX-Powered-By: ASP.NETDate: Mon, 21 Oct 2013 09:48:00 GMT

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetLatestDateResponse xmlns="http://web.cbr.ru/"><GetLatestDateResult>20131019</GetLatestDateResult></GetLatestDateResponse></soap:Body></soap:Envelope>

REST (Representational State Transfer), стиль построения архитектуры распределенного приложения

● Небольшое число форматов (XML, JSON)

● «Запрос-ответ»

● Нет сохранения состояния

WebSocket Протокол полнодуплексной связи поверх TCP-соединения, предназначенный для обмена сообщениями между браузером и веб-сервером в режиме реального времени.

HTTP 2.0 грядет