SlideShare a Scribd company logo
1 of 28
Протокол HTTP
Определение HTTP
 HTTP - Hypertext Transfer Protocol
 Протокол – правила, в соответствии с которыми осуществляется передача
данных
 Гипертекст – текст с активными ссылками на другие тексты или части текста
 HTTP – протокол прикладного уровня (в модели OSI) передачи данных
 Повсеместно используется в World Wide Web
Взаимодействие «клиент – сервер»
 Клиент – потребитель, запрашивает информацию
 Сервер – поставщик, предоставляет информацию по запросу
 Типы клиентов:
 Тонкий клиент переносит все задачи по обработке информации на сервер.
Пример: браузер
 Толстый клиент сам производит обработку информации независимо от
сервера, использует сервер в основном для хранения данных. Пример:
бухгалтерские приложения 1С
HTTP – протокол «без памяти»
 «Без памяти» - протокол не хранит информацию о предыдущих запросах
клиентов и ответах сервера.
 Каждый новый запрос – новая транзакция (взаимодействие)
 Запросы никак не связаны друг с другом (с т.з. протокола)
 При разрыве связи передача прекращается, возобновить ее в рамках
протокола без памяти нет возможности
 Чтобы продолжить передачу сообщения, нужна новая транзакция
 Клиент или сервер могут эту информацию хранить самостоятельно
Схема HTTP-сеанса
 Установление TCP-соединения
 Запрос клиента
 Ответ сервера
 Разрыв TCP-соединения
HTTP-запросы
Формат HTTP-запроса
Формат строки состояния:
метод_запроса URL_pecypca версия_протокола_НТТР
GET /mypage.html HTTP/1.0
Поля заголовка
Поля заголовкаHTTP -запроса Значение
Host Доменное имя или IP-адрес узла, к которому обращается клиент
Referer URL документа, который ссылается на ресурс, указанный в
строке состояния
From Адрес электронной почты пользователя, работающего с
клиентом
Accept MIME-типы данных, обрабатываемых клиентом. Это поле может
иметь несколько значений, отделяемых одно от другого
запятыми. Часто поле заголовка Accept используется для того,
чтобы сообщить серверу о том, какие типы графических файлов
поддерживает клиент
Accept-Language Набор двухсимвольных идентификаторов, разделенных
запятыми, которые обозначают языки, поддерживаемые
клиентом
Accept-Charset Перечень поддерживаемых наборов символов
Content-Type MIME-тип данных, содержащихся в теле запроса (если запрос не
состоит из одного заголовка)
Content-Length Число символов, содержащихся в теле запроса (если запрос не
состоит из одного заголовка)
Range Присутствует в том случае, если клиент запрашивает не весь
документ, а лишь его часть
Connection Используется для управления TCP-соединением. Если в поле
содержится Close, это означает, что после обработки запроса
сервер должен закрыть соединение. Значение Keep-Alive
предлагает не закрывать TCP-соединение, чтобы оно могло быть
использовано для последующих запросов
User-Agent Информация о клиенте
Спецификация MIME
 MIME (Multipurpose Internet Mail Extension) — многоцелевое почтовое
расширение Internet
 Для описания формата данных используются тип и подтип
 Тип и подтип отделяются косой чертой:
тип/подтип
MIME типы данных
Тип/подтип Расширение файла Описание
application/pdf .pdf Документ, предназначенный для обработки
Acrobat Reader
application/msexcel .xls Документ в формате Microsoft Excel
application/postscript .ps, .eps Документ в формате PostScript
application/x-tex .tex Документ в формате ТеХ
application/msword .doc Документ в формате Microsoft Word
application/rtf .rtf Документ в формате RTF, отображаемый с
помощью Microsoft Word
image/gif .gif Изображение в формате GIF
image/ jpeg .jpeg, .jpg, Изображение в формате JPEG
image/tiff .tiff, .tif Изображение в формате TIFF
image/x-xbitmap .xbm Изображение в формате XBitmap
text/plain .txt ASCII-текст
text/html . html , . htm Документ в формате HTML
audio/midi .midi, .mid Аудиофайл в формате MIDI
audio/x-wav .wav Аудиофайл в формате WAV
message/rfc822 Почтовое сообщение
message/news Сообщение в группы новостей
video /mpeg .mpeg, .mpg, .mpe Видеофрагмент в формате MPEG
video/avi .avi Видеофрагмент в формате AVI
Методы HTTP
 GET – «получить»
 предназначается для получения ресурса с указанным URL
Пример:
GET /mypage.html HTTP/1.0
 HEAD – «заголовок»; модификация метода GET
 Предназначен для получения метаданных (данные о данных)
Пример:
HEAD /index.php HTTP/1.0
Host: www.blogok.ru
 POST – «опубликовать»
 Предназначен для отправки данных
 PUT – «положить»; модификация метода POST
 Предназначен для для загрузки данных на указанный URL
Пример запроса GET с заголовками
GET /2009/03/17/kak-zapretit-redaktirovanie-vyborochnyx-strok-v-cxgrid/ HTTP/1.1
Host: www.blogok.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8)
Gecko/2009032609 Firefox/3.0.8
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.blogok.ru/
Cookie: PHPSESSID=562b6b2d17e9207d1551922da511c156
Пример запроса POST
POST /login.php HTTP/1.1
Host: vkontakte.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.3) Gecko/2008092417 AdCentriaIM/1.7 Firefox/3.0.3 WebMoney
Advisor
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://vkontakte.ru/
Content-Length: 69
Cookie: remixchk=5; remixautobookmark=6; remixlang=0
Pragma: no-cache
Cache-Control: no-cache
op=a_login_attempt&email=xxxxxx%40xxxxxx.ru&pass=xxxxxx&expire=0
Шаблон запроса PUT
PUT /path/filename.html HTTP/1.1
Ответы сервера
Структура ответа сервера
 Строка состояния
 Поля заголовка
 Пустая строка
 Тело ответа
Строка состояния
 Версия_протокола Код_ответа Пояснительное_сообщение
 Версия_протокола задается в том же формате, что и в запросе клиента, и
имеет тот же смысл.
 Код_ответа - трехзначное десятичное число, представляющее в
закодированном виде результат обслуживания запроса сервером.
 Пояснительное_сообщение дублирует код ответа в символьном виде. Это
строка символов, которая не обрабатывается клиентом. Она предназначена для
человека, занимающегося обслуживанием системы, и является расшифровкой
кода ответа.
Код состояния
 Первая (старшая) цифра определяет класс ответа
 остальные две представляют собой номер ответа внутри класса.
Классы кодов состояния
 1 – информационные сообщения.
означает, что сервер продолжает обработку запроса.
 2 - успешная обработка запроса клиента.
 3 - перенаправление запроса.
Чтобы запрос был обслужен, необходимо предпринять дополнительные
действия.
 4 - ошибка клиента.
возвращается в том случае, если в запросе клиента встретилась
синтаксическая ошибка.
 5 - ошибка сервера.
По тем или иным причинам сервер не в состоянии выполнить запрос.
Расшифровка кодов ответа сервера
Код Расшифровка Интерпретация
100 Continue Часть запроса принята, и сервер ожидает от клиента продолжения запроса
200 OK Запрос успешно обработан, и в ответе клиенту передаются данные, указанные в запросе
201 Created В результате обработки запроса был создан новый ресурс
202 Accepted Запрос принят сервером, но обработка его не окончена. Данный код ответа не гарантирует, что
запрос будет обработан без ошибок.
206 Partial Content Сервер возвращает часть ресурса в ответ на запрос, содержавший поле заголовка Range
301 Multiple Choice Запрос указывает более чем на один ресурс. В теле ответа могут содержаться указания на то, как
правильно идентифицировать запрашиваемый ресурс
302 Moved Permanently Затребованный ресурс больше не располагается на сервере
302 Moved Temporarily Затребованный ресурс временно изменил свой адрес
400 Bad Request В запросе клиента обнаружена синтаксическая ошибка
403 Forbidden Имеющийся на сервере ресурс недоступен для данного пользователя
404 Not Found Ресурс, указанный клиентом, на сервере отсутствует
405 Method Not Allowed Сервер не поддерживает метод, указанный в запросе
500 Internal Server Error Один из компонентов сервера работает некорректно
501 Not Implemented Функциональных возможностей сервера недостаточно, чтобы выполнить запрос клиента
503 Service Unavailable Служба временно недоступна
505 HTTP Version not Supported Версия HTTP, указанная в запросе, не поддерживается сервером
Поля заголовка
Имя поля Описание содержимого
Server Имя и номер версии сервера
Age Время в секундах, прошедшее с момента создания ресурса
Allow Список методов, допустимых для данного ресурса
Content-Language Языки, которые должен поддерживать клиент для того, чтобы корректно отобразить передаваемый ресурс
Content-Type MIME-тип данных, содержащихся в теле ответа сервера
Content-Length Число символов, содержащихся в теле ответа сервера
Last-Modified Дата и время последнего изменения ресурса
Date Дата и время, определяющие момент генерации ответа
Expires Дата и время, определяющие момент, после которого информация, переданная клиенту, считается устаревшей
Location В этом поле указывается реальное расположение ресурса. Оно используется для перенаправления запроса
Cache-Control Директивы управления кэшированием. Например, no - cache означает, что данные не должны кэшироваться
Тело ответа
 В теле ответа содержится код ресурса, передаваемого клиенту в ответ
на запрос:
 HTML-текст веб-страницы
 Изображение
 Аудио-файл
 Фрагмент видеоинформации
 Любой другой тип данных, поддерживаемый клиентом
Пример ответа сервера
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.1
X-Powered-By: ASP.NET
Date: Mon, 20 OCT 2008 11:25:56 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Sat, 18 Oct 2008 15:05:44 GMT
ETag: "b66a667f948c92:8a5"
Content-Length: 426
<html>
<body>
<form action='http://localhost/Scripts/test.pl'>
<p>Operand1: <input type='text' name='A'></p>
<p>Operand2: <input type='text' name='B'></p>
<p>Operation:<br>
<select name='op'>
<option value='+'>+</option>
<option value='-'>-</option>
<option value='*'>*</option>
<option value='/'>/</option>
<select></p>
<input type='submit' value='Calculate!'>
</from>
</body>
</html>
Инструменты разработчиков
Chrome Developer Tools, Firebug, Tamper Data
Chrome Developer Tools
 Нажмите F12, чтобы вызвать
инструменты разработчика
 Перейдите во вкладку
Network
 Выберите тип “Doc”, чтобы
видеть информацию,
относящуются к веб-
страницам
 Откройте веб-страницу
 Вы увидите http-запросы и
ответы сервера во вкладке
Headers
Firebug (Mozilla Firefox)
 Скачайте Firebug: getfirebug.com/
 Откройте плагин (иконка в правом верхнем углу)
 Перейдите во вкладку «Сеть»
 Выберите «HTML»
 Нажмите на + возле запроса из списка
TamperData (Mozilla Firefox)
 Установите расширение с addons.mozilla.org (потребуется перезапустить
браузер
 Заходим в «Инструменты» / «Перехватка данных»
 Нажмите «Запустить перехват»
 Теперь вы можете «вмешаться» в любой запрос и изменить заголовки

More Related Content

What's hot

Лекция 4. Почтовая система. Outlook.
Лекция 4. Почтовая система. Outlook.Лекция 4. Почтовая система. Outlook.
Лекция 4. Почтовая система. Outlook.Alexey Furmanov
 
Состав электронного сообщения
Состав электронного сообщенияСостав электронного сообщения
Состав электронного сообщенияKatarina7777777
 
СМЭВ СПб и веб-службы на основе SOAP
СМЭВ СПб и веб-службы на основе SOAP СМЭВ СПб и веб-службы на основе SOAP
СМЭВ СПб и веб-службы на основе SOAP devclub
 
Реализация REST и SOAP сервисов с помощью WCF
Реализация REST и SOAP сервисов с помощью WCFРеализация REST и SOAP сервисов с помощью WCF
Реализация REST и SOAP сервисов с помощью WCFPavel Tsukanov
 
интернет как глобальная информационная система
интернет как глобальная информационная системаинтернет как глобальная информационная система
интернет как глобальная информационная системаЕлена Ключева
 
01 - Web-технологии. Архитектура Web приложений
01 - Web-технологии. Архитектура Web приложений01 - Web-технологии. Архитектура Web приложений
01 - Web-технологии. Архитектура Web приложенийRoman Brovko
 
Больше половины HTTPS трафика уже HTTP/2 версия
Больше половины HTTPS трафика уже HTTP/2 версияБольше половины HTTPS трафика уже HTTP/2 версия
Больше половины HTTPS трафика уже HTTP/2 версияDenis Batrankov, CISSP
 
Я во Входящих. А вы?
Я во Входящих. А вы?Я во Входящих. А вы?
Я во Входящих. А вы?EMAILMATRIX
 

What's hot (12)

Лекция 4. Почтовая система. Outlook.
Лекция 4. Почтовая система. Outlook.Лекция 4. Почтовая система. Outlook.
Лекция 4. Почтовая система. Outlook.
 
Состав электронного сообщения
Состав электронного сообщенияСостав электронного сообщения
Состав электронного сообщения
 
HTML Бесплатное размещение
HTML Бесплатное размещениеHTML Бесплатное размещение
HTML Бесплатное размещение
 
СМЭВ СПб и веб-службы на основе SOAP
СМЭВ СПб и веб-службы на основе SOAP СМЭВ СПб и веб-службы на основе SOAP
СМЭВ СПб и веб-службы на основе SOAP
 
REST
RESTREST
REST
 
Реализация REST и SOAP сервисов с помощью WCF
Реализация REST и SOAP сервисов с помощью WCFРеализация REST и SOAP сервисов с помощью WCF
Реализация REST и SOAP сервисов с помощью WCF
 
интернет как глобальная информационная система
интернет как глобальная информационная системаинтернет как глобальная информационная система
интернет как глобальная информационная система
 
01 - Web-технологии. Архитектура Web приложений
01 - Web-технологии. Архитектура Web приложений01 - Web-технологии. Архитектура Web приложений
01 - Web-технологии. Архитектура Web приложений
 
HTTP протокол
HTTP протоколHTTP протокол
HTTP протокол
 
Больше половины HTTPS трафика уже HTTP/2 версия
Больше половины HTTPS трафика уже HTTP/2 версияБольше половины HTTPS трафика уже HTTP/2 версия
Больше половины HTTPS трафика уже HTTP/2 версия
 
Основы Java. 4. Web
Основы Java. 4. WebОсновы Java. 4. Web
Основы Java. 4. Web
 
Я во Входящих. А вы?
Я во Входящих. А вы?Я во Входящих. А вы?
Я во Входящих. А вы?
 

Viewers also liked

The #LSS2016 Local Search Summit Playbook: Insights and Strategies from Thoug...
The #LSS2016 Local Search Summit Playbook: Insights and Strategies from Thoug...The #LSS2016 Local Search Summit Playbook: Insights and Strategies from Thoug...
The #LSS2016 Local Search Summit Playbook: Insights and Strategies from Thoug...Rio SEO
 
INADEM Conference 2015: The Shifting Media-Consumption Landscape
INADEM Conference 2015: The Shifting Media-Consumption LandscapeINADEM Conference 2015: The Shifting Media-Consumption Landscape
INADEM Conference 2015: The Shifting Media-Consumption LandscapePlaybuzz
 
Interesting facts of digital marketing in Indonesia
Interesting facts of digital marketing in IndonesiaInteresting facts of digital marketing in Indonesia
Interesting facts of digital marketing in IndonesiaIndra Jaya
 
Dia 2 - Expansão do Açaí e seu potencial em SAFs - Manejo, produção e comerci...
Dia 2 - Expansão do Açaí e seu potencial em SAFs - Manejo, produção e comerci...Dia 2 - Expansão do Açaí e seu potencial em SAFs - Manejo, produção e comerci...
Dia 2 - Expansão do Açaí e seu potencial em SAFs - Manejo, produção e comerci...cbsaf
 
Platja d'en Bossa
Platja d'en BossaPlatja d'en Bossa
Platja d'en Bossaadaura
 
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекцииКурс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции7bits
 
Enterobacteriaceae y Escherichia coli
Enterobacteriaceae y Escherichia coliEnterobacteriaceae y Escherichia coli
Enterobacteriaceae y Escherichia coliSamantha Garay
 
Grafito
GrafitoGrafito
Grafitoinma
 

Viewers also liked (14)

The #LSS2016 Local Search Summit Playbook: Insights and Strategies from Thoug...
The #LSS2016 Local Search Summit Playbook: Insights and Strategies from Thoug...The #LSS2016 Local Search Summit Playbook: Insights and Strategies from Thoug...
The #LSS2016 Local Search Summit Playbook: Insights and Strategies from Thoug...
 
Delhi Sightseeing Tours
Delhi Sightseeing ToursDelhi Sightseeing Tours
Delhi Sightseeing Tours
 
Young catering
Young cateringYoung catering
Young catering
 
Kunhiraman 17 Sept 2016
Kunhiraman 17 Sept 2016Kunhiraman 17 Sept 2016
Kunhiraman 17 Sept 2016
 
INADEM Conference 2015: The Shifting Media-Consumption Landscape
INADEM Conference 2015: The Shifting Media-Consumption LandscapeINADEM Conference 2015: The Shifting Media-Consumption Landscape
INADEM Conference 2015: The Shifting Media-Consumption Landscape
 
Erasmus+ cife sabi_ 2017
Erasmus+ cife sabi_ 2017Erasmus+ cife sabi_ 2017
Erasmus+ cife sabi_ 2017
 
Interesting facts of digital marketing in Indonesia
Interesting facts of digital marketing in IndonesiaInteresting facts of digital marketing in Indonesia
Interesting facts of digital marketing in Indonesia
 
Dia 2 - Expansão do Açaí e seu potencial em SAFs - Manejo, produção e comerci...
Dia 2 - Expansão do Açaí e seu potencial em SAFs - Manejo, produção e comerci...Dia 2 - Expansão do Açaí e seu potencial em SAFs - Manejo, produção e comerci...
Dia 2 - Expansão do Açaí e seu potencial em SAFs - Manejo, produção e comerci...
 
Mandalas
MandalasMandalas
Mandalas
 
Platja d'en Bossa
Platja d'en BossaPlatja d'en Bossa
Platja d'en Bossa
 
Conservação do solo
Conservação do soloConservação do solo
Conservação do solo
 
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекцииКурс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
 
Enterobacteriaceae y Escherichia coli
Enterobacteriaceae y Escherichia coliEnterobacteriaceae y Escherichia coli
Enterobacteriaceae y Escherichia coli
 
Grafito
GrafitoGrafito
Grafito
 

Similar to Протокол HTTP

Мировые информационные ресурсы. Лекция 3
Мировые информационные ресурсы. Лекция 3Мировые информационные ресурсы. Лекция 3
Мировые информационные ресурсы. Лекция 3Dmitriy Krukov
 
JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.Igor Shkulipa
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.Igor Shkulipa
 
Лекция #2. Принцип организации World Wide Web
Лекция #2. Принцип организации World Wide WebЛекция #2. Принцип организации World Wide Web
Лекция #2. Принцип организации World Wide WebЯковенко Кирилл
 
архитектура и принципы работы типового Web приложения
архитектура и принципы работы типового Web приложенияархитектура и принципы работы типового Web приложения
архитектура и принципы работы типового Web приложенияVladyslav Leikykh
 
!2hl++2008 Restful Architechture
!2hl++2008 Restful Architechture!2hl++2008 Restful Architechture
!2hl++2008 Restful ArchitechtureOntico
 
RESTful Architechture (Highload++ 2008)
RESTful Architechture (Highload++ 2008)RESTful Architechture (Highload++ 2008)
RESTful Architechture (Highload++ 2008)Sergey Skvortsov
 
Информационные ресурсы и сервисы Интернета
Информационные ресурсы и сервисы ИнтернетаИнформационные ресурсы и сервисы Интернета
Информационные ресурсы и сервисы ИнтернетаAndrey Dolinin
 
Lesson1
Lesson1Lesson1
Lesson1jinol
 
шаг открытый урок
шаг  открытый урокшаг  открытый урок
шаг открытый урокVitaly Voskobovich
 
C# Web. Занятие 01.
C# Web. Занятие 01.C# Web. Занятие 01.
C# Web. Занятие 01.Igor Shkulipa
 
Создание Adobe AIR клиента для социальных сетей на примере Twitter
Создание Adobe AIR клиента для социальных сетей на примере TwitterСоздание Adobe AIR клиента для социальных сетей на примере Twitter
Создание Adobe AIR клиента для социальных сетей на примере TwitterRostyslav Siryk
 
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIПротокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIEkaterina Kuchinskaya
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 67bits
 
Вячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPSВячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPSYandex
 
03 web server_architecture_ru
03 web server_architecture_ru03 web server_architecture_ru
03 web server_architecture_rumcroitor
 
Стажировка-2013, разработчики, занятие 7. Web, HTTP
Стажировка-2013, разработчики, занятие 7. Web, HTTPСтажировка-2013, разработчики, занятие 7. Web, HTTP
Стажировка-2013, разработчики, занятие 7. Web, HTTP7bits
 
Industrial Programming Java - Lection Pack 02 - Distributed applications - La...
Industrial Programming Java - Lection Pack 02 - Distributed applications - La...Industrial Programming Java - Lection Pack 02 - Distributed applications - La...
Industrial Programming Java - Lection Pack 02 - Distributed applications - La...Fedor Lavrentyev
 

Similar to Протокол HTTP (20)

Мировые информационные ресурсы. Лекция 3
Мировые информационные ресурсы. Лекция 3Мировые информационные ресурсы. Лекция 3
Мировые информационные ресурсы. Лекция 3
 
JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.
 
Лекция #2. Принцип организации World Wide Web
Лекция #2. Принцип организации World Wide WebЛекция #2. Принцип организации World Wide Web
Лекция #2. Принцип организации World Wide Web
 
архитектура и принципы работы типового Web приложения
архитектура и принципы работы типового Web приложенияархитектура и принципы работы типового Web приложения
архитектура и принципы работы типового Web приложения
 
!2hl++2008 Restful Architechture
!2hl++2008 Restful Architechture!2hl++2008 Restful Architechture
!2hl++2008 Restful Architechture
 
RESTful Architechture (Highload++ 2008)
RESTful Architechture (Highload++ 2008)RESTful Architechture (Highload++ 2008)
RESTful Architechture (Highload++ 2008)
 
Информационные ресурсы и сервисы Интернета
Информационные ресурсы и сервисы ИнтернетаИнформационные ресурсы и сервисы Интернета
Информационные ресурсы и сервисы Интернета
 
Lesson1
Lesson1Lesson1
Lesson1
 
шаг открытый урок
шаг  открытый урокшаг  открытый урок
шаг открытый урок
 
C# Web. Занятие 01.
C# Web. Занятие 01.C# Web. Занятие 01.
C# Web. Занятие 01.
 
Создание Adobe AIR клиента для социальных сетей на примере Twitter
Создание Adobe AIR клиента для социальных сетей на примере TwitterСоздание Adobe AIR клиента для социальных сетей на примере Twitter
Создание Adobe AIR клиента для социальных сетей на примере Twitter
 
веб сервер
веб сервервеб сервер
веб сервер
 
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIПротокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
 
Вячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPSВячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPS
 
03 web server_architecture_ru
03 web server_architecture_ru03 web server_architecture_ru
03 web server_architecture_ru
 
Стажировка-2013, разработчики, занятие 7. Web, HTTP
Стажировка-2013, разработчики, занятие 7. Web, HTTPСтажировка-2013, разработчики, занятие 7. Web, HTTP
Стажировка-2013, разработчики, занятие 7. Web, HTTP
 
REST API JL.elama
REST API JL.elamaREST API JL.elama
REST API JL.elama
 
Industrial Programming Java - Lection Pack 02 - Distributed applications - La...
Industrial Programming Java - Lection Pack 02 - Distributed applications - La...Industrial Programming Java - Lection Pack 02 - Distributed applications - La...
Industrial Programming Java - Lection Pack 02 - Distributed applications - La...
 

Протокол HTTP

  • 2. Определение HTTP  HTTP - Hypertext Transfer Protocol  Протокол – правила, в соответствии с которыми осуществляется передача данных  Гипертекст – текст с активными ссылками на другие тексты или части текста  HTTP – протокол прикладного уровня (в модели OSI) передачи данных  Повсеместно используется в World Wide Web
  • 3. Взаимодействие «клиент – сервер»  Клиент – потребитель, запрашивает информацию  Сервер – поставщик, предоставляет информацию по запросу  Типы клиентов:  Тонкий клиент переносит все задачи по обработке информации на сервер. Пример: браузер  Толстый клиент сам производит обработку информации независимо от сервера, использует сервер в основном для хранения данных. Пример: бухгалтерские приложения 1С
  • 4. HTTP – протокол «без памяти»  «Без памяти» - протокол не хранит информацию о предыдущих запросах клиентов и ответах сервера.  Каждый новый запрос – новая транзакция (взаимодействие)  Запросы никак не связаны друг с другом (с т.з. протокола)  При разрыве связи передача прекращается, возобновить ее в рамках протокола без памяти нет возможности  Чтобы продолжить передачу сообщения, нужна новая транзакция  Клиент или сервер могут эту информацию хранить самостоятельно
  • 5. Схема HTTP-сеанса  Установление TCP-соединения  Запрос клиента  Ответ сервера  Разрыв TCP-соединения
  • 8. Формат строки состояния: метод_запроса URL_pecypca версия_протокола_НТТР GET /mypage.html HTTP/1.0
  • 9. Поля заголовка Поля заголовкаHTTP -запроса Значение Host Доменное имя или IP-адрес узла, к которому обращается клиент Referer URL документа, который ссылается на ресурс, указанный в строке состояния From Адрес электронной почты пользователя, работающего с клиентом Accept MIME-типы данных, обрабатываемых клиентом. Это поле может иметь несколько значений, отделяемых одно от другого запятыми. Часто поле заголовка Accept используется для того, чтобы сообщить серверу о том, какие типы графических файлов поддерживает клиент Accept-Language Набор двухсимвольных идентификаторов, разделенных запятыми, которые обозначают языки, поддерживаемые клиентом Accept-Charset Перечень поддерживаемых наборов символов Content-Type MIME-тип данных, содержащихся в теле запроса (если запрос не состоит из одного заголовка) Content-Length Число символов, содержащихся в теле запроса (если запрос не состоит из одного заголовка) Range Присутствует в том случае, если клиент запрашивает не весь документ, а лишь его часть Connection Используется для управления TCP-соединением. Если в поле содержится Close, это означает, что после обработки запроса сервер должен закрыть соединение. Значение Keep-Alive предлагает не закрывать TCP-соединение, чтобы оно могло быть использовано для последующих запросов User-Agent Информация о клиенте
  • 10. Спецификация MIME  MIME (Multipurpose Internet Mail Extension) — многоцелевое почтовое расширение Internet  Для описания формата данных используются тип и подтип  Тип и подтип отделяются косой чертой: тип/подтип
  • 11. MIME типы данных Тип/подтип Расширение файла Описание application/pdf .pdf Документ, предназначенный для обработки Acrobat Reader application/msexcel .xls Документ в формате Microsoft Excel application/postscript .ps, .eps Документ в формате PostScript application/x-tex .tex Документ в формате ТеХ application/msword .doc Документ в формате Microsoft Word application/rtf .rtf Документ в формате RTF, отображаемый с помощью Microsoft Word image/gif .gif Изображение в формате GIF image/ jpeg .jpeg, .jpg, Изображение в формате JPEG image/tiff .tiff, .tif Изображение в формате TIFF image/x-xbitmap .xbm Изображение в формате XBitmap text/plain .txt ASCII-текст text/html . html , . htm Документ в формате HTML audio/midi .midi, .mid Аудиофайл в формате MIDI audio/x-wav .wav Аудиофайл в формате WAV message/rfc822 Почтовое сообщение message/news Сообщение в группы новостей video /mpeg .mpeg, .mpg, .mpe Видеофрагмент в формате MPEG video/avi .avi Видеофрагмент в формате AVI
  • 12. Методы HTTP  GET – «получить»  предназначается для получения ресурса с указанным URL Пример: GET /mypage.html HTTP/1.0  HEAD – «заголовок»; модификация метода GET  Предназначен для получения метаданных (данные о данных) Пример: HEAD /index.php HTTP/1.0 Host: www.blogok.ru  POST – «опубликовать»  Предназначен для отправки данных  PUT – «положить»; модификация метода POST  Предназначен для для загрузки данных на указанный URL
  • 13. Пример запроса GET с заголовками GET /2009/03/17/kak-zapretit-redaktirovanie-vyborochnyx-strok-v-cxgrid/ HTTP/1.1 Host: www.blogok.ru User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://www.blogok.ru/ Cookie: PHPSESSID=562b6b2d17e9207d1551922da511c156
  • 14. Пример запроса POST POST /login.php HTTP/1.1 Host: vkontakte.ru User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.3) Gecko/2008092417 AdCentriaIM/1.7 Firefox/3.0.3 WebMoney Advisor Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Referer: http://vkontakte.ru/ Content-Length: 69 Cookie: remixchk=5; remixautobookmark=6; remixlang=0 Pragma: no-cache Cache-Control: no-cache op=a_login_attempt&email=xxxxxx%40xxxxxx.ru&pass=xxxxxx&expire=0
  • 15. Шаблон запроса PUT PUT /path/filename.html HTTP/1.1
  • 17. Структура ответа сервера  Строка состояния  Поля заголовка  Пустая строка  Тело ответа
  • 18. Строка состояния  Версия_протокола Код_ответа Пояснительное_сообщение  Версия_протокола задается в том же формате, что и в запросе клиента, и имеет тот же смысл.  Код_ответа - трехзначное десятичное число, представляющее в закодированном виде результат обслуживания запроса сервером.  Пояснительное_сообщение дублирует код ответа в символьном виде. Это строка символов, которая не обрабатывается клиентом. Она предназначена для человека, занимающегося обслуживанием системы, и является расшифровкой кода ответа.
  • 19. Код состояния  Первая (старшая) цифра определяет класс ответа  остальные две представляют собой номер ответа внутри класса.
  • 20. Классы кодов состояния  1 – информационные сообщения. означает, что сервер продолжает обработку запроса.  2 - успешная обработка запроса клиента.  3 - перенаправление запроса. Чтобы запрос был обслужен, необходимо предпринять дополнительные действия.  4 - ошибка клиента. возвращается в том случае, если в запросе клиента встретилась синтаксическая ошибка.  5 - ошибка сервера. По тем или иным причинам сервер не в состоянии выполнить запрос.
  • 21. Расшифровка кодов ответа сервера Код Расшифровка Интерпретация 100 Continue Часть запроса принята, и сервер ожидает от клиента продолжения запроса 200 OK Запрос успешно обработан, и в ответе клиенту передаются данные, указанные в запросе 201 Created В результате обработки запроса был создан новый ресурс 202 Accepted Запрос принят сервером, но обработка его не окончена. Данный код ответа не гарантирует, что запрос будет обработан без ошибок. 206 Partial Content Сервер возвращает часть ресурса в ответ на запрос, содержавший поле заголовка Range 301 Multiple Choice Запрос указывает более чем на один ресурс. В теле ответа могут содержаться указания на то, как правильно идентифицировать запрашиваемый ресурс 302 Moved Permanently Затребованный ресурс больше не располагается на сервере 302 Moved Temporarily Затребованный ресурс временно изменил свой адрес 400 Bad Request В запросе клиента обнаружена синтаксическая ошибка 403 Forbidden Имеющийся на сервере ресурс недоступен для данного пользователя 404 Not Found Ресурс, указанный клиентом, на сервере отсутствует 405 Method Not Allowed Сервер не поддерживает метод, указанный в запросе 500 Internal Server Error Один из компонентов сервера работает некорректно 501 Not Implemented Функциональных возможностей сервера недостаточно, чтобы выполнить запрос клиента 503 Service Unavailable Служба временно недоступна 505 HTTP Version not Supported Версия HTTP, указанная в запросе, не поддерживается сервером
  • 22. Поля заголовка Имя поля Описание содержимого Server Имя и номер версии сервера Age Время в секундах, прошедшее с момента создания ресурса Allow Список методов, допустимых для данного ресурса Content-Language Языки, которые должен поддерживать клиент для того, чтобы корректно отобразить передаваемый ресурс Content-Type MIME-тип данных, содержащихся в теле ответа сервера Content-Length Число символов, содержащихся в теле ответа сервера Last-Modified Дата и время последнего изменения ресурса Date Дата и время, определяющие момент генерации ответа Expires Дата и время, определяющие момент, после которого информация, переданная клиенту, считается устаревшей Location В этом поле указывается реальное расположение ресурса. Оно используется для перенаправления запроса Cache-Control Директивы управления кэшированием. Например, no - cache означает, что данные не должны кэшироваться
  • 23. Тело ответа  В теле ответа содержится код ресурса, передаваемого клиенту в ответ на запрос:  HTML-текст веб-страницы  Изображение  Аудио-файл  Фрагмент видеоинформации  Любой другой тип данных, поддерживаемый клиентом
  • 24. Пример ответа сервера HTTP/1.1 200 OK Server: Microsoft-IIS/5.1 X-Powered-By: ASP.NET Date: Mon, 20 OCT 2008 11:25:56 GMT Content-Type: text/html Accept-Ranges: bytes Last-Modified: Sat, 18 Oct 2008 15:05:44 GMT ETag: "b66a667f948c92:8a5" Content-Length: 426 <html> <body> <form action='http://localhost/Scripts/test.pl'> <p>Operand1: <input type='text' name='A'></p> <p>Operand2: <input type='text' name='B'></p> <p>Operation:<br> <select name='op'> <option value='+'>+</option> <option value='-'>-</option> <option value='*'>*</option> <option value='/'>/</option> <select></p> <input type='submit' value='Calculate!'> </from> </body> </html>
  • 26. Chrome Developer Tools  Нажмите F12, чтобы вызвать инструменты разработчика  Перейдите во вкладку Network  Выберите тип “Doc”, чтобы видеть информацию, относящуются к веб- страницам  Откройте веб-страницу  Вы увидите http-запросы и ответы сервера во вкладке Headers
  • 27. Firebug (Mozilla Firefox)  Скачайте Firebug: getfirebug.com/  Откройте плагин (иконка в правом верхнем углу)  Перейдите во вкладку «Сеть»  Выберите «HTML»  Нажмите на + возле запроса из списка
  • 28. TamperData (Mozilla Firefox)  Установите расширение с addons.mozilla.org (потребуется перезапустить браузер  Заходим в «Инструменты» / «Перехватка данных»  Нажмите «Запустить перехват»  Теперь вы можете «вмешаться» в любой запрос и изменить заголовки

Editor's Notes

  1. HTTP (англ. HyperText Transfer Protocol — «протокол передачи гипертекста») — протокол прикладного уровня передачи данных (изначально — в виде гипертекстовых документов в формате HTML, в настоящий момент используется для передачи произвольных данных).
  2. Взаимодействие «клиент – сервер» лежит в основе протокола HTTP Сервер без запроса клиенту ничего не посылает!
  3. послав пакет, протокол тут же «забывает» о нем, в отличие от протоколов, устанавливающих логическое соединение (протоколы с памятью), которые получают и сохраняют информацию о пути перемещения пакета. При использовании протоколов с памятью клиенту и серверу пришлось бы хранить много информации о состояниях друг друга и множестве запросов и ответов. В результате протоколы без памяти являются «легкими», не требуя большой работы по освобождению ресурсов и запоминанию информации.
  4. TCP – протокол более низкого, транспортного уровня (см. Модель OSI) TCP обеспечивает надежную непрерывную передачу данных, исключающую потерю данных Таким образом, клиент посылает серверу запрос, получает от него ответ, после чего взаимодействие прекращается. Обычно запрос клиента представляет собой требование передать HTML-документ или какой-нибудь другой ресурс, а ответ сервера содержит код этого ресурса.
  5. Тело запроса – может отсутствовать Поля заголовка – могут отсутствовать Самый простой запрос состоит только из строки состояния
  6. Тело запроса – может отсутствовать Поля заголовка – могут отсутствовать Самый простой запрос состоит только из строки состояния
  7. MIME первоначально была разработана для того, чтобы обеспечить передачу различных форматов данных в составе электронных писем. Однако применение MIME не исчерпывается электронной почтой. Средства MIME успешно используются в WWW и, по сути, стали неотъемлемой частью этой системы. Это расширяемая спецификация, подразумевается, что число типов данных будет расти по мере развития форм представления данных. для описания формата данных используются тип и подтип. Тип определяет, к какому классу относится формат содержимого HTTP-запроса или HTTP-ответа. Подтип уточняет формат. Тип и подтип отделяются друг от друга косой чертой: тип/подтип
  8. Здесь приведены примеры MIME -типов, наиболее часто встречающиеся в заголовках HTML-запросов и ответов. Это неполный список!
  9. GET: Получив запрос GET, сервер должен прочитать указанный ресурс и включить код ресурса в состав ответа клиенту. Ресурс, URL которого передается в составе запроса, не обязательно должен представлять собой HTML-страницу, файл с изображением или другие данные. URL ресурса может указывать на исполняемый код программы, который, при соблюдении определенных условий, должен быть запущен на сервере. В этом случае клиенту возвращается не код программы, а данные, сгенерированные в процессе ее выполнения. При помощи метода POST мы, например, можем передать данные после заполнения формы на сайте. Его синтаксис аналогичен синтаксису GET и HEAD заголовков, но от запроса GET он отличается тем, что вместо содержимого документа подаются параметры и значения. В POST-запросе необходимо указывать длину передаваемых данных (Content-Length), и тип передаваемых данных (Content-Type). - See more at: http://parsing-and-i.blogspot.com/2009/04/http-protocol-http-requests.html#sthash.8lxJemBM.dpuf HEAD-запрос можно сравнить с "пингованием", т.е. посылкой пакета. И если сервер ответит, то он доступен. Для проверки доступности сервера он чаще всего и используется. POST - При помощи метода POST мы, например, можем передать данные после заполнения формы на сайте PUT предпочтительно использовать при передаче больших объёмов информации.
  10. * - обозначает любой тип или подтип */* - означает все подтипы конкретного типа “q” – quality, параметр качества То, что здесь в поле accept означает: «предпочитаю получить перечисленные типы, но если нет, присылайте любые другие, но качество будет ниже» Если поле Accept отсутствует, то предполагается, что сервер принимает любые типы данных. Если поле Accept присутствует, но сервер не может прислать данные определенного типа, то он должен прислать конкретную ошибку – 404 Accept-Encoding: gzip,deflate – GZIP – это тип сжатия текстовых данных без потерь. В данном случае браузер сообщает, что поддерживает такой тип сжатия Значение Keep-Alive предлагает не закрывать TCP-соединение, чтобы оно могло быть использовано для последующих запросов Куки – небольшой текстовый файл (набор данных), который сервер посещенного нами сайта записывает в наш браузер (по англ. cookie – печенье). В этом файле хранится информация о логине и пароле, индивидуальных настройках и предпочтениях пользователя, статистика посещений и т. п. Каждый раз при входе на соответствующий сайт, наш браузер отправляет серверу сайта имеющийся файл cookies для нашей идентификации в качестве пользователя. Куки позволяют сделать пользование Интернетом более удобным и комфортным. Так, благодаря файлам cookies, мы, авторизовавшись на каком-либо сайте или форуме, впоследствии можем заходить в свой аккаунт на этом сайте, не вводя каждый раз логин и пароль.
  11. Пример — POST-запрос при логине в соцсети vkontakte.ru В POST-запросе необходимо указывать длину передаваемых данных (Content-Length), и тип передаваемых данных (Content-Type). Что такое кэш браузера – это специально выделенное место памяти на жёстком диске, где хранятся копии предварительно посещённых страниц, картинок, и других необходимых для просмотра интернет-страниц файлов. Эта процедура придумана и используется для более быстрой загрузки страниц и уменьшения трафика. Вкратце, при обращении к интернет-узлу браузер проверяет наличие ранее сохранённых копий тех же файлов в памяти и если таковые имеются - не загружает их с сервера повторно. Оба заголовка обозначают запрет кеширования. Используется в часто обновляемых страницах и страницах с динамическим содержанием. В последней строке передается логин и пароль – это уже ТЕЛО запроса
  12. Такой вызов означает, что удаленный клиент хотел бы сохранить файл под именем /path/filename.html в дереве каталогов вашего веб-сервера. Очевидно, что возможность клиента автоматически перезаписывать файлы веб-сервера не является хорошим решением. На сервере должен существовать скрипт, который обрабатывает такие запросы. Скрипт может осуществлять какие-то проверки или авторизовать пользователя, прежде чем копировать файл
  13. Подобно запросу клиента, ответ сервера также состоит из четырех перечисленных компонентов. Поля заголовка и тело сообщения могут отсутствовать, но строка состояния является обязательным элементом, так как указывает на тип запроса/ответа.
  14. В используемых в настоящее время реализациях протокола HTTP первая цифра не может быть больше 5
  15. Поля заголовка предназначены для того, чтобы уточнить ответ сервера клиенту. 
  16. Текст размещен в две колонки, чтобы он поместился на слайде X-Powered-By: ASP.NET – информация о скрипте, который отработал на сервере (может быть, например, PHP) Accept-Ranges: bytes – Здесь идет речь о т.наз. «byte serving», который поддерживается только в версии протокола 1.1. Это означает, что сервер готов обслуживать частичные запросы. Клиент может запросить часть файла, отправив соответствующий заголовок в своем запросе. Например, это работает с PDF-файлами – клиент может запросить конкретную страницу, а не целый файл. В стандарте 1.0 можно было запрашивать только целые документы. ETag: "b66a667f948c92:8a5" – entity tag. один из нескольких механизмов, с помощью которых HTTP обеспечивает проверку кэша и который позволяет клиенту делать условный запрос. Это позволяет кэшу быть более эффективным и экономит пропускную способность, так как веб-серверу не нужно отправлять полный ответ, если содержимое не изменилось. ETag — это закрытый идентификатор, присвоенный веб-сервером на определенную версию ресурса, найденного на URL. Если содержание ресурса для этого адреса меняется на новое, назначается и новый ETag. Использование в таком ключе ETags аналогично использованию отпечатков пальцев, можно быстро сравнить и определить, являются ли две версии ресурса одинаковыми или нет. Сравнение ETag имеет смысл только c Etag с одного и того же URL, идентификаторы, полученные из разных URL-адресов, могут быть, а могут не быть равны, вне зависимости от ресурсов, так что их сравнение не имеет какого-либо смысла. В теле ответа содержится исходный текст HTML-документа.
  17. Кликнув на конкретный path, можно скопировать и сохранить данные
  18. Также есть версия для Chrome, но мы рассмотрим его в Mozilla Если у вас не видна панель «Инструменты», нажмите Alt – она появится