Я понимаю, что HTTP 2 заключается в том, что вы создаете соединение, устанавливаете TLS, если хотите, затем обновляетесь до 2
Не совсем.Если вы используете TLS, то использование HTTP / 2 будет согласовано как часть согласования TLS.Если вы не используете TLS, вы можете выполнить обновление, но браузеры поддерживают только HTTP / 2 через HTTPS, так что это большинство случаев использования.
Когда речь идет о сеансах - каждый запрос по соединению обрабатываетсякак уникальный запрос и:.имеет файлы cookie и заголовки, или все они рассматриваются как подзапросы исходного запроса?
Каждый запрос является частью того, что называется потоком в HTTP / 2.Это уникальный запрос со своими собственными файлами cookie и заголовками, который не связан с предыдущими запросами (хотя некоторые примечания см. В примечании ниже).Концептуально это на самом деле ничем не отличается от того факта, что HTTP / 1.1 позволяет отправлять несколько уникальных, не связанных запросов по одному соединению - но в отличие от HTTP / 1.1 несколько запросов все могут передаваться одновременно в HTTP / 2 благодаря мультиплексирование .
Эта диаграмма может помочь объяснить это: https://freecontent.manning.com/mental-model-graphic-how-is-http-1-1-different-from-http-2/
Это влияет на прокси, можете ли вы объединять запросы от клиентов в один поток или нет?
Я не уверен, что вы имеете в виду под этим?
Примечание. Хотя запросы HTTP / 2 не зависят друг от друга, а HTTP все еще не имеет состояния на более высоком уровнеЕсть несколько мест, когда вы переходите на более низкий уровень, где может быть оспорена строгая формулировка, и где технически существует некоторая связь между запросами.Например:
- HTTP / 2 фактически использует сжатие заголовка HPACK для сжатия заголовков HTTP, поэтому, если один и тот же заголовок отправляется дважды для разных запросов (например, для одного и того же файла cookie), то второй вызов будет включать ссылку наранее полученный заголовок, а не повторять данные.
- Каждый запрос имеет уникальный идентификатор потока, который является возрастающим целым числом, которое является нечетным (инициируется клиентом) или четным (инициируется сервером), поэтому, конечно, идентификаторы потокадолжен управляться реализацией HTTP / 2, поэтому можно спорить.
- HTTP / 2 push-ресурсы выдвигаются в ответ на предыдущий идентификатор потока запросов.
Но на самом деле это всего лишь соединениевопросы уровня и эффективности.Для пользователя HTTP / 2 (например, веб-разработчика) каждый запрос HTTP / 2 является настолько же независимым, как и в HTTP / 1.1, а HTTP по-прежнему не имеет состояния.