digital-garden/dev/network/HTTP 2.md
Struchkov Mark d0a4acf39c
All checks were successful
continuous-integration/drone/push Build is passing
Обновление
2024-11-27 22:08:08 +03:00

48 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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]]
**Автор**::
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->