websocket帧协议解析

websocket帧.png

1. FIN(1位)
帧结束标志位(1表示最后一帧)

2. RSV1(1位)、RSV2(1位)、RSV3(1位)
预留空间,一般情况下为0。除非协议有拓展(这一点不是很明白)

3. opcode(4位)

十六进制数据 解释
0x0 附加数据帧
0x1 文本数据帧
0x2 二进制数据帧
0x3-7 预留
0x8 连接关闭
0x9 ping
0xA pong
0xB-F 预留

4. MASK(1位)
掩码,1表示采用掩码(客户端向服务端发送必须带掩码),0表示未采用掩码

5. Payload len(7位/7+16位/7+64位)
如果实际传输数据长度小于126,用7位表示数据长度

7位.png

如果实际传输数据长度在126 - 65535(2^16),用7+16位表示数据长度。前7位固定为1111110(126),往后拓展16位。


7+16位.png

如果实际传输数据长度大于65535,用7+64位表示数据长度。该7位的值固定为 1111111 (127),往后扩展64位。


7+64位.png

6. Masking-key(0或者32位)
用于存储掩码密钥,只有MASK为1时才有(客户端向服务端发送)。

7. Payload data (0或者其他)
扩展数据,一般没有,除非有扩展。

你可能感兴趣的:(websocket帧协议解析)