1

Это следующий вопрос к моему первоначальному вопросу в заголовке TLS в части содержимого запроса HTTPS POST.

В этом первоначальном вопросе я показал (во втором снимке) незашифрованные сообщения TLS между двумя встроенными устройствами. "Клиент" отправляет заголовки HTTP в одном кадре, а данные HTTP - в другом. Встроенное устройство, выступающее в роли сервера, отправляет ответ 400. Ответ был предоставлен Штеффеном Ульрихом.

При последующем чтении информации в Интернете, если я правильно понял, я обнаружил, что функциональность кадрирования, кажется, была добавлена в HTTP/2 и не была частью HTTP/1.x. Я также обнаружил в https://www.keycdn.com/blog/difference-between-http-and-https/, что HTTPS должен поддерживать функциональность кадрирования HTTP/2.

Здесь я прошу проверить это утверждение. Даже если в запросе HTTPS POST мы указываем HTTP/1.1, требуется ли для HTTPS встроенный сервер для поддержки функции кадрирования?

Встроенный клиент использует базу Linux с использованием libcurl, openssl. Насколько я знаю, встроенный сервер основан на библиотеках Boost

1 ответ1

2

что HTTPS должен поддерживать функциональность кадрирования HTTP/2.

HTTPS не обеспечивает кадрирование для HTTP/2. HTTPS - это просто HTTP поверх TLS. У TLS есть собственное оформление данных. HTTP/2 имеет еще один кадр данных. WebSocket также имеет кадрирование данных. HTTP/1.x не имеет кадров и т.д.

Таким образом, с HTTP/2 без TLS (в основном не поддерживается) у вас есть только HTTP/2 кадрирование. С HTTP/2 поверх TLS у вас есть HTTP/2 кадрирование "внутри" кадрирования TLS. С WebSockets в HTTP/2 через TLS вы получаете кадрирование WebSockets и кадрирование HTTP/2 и кадрирование TLS. И все эти кадры не зависят друг от друга, то есть границы могут перекрываться.

Рамка это просто какая-то единица. Он может быть открыт для приложения в виде явных границ сообщений, как в случае WebSockets. Но он также может быть использован только внутри протокола и не предоставляется приложению, как в случае HTTP/2 или TLS.

Даже если в запросе HTTPS POST мы указываем HTTP/1.1, требуется ли для HTTPS встроенный сервер для поддержки функции кадрирования?

Как я уже говорил ранее: HTTP/1.x рассматривает базовый транспорт как поток только без неявных границ сообщения. Таким образом, он вообще не заботится о кадрах в нижележащем слое TLS. Это означает, например, что заголовок HTTP может находиться в одном кадре TLS, а тело HTTP - в следующем кадре. Или 2 байта заголовка HTTP могут находиться в одном кадре TLS, а остальные вместе с телом в следующем кадре. Или каждый байт сообщения HTTP может находиться в другом кадре TLS.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .