HTTP
HyperText Transfer Protocol
«протокол передачи гипертекста»
Бибилов Иван Владимирович

ШРИ, Екатеринбург, осень-2013
Гипертекст — термин, введённый Тедом Нельсоном в 1963 году
для обозначения текста «ветвящегося или выполняющего
действия по запросу». Обычно гипертекст представляется
набором текстов, содержащих узлы перехода между ними,
которые позволяют избирать читаемые сведения или
последовательность чтения.
HTML – частный случай гипертекста
Сила в
гиперссылках!
Изобрел
WWW,
HTTP,
URI (URL),
HTML.
URN, URL, URI
isbn:978-5-5128-2556-3
http://news.yandex.ru/world.html

<схема>://<логин>:<пароль>@<хост>:<порт>/<URL‐путь>?<параметры>#<якорь>
Классический клиент-сервер
Они общаются,
соблюдая протокол – HTTP
http://playboyarchive.com/
GET / HTTP/1.1
Host: playboyarchive.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0)
Gecko/20100101 Firefox/20.0
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie:
__utma=37709153.422365961.1364128733.1364128733.1364128733.1;
__utmz=37709153.1364128733.1.1.utmcsr=(direct)|utmccn=(direct)|
utmcmd=(none)
Connection: keep-alive
HTTP/1.1 200 OK
Content-Type: text/html
Content-Encoding: gzip
Last-Modified: Tue, 17 May 2011 18:53:33 GMT
Accept-Ranges: bytes
Etag: "2a32ddb8c314cc1:0"
Vary: Accept-Encoding
Server: Microsoft-IIS/7.0
X-Powered-By: ASP.NET
Date: Sun, 07 Apr 2013 06:58:05 GMT
Content-Length: 1064
WWW погружена в Интернет
WWW погружена в Интернет
Сетевая модель OSI (open systems interconnection basic reference model —
базовая эталонная модель взаимодействия открытых систем)
●

Прикладной

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

●

Представления

●

Сеансовый

●

Транспортный

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

●

Сетевой

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

●

Канальный

●

Физический
Матрешка пакетов (инкапсуляция)
Как это работает?
●

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.1
Host: www.cbr.ru
Content-Type: text/xml; charset=utf-8
Content-Length: 308
SOAPAction: "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 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 371
Content-Type: text/xml; charset=utf-8
Expires: -1
Server: Microsoft-IIS/7.0
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
X-Powered-By: ASP.NET
Date: 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 грядет

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

  • 1.
    HTTP HyperText Transfer Protocol «протоколпередачи гипертекста» Бибилов Иван Владимирович ШРИ, Екатеринбург, осень-2013
  • 3.
    Гипертекст — термин,введённый Тедом Нельсоном в 1963 году для обозначения текста «ветвящегося или выполняющего действия по запросу». Обычно гипертекст представляется набором текстов, содержащих узлы перехода между ними, которые позволяют избирать читаемые сведения или последовательность чтения. HTML – частный случай гипертекста
  • 6.
  • 8.
  • 10.
  • 11.
  • 12.
  • 13.
    http://playboyarchive.com/ GET / HTTP/1.1 Host:playboyarchive.com User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Cookie: __utma=37709153.422365961.1364128733.1364128733.1364128733.1; __utmz=37709153.1364128733.1.1.utmcsr=(direct)|utmccn=(direct)| utmcmd=(none) Connection: keep-alive HTTP/1.1 200 OK Content-Type: text/html Content-Encoding: gzip Last-Modified: Tue, 17 May 2011 18:53:33 GMT Accept-Ranges: bytes Etag: "2a32ddb8c314cc1:0" Vary: Accept-Encoding Server: Microsoft-IIS/7.0 X-Powered-By: ASP.NET Date: Sun, 07 Apr 2013 06:58:05 GMT Content-Length: 1064
  • 14.
    WWW погружена вИнтернет
  • 15.
    WWW погружена вИнтернет Сетевая модель OSI (open systems interconnection basic reference model — базовая эталонная модель взаимодействия открытых систем) ● Прикладной Построена на базе стека протоколов TCP/IP. ● Представления ● Сеансовый ● Транспортный HTTP – протокол прикладного уровня, TCP-порт – 80. ● Сетевой В самом низу – Ethernet, WiFi ● Канальный ● Физический
  • 16.
  • 17.
    Как это работает? ● ARP ● DNS(через UDP) ● TCP-соединение ● HTTP
  • 18.
  • 26.
    HTTP. Актуальные версии– 1.0, 1.1 ● Текстовый, человекочитаемый ● Простой ● Не хранит состояния ● Нет шифрования
  • 27.
    HTTP, методы ● GET –запрос содержимого. ● POST – передача параметров. ● HEAD – только заголовки, без тела. ● PUT – загрузить содержимое. ● DELETE – удалить ресурс.
  • 28.
    Коды ответов ● 1xx Informational(«Информационный») ● 2xx Success («Успех») ● 3xx Redirection («Перенаправление») ● 4xx Client Error («Ошибка клиента») ● 5xx Server Error («Ошибка сервера»)
  • 29.
    Заголовки ● Authorization: Basic QwxhZGRpbjpvcGVuIHNlc2FtZQ== ● Authorization: Digestusername=... ● 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
  • 30.
    HTTPS Обычный HTTP, работающийчерез шифрованные транспортные механизмы SSL и TLS. TCP-порт 443
  • 31.
    HTTP может служитьтранспортом (SOAP, RPC) POST /DailyInfoWebServ/DailyInfo.asmx HTTP/1.1 Host: www.cbr.ru Content-Type: text/xml; charset=utf-8 Content-Length: 308 SOAPAction: "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 OK Cache-Control: no-cache Pragma: no-cache Content-Length: 371 Content-Type: text/xml; charset=utf-8 Expires: -1 Server: Microsoft-IIS/7.0 X-AspNet-Version: 2.0.50727 X-Powered-By: ASP.NET X-Powered-By: ASP.NET Date: 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>
  • 32.
    REST (Representational StateTransfer), стиль построения архитектуры распределенного приложения ● Небольшое число форматов (XML, JSON) ● «Запрос-ответ» ● Нет сохранения состояния
  • 33.
    WebSocket Протокол полнодуплексной связиповерх TCPсоединения, предназначенный для обмена сообщениями между браузером и веб-сервером в режиме реального времени.
  • 34.