В 2015 году был представлен HTTP/2, который стал значительным шагом в развитии протокола. Его главной целью было устранение недостатков HTTP/1.1, в том числе проблемы блокировки первой строки (Head-of-Line, HOL) на уровне приложения. Это удалось достичь благодаря внедрению мультиплексирования, что позволило передавать несколько запросов одновременно через одно TCP-соединение, минимизируя задержки и увеличивая производительность. Однако HOL-блокировка на транспортном уровне (TCP) всё ещё осталась нерешённой.

Одним из важнейших изменений стало то, что HTTP/2 перешёл с текстового на бинарный формат. Это нововведение улучшило обработку запросов и ответов, упростив разбиение данных на более мелкие фрагменты, которые называются кадрами (frames). Кроме того, появилась возможность сжимать заголовки с помощью алгоритма HPACK, что снизило объём данных, передаваемых по сети, и ускорило загрузку страниц.

Одной из ключевых концепций HTTP/2 стал механизм потоков (streams). Это абстракция, позволяющая мультиплексировать несколько HTTP-запросов и ответов в рамках одного TCP-соединения. Потоки работают независимо друг от друга, что предотвращает блокировку одних запросов другими, даже если они выполняются одновременно.

Каждое соединение в HTTP/2 содержит несколько потоков. Потоки, в свою очередь, состоят из сообщений формата “запрос-ответ”, которые делятся на кадры. Эти кадры передаются между сервером и клиентом, а специальные теги помогают идентифицировать их и собирать в правильной последовательности.

HTTP/2 предоставляет возможность приоритизировать потоки. Приоритизация позволяет разработчикам назначать запросам относительный вес, чтобы более важные запросы обрабатывались первыми. Например, это может быть полезно при загрузке веб-страницы, где основные элементы, такие как HTML и CSS, должны обрабатываться быстрее, чем изображения или дополнительные скрипты.

Преимущества HTTP/2

  • Мультиплексирование: Одновременная передача нескольких запросов через одно соединение без блокировок.
  • Сжатие заголовков: Уменьшение объёма передаваемых данных благодаря алгоритму HPACK.
  • Бинарный формат: Более эффективная передача и обработка данных.
  • Приоритизация: Возможность распределять ресурсы в зависимости от важности запросов.

Как работает HTTP/2:

  • Устанавливается одно TCP-соединение между сервером и клиентом.
  • В рамках соединения создаются потоки, каждый из которых обрабатывает отдельный запрос.
  • Сообщения в потоке разбиваются на кадры, чтобы их можно было передавать параллельно.
  • На принимающей стороне кадры собираются обратно в исходное сообщение благодаря меткам, уникальным для каждого кадра.

Мета информация

Область:: 00 Сети
Родитель:: HyperText Transfer Protocol
Источник::
Создана:: 2024-11-27
Автор::

Дополнительные материалы

Дочерние заметки