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