--- aliases: - HTTP/2 tags: - maturity/🌱 date: 2024-11-27 --- В 2015 году был представлен **HTTP/2**, который стал значительным шагом в развитии протокола. Его главной целью было устранение недостатков HTTP/1.1, в том числе проблемы блокировки первой строки (Head-of-Line, HOL) на уровне приложения. Это удалось достичь благодаря внедрению мультиплексирования, что позволило передавать несколько запросов одновременно через одно [[../../../../knowledge/dev/network/TCP|TCP]]-соединение, минимизируя задержки и увеличивая производительность. Однако HOL-блокировка на транспортном уровне (TCP) всё ещё осталась нерешённой. ![[../../meta/files/images/Pasted image 20241127183453.png]] Одним из важнейших изменений стало то, что HTTP/2 перешёл с текстового на бинарный формат. Это нововведение улучшило обработку запросов и ответов, упростив разбиение данных на более мелкие фрагменты, которые называются кадрами (frames). Кроме того, появилась возможность сжимать заголовки с помощью алгоритма HPACK, что снизило объём данных, передаваемых по сети, и ускорило загрузку страниц. Одной из ключевых концепций HTTP/2 стал механизм потоков (streams). Это абстракция, позволяющая мультиплексировать несколько HTTP-запросов и ответов в рамках одного TCP-соединения. Потоки работают независимо друг от друга, что предотвращает блокировку одних запросов другими, даже если они выполняются одновременно. Каждое соединение в HTTP/2 содержит несколько потоков. Потоки, в свою очередь, состоят из сообщений формата “запрос-ответ”, которые делятся на кадры. Эти кадры передаются между сервером и клиентом, а специальные теги помогают идентифицировать их и собирать в правильной последовательности. ![[../../meta/files/images/Pasted image 20241127183553.png]] HTTP/2 предоставляет возможность приоритизировать потоки. Приоритизация позволяет разработчикам назначать запросам относительный вес, чтобы более важные запросы обрабатывались первыми. Например, это может быть полезно при загрузке веб-страницы, где основные элементы, такие как HTML и CSS, должны обрабатываться быстрее, чем изображения или дополнительные скрипты. **Преимущества HTTP/2** - **Мультиплексирование**: Одновременная передача нескольких запросов через одно соединение без блокировок. - **Сжатие заголовков**: Уменьшение объёма передаваемых данных благодаря алгоритму HPACK. - **Бинарный формат**: Более эффективная передача и обработка данных. - **Приоритизация**: Возможность распределять ресурсы в зависимости от важности запросов. ![[../../meta/files/images/Pasted image 20241127184802.png]] **Как работает HTTP/2:** - Устанавливается одно TCP-соединение между сервером и клиентом. - В рамках соединения создаются потоки, каждый из которых обрабатывает отдельный запрос. - Сообщения в потоке разбиваются на кадры, чтобы их можно было передавать параллельно. - На принимающей стороне кадры собираются обратно в исходное сообщение благодаря меткам, уникальным для каждого кадра. *** ## Мета информация **Область**:: [[../../meta/zero/00 Сети|00 Сети]] **Родитель**:: [[HyperText Transfer Protocol|HyperText Transfer Protocol]] **Источник**:: **Создана**:: [[2024-11-27]] **Автор**:: ### Дополнительные материалы - ### Дочерние заметки