1. 为什么要 0-RTT 认证
-
降低延迟 :SOCKS5 在无认证时需要 2 RTT (握手+请求),若加用户名/密码又要 3 RTT ;0-RTT 通过合并步骤,目标是把握手+认证+请求都压缩到 1 RTT 。 IETF 数据跟踪器
-
结合 TCP Fast Open :在 SYN 包里就带上认证 Token,服务器接受后直接在 SYN-ACK 中返回,进一步减少往返。 ACM Digital Library
2. 草案中 0-RTT 认证的协议流程
-
初次握手时携带凭证
-
客户端在 TCP 建连(或 TFO SYN)里发送 SOCKS6 握手,并在选项(Options)中附带上一次会话中服务器下发的 session ticket 或认证 Token。
-
草案规定:
Clients SHOULD NOT issue AUTH commands unless they advertise authentication methods with support for 0-RTT authentication.
IETF 数据跟踪器
-
-
服务器快速校验并响应
-
服务器一旦收到带有 0-RTT 凭证的握手,立即校验 Token(例如基于预共享密钥、证书签发的会话票据或 HMAC 签名)。
-
校验通过后,服务器在同一次 RTT 内返回握手确认 + CONNECT 响应,客户端随后即可直接开始数据流转发。
-
-
后续会话复用
- 成功完成一次 0-RTT 后,服务器可再次下发新的 session ticket,以便客户端下次启动时继续使用,无需重新做完整认证。
3. 消息格式示例(节选)
握手消息(含 0-RTT 选项)