Чего не хватает в HTTP 1.x для мультиплексирования, например HTTP 2 - PullRequest
0 голосов
/ 29 марта 2019

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

Кроме того, с клиента вы можете сделать несколько HTTP-запросов параллельно, но тогда для каждого из них потребуется отдельное TCP-соединение.

Также HTTP 2 поддерживает создание нескольких запросов по одному TCP-соединению из-за мультиплексирования, и, следовательно, ограничение HTTP 1.1 для поддержания последовательности отсутствует.

Если несколько запросов отправляются параллельно через http 1.x, это не работает. Что такое, что http 1.x не предоставляет, из-за чего http 2, как мультиплексирование, не может быть сделано.

Ответы [ 2 ]

1 голос
/ 29 марта 2019

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

Поэтому запросы и ответы должны отправляться и приниматься полностью, по порядку.

HTTP / 2 имеет мультиплексирование, где каждая пара (или «сессия») имеет уникальный идентификатор, который отправляется с каждым »frame ", поэтому получатель частичного запроса или ответа знает, к какой паре он принадлежит.

1 голос
/ 29 марта 2019

HTTP / 1.1 был стандартизирован в 1999 году, и это была лишь небольшая эволюция HTTP / 1.0 (стандартизированный 1996), в которой в основном добавлена ​​поддержка конвейерной передачи HTTP, кускового кодирования HTTP (длина контента неизвестна заранее) и HTTP поддерживается активным благодаря дефолт. Интернет сильно отличался в 1999 году от сегодняшнего дня (так как он, вероятно, будет сильно отличаться через 20 лет). В то время Javascript был просто модным инструментом, позволяющим прокручивать некоторый текст по всей странице (т. Е. Новостная лента и т. Д.), Не было Ajax и динамически обновляющихся частей на стороне клиента, и вся идея Web 2.0 была еще далеко.

Другими словами: в настоящее время просто не было необходимости в более сложном протоколе, поддерживающем мультиплексирование. Спросите еще раз через 20 лет, почему HTTP / 2 или HTTP / 3 еще не имели всех функций, которые вам нужны в 2039 году.

...