HTTP Hypertext Transfer Protocol среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.
Сетевые модели Объединены в 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 Starting line определяет тип сообщения Headers Headers характеризуют тело сообщения и параметры передачи Message Body Message Body данные сообщения Тело сообщения обязательно должно отделяться от заголовков пустой строкой
Стартовая строка Запрос: Метод URI HTTP/Версия GET /path/resource HTTP/1.1 Ответ: HTTP/Версия КодСостояния Пояснение HTTP/ Ok
Методы HTTP GET POST HEAD OPTIONS PUT PATCH DELETE TRACE CONNECT LINK UNLINK
Метод GET Условный GET If-Modified-Since If-Match If-Range Передача параметров GET /path/resource?param1=value1¶m2=value2 HTTP/1.1 Частичный GET Range
Коды состояния 1xxInformational 2xxSuccess 3xxRedirection 4xxClient Error 5xxServer Error
Заголовки HTTP General Headers Request Headers Response Headers Entity Headers Каждый заголовок – разделённая двоеточием пара «параметр-значение»
Пример HTTP-запроса GET /path/resource HTTP/1.1 Host: User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) Accept: text/html Connection: close
Пример HTTP-ответа HTTP/ OK Date: Wed, 24 Feb :20:59 GMT Server: Apache X-Powered-By: PHP/ ubuntu5wm1 Last-Modified: Wed, 24 Feb :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: Referer: 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 SSL - Secure Sockets Layer TLS TLS - Transport Layer Security
Рукопожатие – Handshake клиент предоставляет список поддерживаемых алгоритмов шифрования и хеш-функций; сервер выбирает из этого списка наиболее устойчивые алгоритмы и сообщает о своем выборе клиенту; сервер отправляет клиенту цифровой сертификат и открытый ключ для собственной идентификации; клиент шифрует случайно сгенерированную цифровую последовательность (ключ сессии) открытым ключом сервера и посылает результат на сервер; только сервер может расшифровать полученную последовательность, используя свой закрытый ключ.
Встраивание слоя SSL/TLS
cookie GET /index.html HTTP/1.1 Host: HTTP/ OK Content-type: text/html Set-Cookie: name=value GET /about.html HTTP/1.1 Host: Cookie: name=value Set-Cookie: name=value; expires=date; path=/; domain=.mysite.ru Set-Cookie: RMID=732423sdfs73242; expires=Fri, 31-Dec :59:59 GMT; path=/; domain=.mysite.ru