Slide 0
HTTP
Hypertext Transfer Protocol
вторник, 16 мая 2017 г.
Slide 1
Сетевые модели
Объединены в TCP/IP
Slide 2
Сетевая модель OSI
Slide 3
Сетевая модель TCP/IP
Slide 4
HTTP: достоинства и недостатки
Простота
Расширяемость
Распространённость
Размер сообщений
Отсутствие «навигации»
Нет поддержки распределённости
Протокол без поддержки состояния
Slide 5
Структура сообщений HTTP
Starting line определяет тип сообщения
Headers характеризуют тело сообщения
и параметры передачи
Message Body данные сообщения
Тело сообщения обязательно должно отделяться
от заголовков пустой строкой
Slide 6
Стартовая строка
Запрос:
Метод URI HTTP/Версия
GET /path/resource HTTP/1.1
Ответ:
HTTP/Версия КодСостояния Пояснение
HTTP/1.1 200 Ok
Slide 7
Методы HTTP
GET
POST
HEAD
OPTIONS
PUT
PATCH
DELETE
TRACE
CONNECT
LINK
UNLINK
Slide 8
Метод GET
Условный GET
If-Modified-Since
If-Match
If-Range
Передача параметров
GET /path/resource?param1=value1¶m2=value2 HTTP/1.1
Частичный GET
Range
Slide 9
Коды состояния
1xx Informational
2xx Success
3xx Redirection
4xx Client Error
5xx Server Error
Slide 10
Заголовки HTTP
General Headers
Request Headers
Response Headers
Entity Headers
Каждый заголовок – разделённая двоеточием пара «параметр-значение»
Slide 11
Пример HTTP-запроса
GET /path/resource HTTP/1.1
Host: www.mysite.ru
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)
Accept: text/html
Connection: close
Slide 12
Пример HTTP-ответа
HTTP/1.1 200 OK
Date: Wed, 24 Feb 2010 11:20:59 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5wm1
Last-Modified: Wed, 24 Feb 2010 11:20:59 GMT
Content-Language: ru
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close
Slide 13
Пример с несколькими сущностями
POST /path/resource HTTP/1.1
Host: www.mysite.ru
Referer: http://www.mysite.ru/path/resource
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)
Content-Type: multipart/form-data; boundary=“separator”
Content-Length: (суммарный объём включая дочерние заголовки)
Connection: keep-alive
Keep-Alive: timeout=300
(пустая строка)
Slide 14
Продолжение примера
(пустая преамбула)
--separator
Content-Disposition: form-data; name=“Description”
(пустая строка)
Описание картинки
--separator
Content-Disposition: form-data; name=“AttachedFile”; filename=“photo.jpg”
Content-Type: image/jpeg
(пустая строка)
(двоичное содержимое первой фотографии)
--separator
(отсутствующий эпилог)
Slide 15
HTTPS
SSL - Secure Sockets Layer
TLS - Transport Layer Security
Slide 16
Рукопожатие – “Handshake”
клиент предоставляет список поддерживаемых алгоритмов шифрования и хеш-функций;
сервер выбирает из этого списка наиболее устойчивые алгоритмы и сообщает о своем выборе клиенту;
сервер отправляет клиенту цифровой сертификат и открытый ключ для собственной идентификации;
клиент шифрует случайно сгенерированную цифровую последовательность (ключ сессии) открытым ключом сервера и посылает результат на сервер;
только сервер может расшифровать полученную последовательность, используя свой закрытый ключ.
Slide 17
Встраивание слоя SSL/TLS
Slide 18
cookie
GET /index.html HTTP/1.1Host: www.mysite.ru
HTTP/1.1 200 OKContent-type: text/htmlSet-Cookie: name=value
GET /about.html HTTP/1.1Host: www.mysite.ruCookie: name=value
Set-Cookie: name=value; expires=date; path=/; domain=.mysite.ru
Set-Cookie: RMID=732423sdfs73242; expires=Fri, 31-Dec-2010 23:59:59 GMT; path=/; domain=.mysite.ru