mirror of https://github.com/v2ray/v2ray-core
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
dependabot/github_actions/codecov/codecov-action-5
master
archive
v4.18.0
v4.17.0
v4.16.3
v4.16.2
v4.16.1
v4.16.0
v4.15.1
v4.15.0
v4.14.2
v4.14.1
v4.14.0
v4.13.0
v4.12.0
v4.11.0
v4.10.0
v4.9.0
v4.8.0
v4.7.3
v4.7.2
v4.7.1
v4.7.0
v4.6.6
v4.6.5
v4.6.4
v4.6.3
v4.6.2
v4.6.1
v4.6.0
v4.5.0
v4.4
v4.3
v4.2
v4.1.1
v4.1
v4.0.2
v4.0.1
v4.0
v3.50.2
v3.50.1
v3.50
v3.49
v3.48
v3.47
v3.46.4
v3.46.3
v3.46.2
v3.46.1
v3.46
v3.45.1
v3.45
v3.44
v3.43
v3.42
v3.41
v3.40
v3.39
v3.38
v3.37.6
v3.37.5
v3.37.4
v3.37.3
v3.37.2
v3.37.1
v3.37
v3.36
v3.35
v3.34
v3.33.1
v3.33
v3.32.1
v3.32
v3.31.1
v3.31
v3.30.1
v3.30
v3.29
v3.28
v3.27.1
v3.27
v3.26
v3.25.1
v3.25
v3.24.1
v3.24
v3.23.2
v3.23.1
v3.23
v3.22
v3.21.1
v3.21
v3.20
v3.19.1
v3.19
v3.18.2
v3.18.1
v3.18
v3.17.3
v3.17.2
v3.17.1
v3.17
v3.16
v3.15
v3.14
v3.13
v3.12
v3.11.3
v3.11.2
v3.11.1
v3.11
v3.10
v3.9
v3.8.1
v3.8
v3.7
v3.6
v3.5
v3.4
v3.3
v3.2
v3.1
v3.0.1
v3.0
v2.51.2
v2.51.1
v2.51
v2.50
v2.49
v2.48
v2.47
v2.46.1
v2.46
v2.45
v2.44
v2.43.3
v2.43.2
v2.43.1
v2.42.1
v2.43
v2.42
v2.41
v2.40.2
v2.40.1
v2.40
v2.39
v2.38.2
v2.38.1
v2.38
v2.37
v2.36.3
v2.36.2
v2.36.1
v2.36
v2.34
v2.33.1
v2.33
v2.32
v2.31.1
v2.31
v2.30
v2.29
v2.28
v2.27.1
v2.27
v2.26
v2.25.2
v2.25.1
v2.25
v2.24.3
v2.24.2
v2.24.1
v2.24
v2.23.4
v2.23.3
v2.23.2
v2.23.1
v2.23
v2.22.1
v2.22
v2.21.3
v2.21.2
v2.21.1
v2.21
v2.20.2
v2.20.1
v2.20
v2.19.7
v2.19.6
v2.19.5
v2.19.4
v2.19.3
v2.19.2
v2.19.1
v2.19
v2.18.2
v2.18.1
v2.18
v2.17.1
v2.17
v2.16.7
v2.16.6
v2.16.5
v2.16.4
v2.16.3
v2.16.2
v2.16.1
v2.16
v2.15.1
v2.15
v2.14.1
v2.14
v2.13.2
v2.13.1
v2.13
v2.12.1
v2.12
v2.11.2
v2.11.1
v2.11
v2.10.5
v2.10.4
v2.10.3
v2.10.2
v2.10.1
v2.10
v2.9
v2.8.3
v2.8.2
v2.8.1
v2.8
v2.7.1
v2.7
v2.6.1
v2.6
v2.5.2
v2.5.1
v2.5
v2.4.2
v2.4.1
v2.4
v2.3.3
v2.3.2
v2.3.1
v2.3
v2.2.1
v2.2
v2.1.2
v2.1.1
v2.0
v1.24.4
v1.24.3
v1.24.2
v1.24.1
v1.24
v1.23.1
v1.23
v1.22
v1.21.2
v1.21.1
v1.21
v1.20
v1.19.2
v1.19.1
v1.19
v1.18.2
v1.18.1
v1.18
v1.17.3
v1.17.2
v1.17.1
v1.17
v1.16
v1.15
v1.14
v1.13.1
v1.13
v1.12.9
v1.12.8
v1.12.7
v1.12.6
v1.12.5
v1.12.4
v1.12.3
v1.12.2
v1.12.1
v1.12
v1.11.2
v1.11.1
v1.11
v1.10
v1.9.1
v1.9
v1.8
v1.7
v1.6
v1.5
v1.4
v1.3
v1.2
v1.1.4
v1.1.3
v1.1.2
v1.1.1
v1.1
v1.0
v0.14.5
v0.14.4
v0.14.3
v0.14.2
v0.14.1
v0.14
v0.13
v0.12
v0.11
v0.10
v0.9.1
v0.9
v0.8
v0.7
v0.6.2
v0.6.1
v0.6
v0.5
v0.4
v0.3
v0.2
v0.1
v2.1
v4.18.1
v4.18.2
v4.19.1
v4.20.0
v4.21.0
v4.21.1
v4.21.2
v4.21.3
v4.22.0
v4.22.1
v4.23.0
v4.23.1
v4.23.2
v4.23.3
v4.23.4
v4.24.2
v4.25.0
v4.25.1
v4.26.0
v4.27.0
v4.27.5
v4.28.2
v4.31.0
${ noResults }
2.6 KiB
2.6 KiB
V2Ray 设计概要
目标
- V2Ray 自身提供基础的翻墙功能,单独使用可满足日常需求;
- V2Ray 可被用于二次开发,可为用户提供个性化的翻墙体验,从而也达到难以统一屏蔽之效果;
- V2Ray 为模块化设计,模块之间互相独立。每个模块可单独使用,也可和其它模块搭配使用。
架构
术语
- Point:一个 V2Ray 服务器称为 VPoint
- Set:本机上的一组 VPoint
- SuperSet:多机环境中的多个 VSet
- Source:用户所使用的需要翻墙的软件,比如浏览器
- End:用户需要访问的网站
- User:一个受到 VPoint 认证的帐号
- ID:全局唯一的 ID,类似于 UUID
工作流程
VPoint 可提收来自 VSource 或其它 VPoint 的请求,并将请求转发至配置中的下一个 VPoint(或 VSet 或 VSuperSet) 或目标网站,然后将所得到的应答回复给请求来源。 VPoint 采用白名单机制,只接受已认证帐号的请求。
通信协议
- VPoint 之间默认使用自有 VMess 协议,或第三方自定义协议。
- VPoint 和客户端之间可使用以下协议:
- HTTP Proxy
- SOCKS 5 Proxy
- PPTP / L2TP / SSTP 等 VPN 隧道
- 其它自定义协议
- VPoint 和目标网站之间使用以下协议:
- HTTP / HTTPS
- UDP (DNS)
VMess
VMess 为 V2Ray 的原生协议,设计用于两个 VPoint 之间的通信。详细设计
User
- 每个 User 有一个 ID
Point
- 每个 Point 有一个 ID,运行时生成
- 每个 Point 可使用独立的配置文件,或从 VSet 继承
- 一个 Point 监听主机上的一个特定端口(可配置),用于接收和发送数据
- 一个 Point 运行于一个独立的进程,可设定其使用的系统帐户
Set
TODO
SuperSet
TODO
Point 详细设计
一个 Point 包含五个部分:
- 配置文件处理:读取和解析配置文件
- 输入:负责与客户端建立连接(如 TCP),接收客户端的消息
- 控制中心:负责处理事件
- 加密解密
- Point 负载均衡
- Point 进程间通信
- 输出:负责向客户端发送消息
配置文件
配置文件使用 JSON / ProtoBuf 兼容格式,定义 TODO
加密
TODO
任务处理
TODO
控制中心
控制中心响应以下事件:
INIT
- 输入:用户 ID
- 输出:如果用户 ID 有效:"OK",否则关闭连接
MSG
- 输入:VMess 消息
- 输出:对应的响应消息
END
- 输入:用户 ID
- 输出:如果用户 ID 有效:关闭连接
编程语言
暂定为 golang。