关于websocket框架的问题

关于websocket框架的问题,websocket,Websocket,根据RFC 6455关于websocket的规范。 数据帧结构如下: frame-fin ; 1 bit in length frame-rsv1 ; 1 bit in length frame-rsv2 ; 1 bit in length

根据RFC 6455关于websocket的规范。 数据帧结构如下:

                          frame-fin           ; 1 bit in length
                          frame-rsv1          ; 1 bit in length
                          frame-rsv2          ; 1 bit in length
                          frame-rsv3          ; 1 bit in length
                          frame-opcode        ; 4 bits in length
                          frame-masked        ; 1 bit in length
                          frame-payload-length   ; either 7, 7+16,
                                                 ; or 7+64 bits in
                                                 ; length
                          [ frame-masking-key ]  ; 32 bits in length
                          frame-payload-data     ; n*8 bits in
                                                 ; length, where
                                                 ; n >= 0
那么保存一个帧的字节数组的最小长度是224字节(56位)?正如我在互联网上读到的,在字节数组中表示一个位,我们需要4个字节(1000)


如何屏蔽数据?我应该屏蔽哪些数据?只有帧有效负载数据或除掩码键之外的所有帧?

只有当帧被掩码时,
帧掩码键
字段才会出现,这仅适用于客户端发送到服务器的帧。并且,
帧有效载荷数据
是可选的;帧可能为空,不包含任何数据。因此,客户端到服务器方向上的帧的最小长度为(1+1+1+1+4+1+7+32)=48位或6字节,服务器到客户端方向上的帧的最小长度为(1+1+1+1+4+1+7)=16位或2字节

这些将是不携带有效载荷的帧。显然,承载有效载荷数据的帧将需要额外的空间

正如我在互联网上读到的,在字节数组中表示一个位,我们需要4个字节 (1000)

不,每个字节包含8位。在程序中使用较大的数据单元来表示位值可能很方便,但这与实际帧中使用的格式完全无关

如何屏蔽数据?我应该屏蔽哪些数据?仅帧有效载荷数据 还是除遮罩关键点之外的所有帧


您可以通过在
帧有效负载数据
上异或使用
帧屏蔽键
进行屏蔽。这在中进行了说明。

只有当帧被屏蔽时,
帧屏蔽键
字段才会出现,这仅适用于客户端发送到服务器的帧。并且,
帧有效载荷数据
是可选的;帧可能为空,不包含任何数据。因此,客户端到服务器方向上的帧的最小长度为(1+1+1+1+4+1+7+32)=48位或6字节,服务器到客户端方向上的帧的最小长度为(1+1+1+1+4+1+7)=16位或2字节

这些将是不携带有效载荷的帧。显然,承载有效载荷数据的帧将需要额外的空间

正如我在互联网上读到的,在字节数组中表示一个位,我们需要4个字节 (1000)

不,每个字节包含8位。在程序中使用较大的数据单元来表示位值可能很方便,但这与实际帧中使用的格式完全无关

如何屏蔽数据?我应该屏蔽哪些数据?仅帧有效载荷数据 还是除遮罩关键点之外的所有帧


您可以通过在
帧有效负载数据
上异或使用
帧屏蔽键
进行屏蔽。这在中进行了描述。

我不确定您使用的是哪种语言。。。但是通读源代码是一位伟大的老师。我建议你用一种你能流利使用的语言阅读解析器的源代码(我写过,但几乎任何你能想到的语言都有解析器,只要选一种就可以了)。我不确定你用的是哪种语言编码。。。但是通读源代码是一位伟大的老师。我建议您阅读一种您能流利使用的语言的解析器的源代码(我写过,但几乎任何您能想到的语言都有解析器,只需选择一种)。