пустая строка

advertisement
HTTP
Hypertext Transfer Protocol
суббота, 7 мая 2016 г.
Сетевые модели
Объединены в TCP/IP
Сетевая модель OSI
7 Прикладной
HTTP, SMTP, SNMP, FTP,
Telnet, NFS, RTSP, BGP
6 Представительный
XML, XDR, ASN.1, SMB, AFP
5 Сеансовый
TLS, SSL, ISO 8327 / CCITT X.225,
RPC, NetBIOS, ASP
4 Транспортный
TCP, UDP, RTP, SCTP, SPX,
ATP, DCCP, GRE
3 Сетевой
IP, ICMP, IGMP, CLNP, ARP, RARP,
OSPF, RIP, IPX, DDP
2 Канальный
Ethernet, Token ring, PPP, HDLC,
X.25, Frame relay, ISDN, ATM, Wi-Fi
1 Физический
электричество, радио, лазер
Сетевая модель TCP/IP
Прикладной
HTTP, FTP, DNS
(RIP, работающий поверх UDP, и BGP,
работающий поверх TCP, являются частью
сетевого уровня)
4 Транспортный напр. TCP, UDP, RTP, SCTP, DCCP
(OSPF, работающий поверх IP, является
частью сетевого уровня)
3 Межсетевой
IP (вспомогательные протоколы, например
ICMP и IGMP работают поверх IP, но
являются частью сетевого уровня; ARP не
работает поверх IP)
2 Канальный
Ethernet, Token ring и др.
1 Физический
T1, E1, UTP
HTTP: достоинства и недостатки
+Простота
+Расширяемость
+Распространённость
Размер сообщений
Отсутствие «навигации»
Нет поддержки распределённости
Протокол без поддержки состояния
Структура сообщений HTTP
Starting line
определяет тип сообщения
Headers
характеризуют тело сообщения
и параметры передачи
Message Body
данные сообщения
Тело сообщения обязательно должно отделяться
от заголовков пустой строкой
Стартовая строка
Запрос:
Метод URI HTTP/Версия
GET /path/resource HTTP/1.1
Ответ:
HTTP/Версия КодСостояния Пояснение
HTTP/1.1 200 Ok
Методы HTTP
GET
POST
HEAD
OPTIONS
PUT
PATCH
DELETE
TRACE
CONNECT
LINK
UNLINK
Метод GET
Передача параметров
GET /path/resource?param1=value1&param2=value2 HTTP/1.1
Условный GET
If-Modified-Since
If-Match
If-Range
Частичный GET
Range
Коды состояния
1xx
2xx
Informational
Success
3xx
4xx
5xx
Redirection
Client Error
Server Error
Заголовки HTTP
General Headers
Request Headers
Response Headers
Entity Headers
Каждый заголовок – разделённая двоеточием
пара «параметр-значение»
Пример 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
Пример 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
Пример с несколькими сущностями
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
(пустая строка)
Продолжение примера
(пустая преамбула)
--separator
Content-Disposition: form-data; name=“Description”
(пустая строка)
Описание картинки
--separator
Content-Disposition: form-data; name=“AttachedFile”; filename=“photo.jpg”
Content-Type: image/jpeg
(пустая строка)
(двоичное содержимое первой фотографии)
--separator
(отсутствующий эпилог)
HTTPS
SSL - Secure Sockets Layer
TLS - Transport Layer Security
Рукопожатие – “Handshake”
клиент предоставляет список поддерживаемых алгоритмов
шифрования и хеш-функций;
сервер выбирает из этого списка наиболее устойчивые
алгоритмы и сообщает о своем выборе клиенту;
сервер отправляет клиенту цифровой сертификат и
открытый ключ для собственной идентификации;
клиент шифрует случайно сгенерированную цифровую
последовательность (ключ сессии) открытым ключом
сервера и посылает результат на сервер;
только сервер может расшифровать полученную
последовательность, используя свой закрытый ключ.
Встраивание слоя SSL/TLS
cookie
GET /index.html HTTP/1.1
Host: www.mysite.ru
HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: name=value
GET /about.html HTTP/1.1
Host: www.mysite.ru
Cookie: 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
Download