Что нужно знать про HTTP/2

Что нужно знать про HTTP/2

@showconfig

HTTP/2 это nextgen после HTTP. Однако HTTP/2 не всегда подходит для всех ситуаций. Вы должны хорошо знать и понимать некоторые основы HTTP/2, чтобы эффективно использовать этот протокол. Список ниже - лишь вершина айсберга. Тем не менее, нужно с чего-то начинать, а это хорошее начало.

1. Он поддерживается всеми современными браузерами, но есть "но"...

Поддержка HTTP/2 есть во всех современных браузерах, что является большой победой для протокола. Но заставить браузер действительно использовать HTTP/2 может быть не так просто. Частью исследования для этой статьи было создание сервера HTTP/2, который демонстрируется в сценарии Katacoda (обязательно перейдите по ссылке и попробуйте сами), и его эксплуатация в браузере и через curl.

Что мы видим?! Браузеры, тот же Chrome, по умолчанию не любят самоподписанные сертификаты TLS. То же самое относится и к curl. Чтобы заставить curl работать с сервером HTTP/2, нужна специальная опция -k.

Некоторые сайты, поддерживающие HTTP/1.1 и HTTP/2, по умолчанию подключаются через HTTP/1.1. Это не является стоппером для всеобщего использования, но указывает на то, что нам еще предстоит пройти определенный путь, чтобы HTTP/2 стал более популярным и ориентированным на всех пользователей сети. По данным W3Techs.com, не более 50% веб-сайтов в Интернете поддерживают HTTP/2.

Популярность HTTP/2 растет, но он еще не стал универсальным. Однако, где HTTP/2 показывает большие перспективы, так это в технологиях, разработанных для использования HTTP/2 с самого начала, например, gRPC.


2. Это основа для gRPC

Одним из мест, где HTTP/2 действительно показывает отличные результаты, является gRPC. 

gRPC - это прикладной протокол, построенный на основе HTTP/2, который позволяет осуществлять взаимодействие "точка-точка". Приложения RESTful используют взаимодействие без статических запросов/ответов по протоколу HTTP/1.1. REST популярен и универсален. Однако блокировка запросов между клиентом и сервером, присущая HTTP/1.1, может привести к узким местам в производительности приложений, использующих REST. 

gRPC используется в таких важных технологиях в наше время, как Kubernetes и Envoy, и это только несколько примеров.


3. HTTP/2 поддерживает несколько запросов в одном TCP-соединении

HTTP/2 поддерживает несколько запросов через одно TCP-соединение. Это очень важно, поскольку браузеры имеют ограничения на TCP-соединения. Некоторые крупные и популярные приложения могут потребовать сотни TCP-соединений от браузера к серверу. Тем не менее, большинство браузеров поддерживают от шести до восьми параллельных соединений в рамках HTTP/1.1. Это приводит к снижению производительности. Однако при использовании HTTP/2 производительность браузера значительно возрастает, поскольку большое количество запросов может быть сделано в рамках одного соединения.

На стороне сервера все тоже становится интересным. Есть приложения, которым требуется обмен данными, выходящий за рамки возможностей соединения/файлового дескриптора, поддерживаемых операционной системой сервера. Запуск множества запросов с одного TCP-соединения значительно снижает нагрузку.


4. HTTP/2 поддерживает мультиплексированную двунаправленную потоковую передачу данных

HTTP/2 поддерживает мультиплексированную двунаправленную потоковую передачу. Это означает, что вы можете установить непрерывное TCP-соединение, которое позволяет данным непрерывно передаваться между клиентом и сервером. И, поскольку соединение двунаправленное, клиент может передавать данные на сервер, в то время как сервер передает данные клиенту. 


5. Безопасность превыше всего

И последнее, но не менее важное: безопасность заложена в HTTP/2. На данный момент все реализации HTTP/2 требуют использования Transport Layer Security (TLS). Это означает, что на любом сервере, реализующем HTTP/2 для обмена данными между клиентом и сервером, должны действовать актуальные и валидные сертификаты открытого и закрытого ключа. 

Кроме того, TLS обеспечивает механизм шифрования, который скрывает все данные, которыми обмениваются клиент и сервер. HTTP/2 ставит безопасность во главу угла при обмене данными и делает шифрование неявным. Это очень важно!


Итого про HTTP/2

За то время, которое существует этот протокол (с 2014 года), он стал обычным явлением. Он столкнулся с некоторыми трудностями среди тех, кто использует его для браузерных приложений, но он получил широкое признание в ЦОДах. HTTP/2 изменил правила обмена данными, особенно на стороне сервера. HTTP/2 обеспечивает возможность поддержки большого количества параллельных запросов через одно TCP-соединение. Кроме того, протокол поддерживает мультиплексную потоковую передачу через одно TCP-соединение. Это означает, что клиент может подключиться к серверу с поддержкой HTTP/2 и отправлять и получать данные непрерывным потоком.


Report Page