File tree Expand file tree Collapse file tree 1 file changed +14
-1
lines changed
Expand file tree Collapse file tree 1 file changed +14
-1
lines changed Original file line number Diff line number Diff line change 5757
5858客户端通知服务器打开一条新的 Stream。客户端应为每个 Stream 生成在 Session 内单调递增的 streamId。
5959
60- 若客户端上报的版本 ` v ` >= 2,服务器收到 cmdSYN 后应立即发送带有对应 streamId 的 cmdSYNACK 回包通知客户端 stream 打开成功。
60+ ### cmdSYNACK
61+
62+ 若客户端上报的版本 ` v ` >= 2,服务器收到 cmdSYN 后应在代理出站连接 TCP 握手完成后,发送带有对应 streamId 的 cmdSYNACK 回包。
63+
64+ 如果您的服务器软件架构不支持回报出站连接状态,也可以在收到 cmdSYN 后直接发送 cmdSYNACK。
65+
66+ cmdSYNACK 若不带有 data,则表示代理出站连接 TCP 握手成功。若带有 data,则 data 代表错误信息。客户端收到错误信息后必须关闭对应 stream。
6167
6268#### cmdPSH
6369
@@ -214,12 +220,19 @@ anytls 协议参数不包括 TLS 的参数。应该在另外的配置分区中
214220
215221### 协议版本 2
216222
223+ 本次协议更新主要是为了应对隧道连接卡住的问题。
224+
217225仅当您的服务器和客户端都支持版本 2 时,才应该启用以下特性。否则,两端都将按照版本 1 运行。
218226
219227- 可以使用 cmdSYNACK 检测并恢复卡住的隧道连接
220228- 可以使用主动心跳包 (cmdHeartRequest cmdHeartResponse) 检测并恢复卡住的隧道连接
221229- 服务器可以向客户端发送协商信息 (cmdServerSettings)
222230
231+ 版本协商原理:
232+
233+ - v2 服务器 + v1 客户端:由于客户端发送的版本为 1,服务器直接禁用版本 2 特性。
234+ - v1 服务器 + v2 客户端:由于客户端发送的版本为 2,服务器不认识,也不会向客户端发送 cmdServerSettings。客户端没有收到 cmdServerSettings 提示的版本,默认版本为 1,则不启用版本 2 特性。
235+
223236#### cmdSYNACK
224237
225238当连接意外断开且客户端未收到 RST 时,如果复用此连接,协议版本 1 的行为在极端情况下可能会导致很长的超时(取决于系统设置)。
You can’t perform that action at this time.
0 commit comments