Websockets消息完整性

时间:2016-03-11 02:09:13

标签: javascript websocket connection message integrity

在客户端和服务器之间使用WebSocket全双工数据连接时,我保证,当从服务器发送两条消息时,我将在客户端收到这两条完全相同的消息, TCP确实不是

换句话说,如果服务器依次发送hello然后发送its me,客户端是否始终会收到包含helloits me的两条消息,或者是否可能客户收到helloit然后s me或甚至只有helloits me之类的消息?

2 个答案:

答案 0 :(得分:2)

WebSocket最初有文本消息开始和结束字节,但这是旧的信息。在(2011年12月)框架中有一个长度组件。顺便说一句,在框架规范中有一个标志,指定框架是否是整个"消息"或者一个"消息片段",即还有其他帧组成这个"消息"。它由接收器正确组合片段以传递给应用程序代码。通常你不必考虑这个,除非你有非常大的消息" (想想WS"消息" as"数据"而不是真正的消息...... WS本身并不是"消息传递"协议本身。)

但请注意,WebSocket是一种低级传输。可以把它想象成一个基于Web的TCP。应用程序员应该使用高级协议"而不是WS / WSS"并且不用担心订购,重新连接,存在,发布/订阅,元组空间,保证交付等等。如果我们不这样做,将重新发明数十年和数十年的应用程序协议。

答案 1 :(得分:1)

连接非常糟糕,您可能会丢失一条消息(但应该使用tcp重新发送),但它不太可能以这种方式分割。 每条文本消息都有边界 - 开始(0x00)和结束(0xFF)字节。浏览器不应该混乱消息。 可能你可以用另一种顺序获得消息。

你怎么能更确定:

  1. 将自己的控制总和添加到消息中(但确实是它的开销)。
  2. 使用wss(websockets + tls / ssl)协议 - 损坏的邮件不会被解密。