From f9a5cc398683690675495b06cad3191a57e0c6ea Mon Sep 17 00:00:00 2001 From: asxalex Date: Sun, 7 Apr 2024 11:44:22 +0800 Subject: [PATCH] added protocol.md --- docs/protocol.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/protocol.md b/docs/protocol.md index e1af4ab..b59b2f4 100644 --- a/docs/protocol.md +++ b/docs/protocol.md @@ -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字节的uuid,token是用户生成的邀请码,占用8个字节(64比特的大端序整型数字)。之后的ttl占用一个字节,当ttl为0,则直接丢弃该数据包。后面的flag占用2字节,用于标识数据包属性,目前拥有的标识如下: +* `federation`: `0x0010`,表示这个数据包是从其他的supernode主动发送过来的,比如,其他supernode主动发送过来的RegisterSuper;其他supernode * `from_sn`: `0x0020`,表示这个数据包是从服务端发送过来的。 * `socket`: `0x0040`,表示这个数据包里面包含了有用的socket信息(通常在服务端转发的时候有用)。 * `v6_info`: `0x0080`,表示这个数据包里面包含了ipv6信息(专门用在packet数据包里面,目前只有这个数据包使用了该标识)。