Слайд 2HTTP (hyper text transport protocol)
это набор правил, согласно которым передаются данные между
![HTTP (hyper text transport protocol) это набор правил, согласно которым передаются данные](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/956921/slide-1.jpg)
клиентом и сервером.
Изначально этими данными были гипертекстовые документы в формате HTML. Теперь это произвольные данные. Например, картинки, css, js.
Слайд 3Версии HTTP
HTTP 0.9 – экспериментальная версия, 1991
HTTP 1 – первая официальная версия
![Версии HTTP HTTP 0.9 – экспериментальная версия, 1991 HTTP 1 – первая](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/956921/slide-2.jpg)
протокола, 1996
НТТР 1.1 – расширение первой версии НТТР, 1997
НТТР 2 – современная версия, 2015
Слайд 4Структура HTTP-сообщения
Стартовая строка – определяет тип сообщения.
GET /wiki/article HTTP/1.1
Host: ru.wikipedia.org
Заголовки – характеризуют
![Структура HTTP-сообщения Стартовая строка – определяет тип сообщения. GET /wiki/article HTTP/1.1 Host:](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/956921/slide-3.jpg)
тело сообщения, параметры передачи и прочие сведения.
Date: Thur, 01 Oct 2020 01:24:22 GMT+3
Server: Apache
Content-Type: text/html
Тело сообщения – непосредственно данные.
Слайд 6Создание соединения
Запрос
Загрузка данных
![Создание соединения Запрос Загрузка данных](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/956921/slide-5.jpg)
Слайд 12С увеличением пропускной способности задержка при передаче запроса почти не уменьшалась
![С увеличением пропускной способности задержка при передаче запроса почти не уменьшалась](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/956921/slide-11.jpg)
Слайд 13Бинарность
HTTP/1 – запросы передаются в виде текстовых сообщений,
HTTP/2 — в двоичном формате.
![Бинарность HTTP/1 – запросы передаются в виде текстовых сообщений, HTTP/2 — в](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/956921/slide-12.jpg)
Поэтому протокол более эффективен при парсинге, более компактный при передаче, подвержен меньшему количеству ошибок.
Слайд 14Компрессия заголовков HPACK
В HTTP/1 заголовок отправляется в виде простого текста. А учитывая,
![Компрессия заголовков HPACK В HTTP/1 заголовок отправляется в виде простого текста. А](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/956921/slide-13.jpg)
что может отправляться очень много запросов, все заголовки могут занимать большой объём. Поэтому в HTTP/2 есть сжатие заголовков HPACK, которое позволяет существенно сократить объём передаваемой информации.
Слайд 15Мультиплексирование
В HTTP 1.1 браузеры используют множественные подключения к серверу для загрузки веб-страницы,
![Мультиплексирование В HTTP 1.1 браузеры используют множественные подключения к серверу для загрузки](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/956921/slide-14.jpg)
причем, количество таких соединений ограничено. Но это не решает проблему с блокированием канала медленными пакетами. Тогда как в HTTP/2 используется мультиплексирование, которое позволяет браузеру использовать одно соединение TCP для всех запросов.
В HTTP/2 все файлы подгружаются параллельно. Запросы и ответы разделяются по фреймам с мета-данными, которые ассоциируют запросы и ответы. Так что они не перекрывают друг друга и не вызывают путаницы. При этом ответы получаются по мере их готовности, следовательно, тяжелые запросы не будут блокировать обработку и выдачу более простых объектов.
Слайд 16Приоритизация
Вместе с мультиплексированием появилась приоритизация трафика. Запросам можно назначить приоритет на основе
![Приоритизация Вместе с мультиплексированием появилась приоритизация трафика. Запросам можно назначить приоритет на](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/956921/slide-15.jpg)
важности и зависимости.
Так что при загрузке веб-страницы браузер будет в первую очередь получать важные данные, CSS-код, к примеру, а все второстепенное обработается в последнюю очередь.