pull/27/head
V2Ray 9 years ago
parent e57089637a
commit 67f41cb3ba

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

@ -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) * 1 字节:随机填充长度 M (0 < M <= 32)

Loading…
Cancel
Save