added protocol.md

This commit is contained in:
asxalex 2024-04-07 11:44:22 +08:00
parent 71a10514f8
commit f9a5cc3986

View File

@ -19,13 +19,14 @@ sdlan协议的总体格式如下
消息头二进制格式如下: 消息头二进制格式如下:
``` ```
+---------+----+-----+------+-----+ +---------+----+-------+-----+------+-----+
| version | id | ttl | flag | pc | | version | id | token | ttl | flag | pc |
+---------+----+-----+------+-----+ +---------+----+-------+-----+------+-----+
``` ```
其中version占用一个字节用于标识协议版本。id用于唯一标识某个客户端为长度为32字节的uuid之后的ttl占用一个字节当ttl为0则直接丢弃该数据包。后面的flag占用2字节用于标识数据包属性目前拥有的标识如下 其中version占用一个字节用于标识协议版本。id用于唯一标识某个客户端为长度为32字节的uuidtoken是用户生成的邀请码占用8个字节(64比特的大端序整型数字)。之后的ttl占用一个字节当ttl为0则直接丢弃该数据包。后面的flag占用2字节用于标识数据包属性目前拥有的标识如下
* `federation`: `0x0010`,表示这个数据包是从其他的supernode主动发送过来的比如其他supernode主动发送过来的RegisterSuper其他supernode
* `from_sn`: `0x0020`,表示这个数据包是从服务端发送过来的。 * `from_sn`: `0x0020`,表示这个数据包是从服务端发送过来的。
* `socket`: `0x0040`表示这个数据包里面包含了有用的socket信息通常在服务端转发的时候有用 * `socket`: `0x0040`表示这个数据包里面包含了有用的socket信息通常在服务端转发的时候有用
* `v6_info`: `0x0080`,表示这个数据包里面包含了ipv6信息专门用在packet数据包里面目前只有这个数据包使用了该标识 * `v6_info`: `0x0080`,表示这个数据包里面包含了ipv6信息专门用在packet数据包里面目前只有这个数据包使用了该标识