Анализ HTTP / 1.1, webSocket и HTTP / 2.0 с точки зрения сокетов - PullRequest
0 голосов
/ 21 сентября 2018

Мне нужно знать, как HTTP / 1.1, webSocket и HTTP / 2.0 работают в терминах Socket (меня не интересует список различных функций между этими тремя технологиями).

Итак, когда я начинаюзапрос HTTP / 1.1 Я знаю, что после ответа сервера мое соединение будет закрыто.Но позвольте мне сказать, когда я запускаю HTTP / 1.1.запрос на уровне транспортного уровня будет инициализирован сокет для отправки моего HTTP-запроса (заголовок и данные) на веб-сервер.

Итак, у меня есть три вопроса:

  1. Если HTTP / 1.1 реализует сокет (открытый с моего компьютера и веб-сервера) для отправки своего запроса, почему он не может использовать этот сокет для реализации цикла запрос-ответ все больше и больше раз?

  2. Отличается ли принципал между HTTP / 1.1 и webSocket тем, что HTTP / 1.1 закрывает сокет после первого цикла запрос-ответ, а webSocket не закрывает сокет после первого цикла?

  3. Как HTTP / 2.0 управляет сокетом между клиентом и сервером?

Заранее спасибо.

1 Ответ

0 голосов
/ 25 сентября 2018

Чтобы ответить на ваш вопрос:

  1. На самом деле HTTP / 1.1 позволяет использовать соединение для более чем одного запроса с помощью функции "keep-alive".

    Это означает, что несколько запросов HTTP / 1.1 могут отправляться через одно соединение TCP / IP.

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

    FYI: закрытие соединения - это подход HTTP / 1, где конец ответа будет отмечен сокетомзакрытие.В HTTP / 1.1 конец ответа обычно известен по заголовку «Content-Length» (или по метке фрагментированного кодирования).

  2. Нет, разница намного больше.Протокол WebSocket не является протоколом запроса-ответа, это протокол, основанный на сообщениях, и это совершенно другой зверь.

    По сути, вы можете думать о WebSockets как о более похожих на TCP / IP, чем на HTTP,за исключением того, что TCP / IP является потоковым протоколом, а WebSockets - протоколом на основе сообщений ...

    Протокол WebSockets обещает, что сообщения не приходят фрагментированными, в то время как вызовы TCP / IP read могут возвращать фрагментсообщение (или более одного сообщения).

  3. HTTP / 2.0 использует одно соединение, но имеет двоичный уровень упаковки сообщений, который позволяет серверу и клиенту мультиплексировать (управлять более чем одним потоком информации, используя одно соединение).

    Это означает, что очередь запрос-ответ параллельна (вместо последовательной очереди HTTP / 1.1).Например, ответ на запрос № 2 может поступить до ответа на запрос № 1.

    Это решает проблему HTTP / 1.1 «конвейеризации» и упорядочения сообщений, когда длинный цикл запрос / ответ может вызвать вседругие запросы «ждать».

    Существуют и другие свойства и различия, но в некоторых отношениях это, вероятно, главное (в дополнение к другим факторам производительности, таким как сжатие заголовков, форматы двоичных данных и т. д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...