HTTPS, HTTP/2, HTTP/3 - что, как и в чем разница
Про сам HTTP почитать можно - здесь (описание, заголовки, коды состояний, запросы)
HTTPS
HTTPS это тот же HTTP, только он использует SSL/TLS для шифрования запросов и ответов. В обычном виде HTTP показывает тело запроса, URL-адрес, строку запроса и заголовки. И это все может получить кто угодно кто будет находится между клиентом и сервером (роутер или промежуточный сервер). HTTPS шифрует все кроме удаленного адреса, url, метода запроса и кода статуса.
HTTP/2
HTTP/2 тоже безопасный. По этому протоколу браузеры поддерживают только безопасные соединения. Этот протокол оптимизирован для потока данных между клиентом и сервером, т.е. HTTP/2 работает быстрее чем HTTP. При установке соединения с сервером, браузер согласовывает сеанс HTTP. Тип сеанса зависит от наличия поддержки HTTP/2 клиентом и сервером. Если обе стороны поддерживают HTTP/2, сервер начинает работать по этому протоколу. HTTP/2 имеет такие опции: сжатие, мультиплексирование и push-сервер для оптимизации соединения, и если кто-то из сторон не поддерживает какую-либо опцию, то все начинают работать по предыдущей версии протокола. HTTP/2 работает также поверх TCP.
Особенности HTTP/2
- HTTP-сообщения разделяются на один или несколько фреймов с общим заголовком. Это одна из опций которая позволяет ускорить загрузку сайта. Например, вместо двух запросов по типу этого:
GET /test HTTP/1.1
Host: vtw.su
Content-TypeL text/html;
charset=utf-8
Content-Length: 250
{ 'test' : 'ok test' }
GET /test HTTP/1.1
Host: vtw.su
Content-TypeL text/html;
charset=utf-8
Content-Length: 150
{ 'test2' : 'ok test2' }
Можно получить один:
GET /test HTTP/1.1
Host: vtw.su
Content-TypeL text/html;
charset=utf-8
Content-Length: 400
{ 'test' : 'ok test' }
{ 'test2' : 'ok test2' }
- Заголовки сжимаются алгоритмом HPACK. Еще один способ ускорения. После сжатия заголовков, объем передаваемых данных сокращается.
- Мультиплексирование это одно из самых приятных преимуществ HTTP/2. В HTTP/1 для каждого запроса нужно устанавливать свое соединение, и одновременно количество соединений ограничено. С HTTP/2 клиент и сервер могут отправлять множество запросов и ответов в одном соединении. Смысл в том что если в первом протоколе, на каждый запрос соединение открывается и закрывается, то здесь же можно передать несколько запросов между открытием и закрытием.
- Push-сервер. Сервер получает возможность отправлять несколько ответов на один запрос. Например если клиент делает запрос на страницу, для которой нужны другие файлы (стили, скрипты, графика и т.д.), то сервер может это определить и передать сразу все, одним ответом. Другими словами, сервер видит, что могут понадобится еще другие ресурсы на новой странице.
- HTTP/2 - бинарный протокол. Устраняет некоторые проблемы с безопасностью, которые связанные с передачей текста в HTTP.
- Приоритизация. Браузер получает в первую очередь наиболее важные файлы. Учитывается вес и зависимость.
- Менее подвержен ошибкам и занимает меньше места в сети.
Некоторые недостатки HTTP/2
- Периодически возникают сложности с блокировкой заголовков при одновременной загрузки данных. В какой-то момент могут остановится все потоки при потере пакета.
- Каждое соединение требует больших объёмов памяти по сравнению с HTTP.
- Веб-приложения с ресурсоёмкими аудио и видеопотоками работают медленнее.
- Использование одновременных запросов увеличивает нагрузку на сервер, что приводит к тайм-ауту запросов
Особенности по миграции на HTTP/2 с HTTP/1
- Если SSL сертификата нет, то браузеры будут игнорировать HTTP/2.
- Для ускорения производительности сайтов на HTTP/1 была общая тенденция объединять файлы. У Битрикса даже из коробки есть возможность объединять файлы для этого. В общем от этого нужно избавляться, на HTTP/2 это не просто бесполезно, это вредно. Это же касается всеми любимых спрайтов, они теперь не нужны.
Поддержка
- Apache с версии 2.4.17;
- NGINX c 1.9.5;
Более подробная информация о серверной поддержке
На 2023 год, стоит оставлять еще поддержку HTTP/1.x.
HTTP/3
У HTTP/3 добавляется помощник, протокол — QUIC. Он мультиплексирует несколько потоков данных поверх UDP. Протокол разработали в 2012 году, ребята из Goggle, и он является основой для HTTP/3. Главный его плюс, это сокращение задержки при установлении соединения.
Преимущества
- Мультиплексирование без блокировки HOL. HTTP/3 работает поверх UDP. Используя UDP, этот протокол не ждёт успешной передачи, а продолжает процесс загрузки.
- Протоколу достаточно один раз проверить адресат, чтобы затем установить сеанс. Это влияет на скорость шифрования.
- Неразрывное соединение. HTTP/3 использует идентификаторы соединения, поэтому загрузка продолжается даже при смене сети. То есть можно переключится с LTE на Wi-Fi без повторного установления сеанса.
Поддержка
- Поддерживается Chrome;
- Подробнее о браузерной поддержке (can i use);
На начало 2023 г. HTTP/3 это все таки экспериментальное обновление HTTP, и скорее всего еще будут правки. Но переходить с HTTP/2 будет проще чем с HTTP/1. На прикладном уровне HTTP/2 и HTTP/3 не имеют отличий (по крайней мере пока).
Полезная информация о HTTP/3 [RUS]
- История и ключевые концепции;
- Характеристики производительности HTTP/3;
- Развёртывание HTTP/3 на практике.
Сводка отличий между HTTP/1, HTTP/2 и HTTP/3
HTTP | HTTP/2 | HTTP/3 | |
Способ передачи | Передача в виде текста. конвейерной обработки и блокировкой очереди. | Двоичный уровень кадрирования кодирует запросы, ответы и разбивает их на более мелкие пакеты информации. | |
Сжатие | Gzip. Заголовки не сжимаются | HPACK. Заголовки сжимаются. | QPACK и HPACK с сжатием заголовков. |
Запрос ресурсов | Встраивание | Server Push | |
Переполнение буфера | Каждое новое соединение требует отдельного механизма управления потоком. | Присутствует мультиплексирование. Все потоки данных в одном соединении, клиент и сервер управляют потоками сами. | |
Коды состояний | Нет различий | ||
Методы запросов | Нет различий |
Дата публикации/обновления: 04 Февраля 2023
Автор: Виталий Трефилов
Новые посты в Telegram: @vtwblog
Комментарии
Оставить комментарий
Где-то допущена ошибка
Пожалуйста, представьтесь
Некорректно введена электронная почта
Введите комментарий
Слишком много текста
Ошибка в капче
Вы уже голосовали за этот комментарий
Ваш комментарий отправлен на модерацию