Назад | Перейти на главную страницу

Протокол HTTP: классификация TLS / запросов / ответов после вызова метода запроса GET в curl

Прежде всего, извините за неудобства. Я не знаю, правильный ли это форум, но я прочитал несколько тем, и есть несколько очень опытных людей по этому вопросу, так что, возможно, один из них может мне помочь.

Я провожу исследования для университета. В рамках этого исследования я хочу указать, что происходит, когда вы используете метод HTTP-запроса Get против сервера. Для этого я использовал curl -v в терминале Ubuntu против веб-домена.

Ниже прилагается классификация, которую я установил:

введите описание изображения здесь

-Синий прямоугольник включает протокол установления связи TLS с ALPN.

-Зеленое поле включает сообщение запроса, которое клиент отправляет на сервер, а также поля заголовка запроса.

-Красное поле включает ответное сообщение и поля заголовка, которые сервер отправляет клиенту.

-Последняя коробка включает «тело полезной нагрузки».

У меня два вопроса:

  1. Линия между зеленым и красным квадратами, в которой говорится: «Состояние подключения изменено (обновлено MAX_CONCURRENT_STREAMS)», в какой раздел я должен ее поместить? В зеленом разделе, как будто это часть полей заголовка запроса, которые клиент отправляет на сервер? Или это линия, которая должна иметь отдельный цвет?

  2. За исключением строки «Состояние подключения изменено (обновлено MAX_CONCURRENT_STREAMS)», согласны ли вы с сделанной мной классификацией? Как вы думаете, здесь ошибка?

Спасибо большое за помощь исследователю;)

Извините, если в формулировке ошибка. Английский не мой родной язык.

HTTP / 2 (и скоро будет выпущен HTTP / 3) теперь существует на двух разных уровнях:

  1. Семантический уровень - то, что считается типичным HTTP с использованием таких методов, как GET и HTTP-заголовки и тела.
  2. Уровень двоичного кадрирования, который разделяет эти HTTP-запросы и ответы на пакеты, а также имеет управляющие сообщения для определения того, как сообщения должны быть отправлены, в частности, поскольку у вас есть прецедент разделения протокола HTTP на различные категории (отправка запроса, заголовки ответа и ответ тела).

Если мы будем думать о ваших Зеленых и Красных частях как о частях 1, то Connection state changed... сообщение является частью 2. Независимо от того, хотите ли вы включить их в HTTP-сообщения (клиент или сервер), решать вам, поскольку технически они являются частью HTTP / 2. Лично я, вероятно, отнесу когда к отдельным управляющим сообщениям.

Также некоторые сообщения после рукопожатия TLS и до первого GET, вероятно, принадлежат к той же категории - начиная с начала строки. Using HTTP/2, server... до начала строки включительно Using Stream ID: 1.... Хотя рукопожатие TLS используется для согласования HTTP / 2 (через расширение ALPN), эти сообщения являются тем, что происходит после, и не имеют ничего общего с рукопожатием TLS. Они являются частью протокола HTTP / 2, а не протокола TLS.

Вопрос 2 первый: выглядит правдоподобно.

Вопрос 1: Это сообщение принадлежит к той же группе, что и исходные сообщения curl. Он регистрирует изменение состояния клиента curl, а строки выше и ниже, очевидно, являются заголовками протокола HTTP.