Websocket и TCP - PullRequest
       25

Websocket и TCP

0 голосов
/ 24 октября 2018

Насколько мне известно, Websocket является протоколом на основе сообщений и использует TCP в качестве транспортного уровня.Но сам TCP является потоковым протоколом.Может ли кто-нибудь объяснить,

  1. как сегментировано сообщение в websocket в TCP?
  2. что такое фреймирование в Websocket?
  3. в чем преимущество использования сообщения в Websocket?Я видел из здесь вопрос: Почему WebSockets основывается на фреймах, а не на потоках?

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

1 Ответ

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

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

что такое кадрирование в Websocket?

Вы можете прочитать обо всем фрейме webSocket здесь и посмотреть, как структурирован фрейм webSocket.

Frame format:  
​​
      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-------+-+-------------+-------------------------------+
     |F|R|R|R| opcode|M| Payload len |    Extended payload length    |
     |I|S|S|S|  (4)  |A|     (7)     |             (16/64)           |
     |N|V|V|V|       |S|             |   (if payload len==126/127)   |
     | |1|2|3|       |K|             |                               |
     +-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - +
     |     Extended payload length continued, if payload len == 127  |
     + - - - - - - - - - - - - - - - +-------------------------------+
     |                               |Masking-key, if MASK set to 1  |
     +-------------------------------+-------------------------------+
     | Masking-key (continued)       |          Payload Data         |
     +-------------------------------- - - - - - - - - - - - - - - - +
     :                     Payload Data continued ...                :
     + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
     |                     Payload Data continued ...                |
     +---------------------------------------------------------------+

В чем преимущество использования сообщения вWebsocket?

Неясно, что вы спрашиваете с этим.Причины использования подключения через WebSocket включают в себя следующее:

  1. Возможность «перетаскивать» данные с сервера на клиент в любое время.
  2. Очень низкие издержки при отправке данных с любого изклиент к серверу или сервер к клиенту в любое время (намного меньше накладных расходов для повторяющихся пакетов, чем запрос http).
  3. Возможность иметь постоянное соединение, через которое вы можете делать много вещей, не прибегая ко всему httpформат запроса / ответа.
...