From 67f41cb3babe8bffa410a21726c4cf710a42166e Mon Sep 17 00:00:00 2001 From: V2Ray Date: Tue, 22 Sep 2015 00:08:27 +0200 Subject: [PATCH] Update doc --- spec/design.md | 61 ++++++++++++-------------------------------------- spec/vmess.md | 2 +- 2 files changed, 15 insertions(+), 48 deletions(-) diff --git a/spec/design.md b/spec/design.md index 6048fde8..3e541c63 100644 --- a/spec/design.md +++ b/spec/design.md @@ -8,39 +8,31 @@ ## 架构 ### 术语 -* Point:一个 V2Ray 服务器称为 VPoint -* Set:本机上的一组 VPoint -* SuperSet:多机环境中的多个 VSet -* Source:用户所使用的需要翻墙的软件,比如浏览器 -* End:用户需要访问的网站 -* User:一个受到 VPoint 认证的帐号 -* [ID](https://github.com/V2Ray/v2ray-core/blob/master/spec/id.md):全局唯一的 ID,类似于 UUID - +* Point:一个 V2Ray 服务器称为 Point Server +* Set:一组 Point Server,包含多个 Point 进程,由一个 Master 进程统一管理。 +* SuperSet:多机环境中的多个 Set ### 工作流程 -VPoint 可提收来自 VSource 或其它 VPoint 的请求,并将请求转发至配置中的下一个 VPoint(或 VSet 或 VSuperSet) 或目标网站,然后将所得到的应答回复给请求来源。 -VPoint 采用白名单机制,只接受已认证帐号的请求。 +Point 可接收来自用户或其它 Point 的请求,并将请求转发至配置中的下一个 Point(或 Set 或 SuperSet) 或目标网站,然后将所得到的应答回复给请求来源。 +Point 采用白名单机制,只接受已认证帐号的请求。 ### 通信协议 -* VPoint 之间默认使用自有 VMess 协议,或第三方自定义协议。 -* VPoint 和客户端之间可使用以下协议: +* Point 之间默认使用自有 VMess 协议,或第三方自定义协议。 +* Point 和客户端之间可使用以下协议: * HTTP Proxy - * SOCKS 5 Proxy + * SOCKS Proxy * PPTP / L2TP / SSTP 等 VPN 隧道 * 其它自定义协议 -* VPoint 和目标网站之间使用以下协议: +* Point 和目标网站之间使用以下协议: * HTTP / HTTPS * UDP (DNS) #### VMess -VMess 为 V2Ray 的原生协议,设计用于两个 VPoint 之间的通信。[详细设计](https://github.com/V2Ray/v2ray-core/blob/master/spec/vmess.md) - -### User -* 每个 User 有一个 ID +VMess 为 V2Ray 的原生协议,设计用于两个 Point 之间的通信。[详细设计](https://github.com/V2Ray/v2ray-core/blob/master/spec/vmess.md) ### Point * 每个 Point 有一个 ID,运行时生成 -* 每个 Point 可使用独立的配置文件,或从 VSet 继承 +* 每个 Point 可使用独立的配置文件,或从 Set 继承 * 一个 Point 监听主机上的一个特定端口(可配置),用于接收和发送数据 * 一个 Point 运行于一个独立的进程,可设定其使用的系统帐户 @@ -53,36 +45,11 @@ TODO ## Point 详细设计 一个 Point 包含五个部分: * 配置文件处理:读取和解析配置文件 -* 输入:负责与客户端建立连接(如 TCP),接收客户端的消息 -* 控制中心:负责处理事件 - * 加密解密 - * Point 负载均衡 -* Point 进程间通信 -* 输出:负责向客户端发送消息 +* 输入(Inbound):负责与客户端建立连接(如 TCP),接收客户端的消息 +* 输出(Outbound):负责向客户端发送消息 ### 配置文件 -配置文件使用 JSON / ProtoBuf 兼容格式,定义 TODO - -### 加密 -TODO - -### 任务处理 -TODO - -### 控制中心 -控制中心响应以下事件: - -**INIT** -* 输入:用户 ID -* 输出:如果用户 ID 有效:"OK",否则关闭连接 - -**MSG** -* 输入:VMess 消息 -* 输出:对应的响应消息 - -**END** -* 输入:用户 ID -* 输出:如果用户 ID 有效:关闭连接 +配置文件使用 JSON / ProtoBuf 兼容格式 ## 编程语言 暂定为 golang。 diff --git a/spec/vmess.md b/spec/vmess.md index f485a84c..b9e83d25 100644 --- a/spec/vmess.md +++ b/spec/vmess.md @@ -4,7 +4,7 @@ ## 数据请求 认证部分: -* 16 字节:基于时间的 hash(用户 ID),见下文 +* 16 字节:基于时间的 hash(用户 [ID](https://github.com/V2Ray/v2ray-core/blob/master/spec/id.md)),见下文 指令部分: * 1 字节:随机填充长度 M (0 < M <= 32)