почему мы используем \ n \ r в ответе рукопожатия websocket? - PullRequest
0 голосов
/ 06 ноября 2018

Почему мы используем \r\n в HTTP headers для JS WebSocket рукопожатия response и два раза \r\n\r\n в конце, но не при рукопожатии request. Возможно ли получить ответный ответ без добавления \r\n?

\r\n также используется в TCP socket или нет, он используется только для JS WebSocket?

Например:

"Upgrade: something\r\n".
"Connection: something\r\n".
// ...
"Sec-WebSocket-Accept: something\r\n\r\n";

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Первоначальный запрос рукопожатия WebSocket представляет собой стандартный запрос на обновление HTTP. HTTP использует CRLF (который может быть представлен с помощью escape-последовательности \r\n во многих языках, включая C и C ++) для завершения каждой строки в заголовке сообщения и использует 2 CRLF для отделения заголовков сообщения от его тела. При форматировании исходного рукопожатия вы должны следовать спецификации HTTP.

Чтение RFC 6455 для спецификации протокола WebSocket, все это покрыто.

0 голосов
/ 06 ноября 2018

Почему мы используем \ n \ r в заголовках HTTP для ответа на рукопожатие JS WebSocket ...

Начальное рукопожатие Websocket - HTTP. Таким образом, используемый формат сообщения определен в спецификации HTTP. Сам HTTP имеет эту идею из более ранних стандартов, таких как RFC 821 (формат почты), который снова получил это из более старых вещей - скажем так, он развивался таким же образом, как развивались языки. Можно было бы сделать это по-другому, но теперь это так.

Важная часть заключается в том, что все используют его одинаково и понимают его одинаково, в том числе понимают, что он не \n\r, как вы сказали, не \n, как обычно используется, но \r\n.

\ n \ r также используется в сокете TCP или нет, он используется только для JS WebSocket?

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

...