admin 管理员组文章数量: 1184232
2023年12月23日发(作者:易语言登录权限源码)
websocket协议格式
WebSocket协议是一种基于TCP协议的全双工通信协议,它可以在客户端和服务器之间建立持久化的连接,实现实时的双向数据传输。WebSocket协议的数据传输格式是二进制数据流,它不依赖于HTTP协议,因此不会受到HTTP协议的限制,可以实现更高效的数据传输。
WebSocket协议的握手过程与HTTP协议的握手过程类似,客户端向服务器发送一个Upgrade请求头,服务器返回一个Upgrade响应头,告诉客户端协议已经升级到WebSocket协议。在握手过程中,客户端和服务器会进行一些参数的交换,主要包括协议版本、支持的子协议、支持的压缩算法等。
一旦握手成功,客户端和服务器之间就可以进行实时的双向数据传输了。WebSocket协议的数据传输格式是二进制数据流,它采用了一种称为帧的结构来封装数据,每个帧包含了数据的一部分,以及一些元数据,例如数据类型、数据长度、是否压缩等。
WebSocket协议的帧结构如下:
0 1 2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8
9 0 1
+-+-+-+-+-------+-+-------------+-------------------------------+
- 1 -
|F|R|R|R| opcode|M| Payload len | Extended payload
length |
|I|S|S|S| (4) |A| (7) | (16/64)
|
|N|V|V|V| |S| | (if payload
len==126/127) |
| |1|2|3| |K| |
|
+-+-+-+-+-------+-+-------------+ - - - - - - - - - - - -
- - - +
| Extended payload length continued, if payload len ==
127 |
+ - - - - - - - - - - - - - - -
+-------------------------------+
| |Masking-key, if MASK
set to 1 |
+-------------------------------+-------------------------------+
| Masking-key (continued) | Payload Data
|
+-------------------------------- - - - - - - - - - - - -
- 2 -
- - - +
: Payload Data
continued ... :
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - +
| Payload Data continued ...
|
+---------------------------------------------------------------+
帧结构中的各字段含义如下:
FIN:表示这是不是一个分片帧。如果它的值为1,表示这是一个完整的帧;如果它的值为0,表示这是一个分片帧;
RSV1、RSV2、RSV3:保留字段,目前没有使用,必须为0;
Opcode:表示帧的类型,有六种类型:文本帧(0x1)、二进制帧(0x2)、关闭帧(0x8)、Ping帧(0x9)、Pong帧(0xA)和扩展帧(0x3~0x7、0xB~0xF);
MASK:表示数据是否经过了掩码处理,掩码是一个随机值,用于加密数据。如果这个值为1,表示数据经过了掩码处理;如果这个值为0,表示数据没有经过掩码处理;
Payload len:表示负载数据的长度,如果它的值小于等于125,表示负载数据的长度;如果它的值等于126,表示负载数据的长度需 - 3 -
要额外的两个字节表示;如果它的值等于127,表示负载数据的长度需要额外的八个字节表示;
Extended payload length:如果Payload len等于126,那么这个字段表示负载数据的长度,需要额外的两个字节表示;如果Payload len等于127,那么这个字段表示负载数据的长度,需要额外的八个字节表示;如果Payload len小于等于125,这个字段的值为0;
Masking-key:如果MASK的值为1,那么这个字段表示掩码的值,它的长度是4个字节;
Payload Data:表示负载数据,它的长度等于Payload len字段的值。
以上就是WebSocket协议的格式,了解这个格式可以帮助我们更好地理解WebSocket协议的工作原理。
- 4 -
版权声明:本文标题:websocket协议格式 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1703329104a447143.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论