Websocket问题:框架、掩蔽

Websocket问题:框架、掩蔽,websocket,fragmentation,Websocket,Fragmentation,关于websockets协议发送二进制数据的几个问题: 为什么有效载荷被屏蔽了?TCP不能保证数据的完整性吗 碎片化到底是什么?这是否意味着,如果我发送一个1000字节有效负载的单帧,另一端(由于中间代理)可能会接收四个分别为200、300、270和230字节的单独帧(只有最后一个帧设置了FIN位?) 从客户端到服务器(不是服务器到客户端)发送的有效负载被屏蔽,既不是出于数据完整性也不是真实性的原因,而是为了防止恶意脚本混淆(并可能攻击)旧的中介(Web代理等) 任何符合RFC6455的Web

关于websockets协议发送二进制数据的几个问题:

  • 为什么有效载荷被屏蔽了?TCP不能保证数据的完整性吗

  • 碎片化到底是什么?这是否意味着,如果我发送一个1000字节有效负载的单帧,另一端(由于中间代理)可能会接收四个分别为200、300、270和230字节的单独帧(只有最后一个帧设置了FIN位?)


从客户端到服务器(不是服务器到客户端)发送的有效负载被屏蔽,既不是出于数据完整性也不是真实性的原因,而是为了防止恶意脚本混淆(并可能攻击)旧的中介(Web代理等)

任何符合RFC6455的WebSocket客户端都必须将客户端屏蔽到服务器帧。然而,某些库允许您关闭客户端屏蔽,并关闭未屏蔽客户端帧上的故障(例如)

后者有助于消除与掩蔽相关的CPU开销。如果两个端点都在您的控制之下,并且两者之间的路由完全在您的控制之下(例如,通过环回或Unix域套接字或LAN谈论WebSocket),或者您正在使用TLS,则这可能是可以接受的,因此(在大多数情况下)任何中介都无法查看流量内部

分段的工作原理是这样的:一条WebSocket消息可以被分割成多个WebSocket帧,并且在任何时候都可以被合并,不仅是由发送方,而且是由发送到接收方的任何中间层。是的,只有给定消息的帧序列的最后一个WebSocket帧将设置
FIN