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 -


本文标签: 协议 数据 表示 客户端 长度