Skip to content

源码导读入口

简介

本文是 Xray-core 和 REALITY 源码分析的入口,包含完整的项目覆盖清单、入口递归追踪表和模块学习卡片。

本文在项目中的位置

本文是源码分析层的根文档。读完本文后应能了解代码整体组织,并知道每个模块应该读哪篇文档。

适合读者

准备阅读或修改源码的开发者。

前置知识

Go 语言开发基础,了解 Xray-core 的核心概念。

文章理解难度

中等(信息量大,但以索引为主)。

上级文档和相关文档


源码阅读顺序

推荐按以下顺序阅读源码:

  1. 入口和初始化main/main.gomain/commands/base/core/xray.go
  2. 配置解析infra/conf/main/confloader/
  3. 功能注册features/app/proxyman/
  4. 分发和路由app/dispatcher/app/router/
  5. 代理协议proxy/vless/proxy/vmess/ → ...
  6. 传输层transport/internet/
  7. REALITYtransport/internet/reality/REALITY/

项目覆盖清单

xray-core

路径类型作用覆盖文档覆盖深度
main/main.go入口应用主入口01-entrypoints.md深入源码分析
main/commands/命令CLI 子命令01-entrypoints.md流程级说明
main/confloader/配置加载多格式配置加载器01-entrypoints.md流程级说明
main/distro/功能注册import 方式注册所有功能模块02-features.md流程级说明
main/json/格式JSON 配置格式支持01-entrypoints.md结构级说明
main/toml/格式TOML 配置格式支持01-entrypoints.md结构级说明
main/yaml/格式YAML 配置格式支持01-entrypoints.md结构级说明
core/xray.go核心框架Instance 和功能注册01-entrypoints.md深入源码分析
features/接口功能模块接口定义02-features.md结构级说明
app/dispatcher/分发器请求路由和分发03-dispatcher.md深入源码分析
app/proxyman/代理管理入站/出站管理器04-proxyman.md深入源码分析
app/router/路由路由规则决策05-router.md深入源码分析
app/dns/DNSDNS 解析和分流06-dns.md深入源码分析
app/policy/策略连接策略管理02-features.md结构级说明
app/stats/统计流量统计02-features.md结构级说明
app/log/日志日志管理02-features.md结构级说明
app/reverse/反向代理反向代理桥接02-features.md结构级说明
app/commander/命令API 命令处理02-features.md结构级说明
app/observatory/观测连接观测02-features.md结构级说明
app/geodata/地理数据geoip/geosite 数据加载06-dns.md流程级说明
app/version/版本版本信息01-entrypoints.md索引级说明
app/metrics/指标性能指标收集待补充索引级说明
proxy/vless/代理协议VLESS 协议实现../protocols/vless.md深入源码分析
proxy/vmess/代理协议VMess 协议实现../protocols/vmess.md深入源码分析
proxy/trojan/代理协议Trojan 协议实现../protocols/trojan.md流程级说明
proxy/shadowsocks/代理协议Shadowsocks 协议../protocols/shadowsocks.md流程级说明
proxy/shadowsocks_2022/代理协议Shadowsocks 2022 协议../protocols/shadowsocks.md流程级说明
proxy/http/代理协议HTTP 代理../background/proxy-protocols.md流程级说明
proxy/socks/代理协议SOCKS5 代理../background/proxy-protocols.md流程级说明
proxy/dokodemo/代理协议端口转发待补充索引级说明
proxy/freedom/出站直连出站04-proxyman.md流程级说明
proxy/blackhole/出站黑洞出站(丢弃流量)04-proxyman.md流程级说明
proxy/dns/出站DNS 出站06-dns.md流程级说明
proxy/loopback/代理回环代理待补充索引级说明
proxy/tun/VPNTUN 设备入站11-common.md流程级说明
proxy/wireguard/VPNWireGuard 协议../background/proxy-protocols.md流程级说明
proxy/hysteria/代理协议Hysteria 协议待补充索引级说明
transport/internet/传输框架传输层基类07-transport.md深入源码分析
transport/internet/tcp/传输TCP 传输07-transport.md流程级说明
transport/internet/udp/传输UDP 传输07-transport.md流程级说明
transport/internet/websocket/传输WebSocket 传输07-transport.md流程级说明
transport/internet/grpc/传输gRPC 传输07-transport.md流程级说明
transport/internet/httpupgrade/传输HTTP Upgrade 传输07-transport.md流程级说明
transport/internet/splithttp/传输SplitHTTP 传输07-transport.md流程级说明
transport/internet/kcp/传输KCP 传输07-transport.md流程级说明
transport/internet/reality/安全传输REALITY 客户端/服务端08-reality-client.md深入源码分析
transport/internet/tls/安全传输TLS 传输安全10-tls.md深入源码分析
transport/internet/finalmask/伪装流量伪装头待补充索引级说明
transport/internet/hysteria/拥塞Hysteria 拥塞控制待补充索引级说明
transport/internet/headers/HTTP头HTTP 请求头伪装待补充索引级说明
transport/internet/browser_dialer/拨号浏览器拨号(用于爬虫)08-reality-client.md流程级说明
transport/pipe/连接内存管道传输合理跳过测试用内部传输
common/公共库工具函数和数据原语11-common.md结构级说明
infra/conf/配置JSON 配置解析和验证01-entrypoints.md流程级说明
infra/vformat/格式化变量格式化合理跳过工具代码
infra/vprotogen/代码生成Protobuf 代码生成合理跳过构建工具
testing/测试测试框架和场景待补充结构级说明

REALITY(TLS fork)

路径类型作用覆盖文档覆盖深度
REALITY/common.goTLS 核心TLS 常量、Config、证书选择../protocols/reality.md深入源码分析
REALITY/conn.goTLS 连接TLS 连接读写实现../protocols/reality.md流程级说明
REALITY/handshake_client.go客户端握手TLS 客户端握手../protocols/reality.md深入源码分析
REALITY/handshake_client_tls13.go客户端握手TLS 1.3 客户端握手../protocols/reality.md深入源码分析
REALITY/handshake_server.go服务端握手TLS 服务端握手(REALITY 修改)../protocols/reality.md深入源码分析
REALITY/handshake_server_tls13.go服务端握手TLS 1.3 服务端握手../protocols/reality.md深入源码分析
REALITY/handshake_messages.go握手消息握手消息序列化/反序列化../protocols/reality.md流程级说明
REALITY/auth.go签名验证握手签名验证../protocols/reality.md流程级说明
REALITY/generate_cert.go证书临时证书生成../protocols/reality.md流程级说明
REALITY/ech.goECH 支持Encrypted Client Hello../background/ech.md流程级说明
REALITY/quic.goQUICQUIC 传输参数处理../background/quic.md流程级说明
REALITY/key_agreement.go密钥交换ECDHE, ML-KEM../protocols/reality.md流程级说明
REALITY/key_schedule.go密钥调度TLS 1.3 密钥派生../protocols/reality.md结构级说明
REALITY/cipher_suites.go密码套件密码套件定义../protocols/reality.md结构级说明
REALITY/ticket.go会话票据会话票据管理合理跳过标准 TLS 功能
REALITY/alert.goAlertTLS Alert 处理合理跳过标准 TLS 功能
REALITY/cache.go缓存会话缓存合理跳过标准 TLS 功能
REALITY/tls.goAPIServer/Client/Dial 等高层 API../protocols/reality.md流程级说明
REALITY/record_detect.go记录检测TLS 记录层检测待补充结构级说明
REALITY/prf.goPRF伪随机函数合理跳过Go 标准库代码
REALITY/defaults.go默认值密码套件等默认值合理跳过标准 TLS 配置
REALITY/hpke/HPKEHybrid Public Key Encryption../background/ech.md结构级说明
REALITY/tls12/TLS 1.2TLS 1.2 特定逻辑合理跳过非 REALITY 核心
REALITY/tls13/TLS 1.3TLS 1.3 特定逻辑../protocols/reality.md结构级说明
REALITY/fips140tls/FIPSFIPS 140-3 合规合理跳过合规性代码

入口递归追踪表

入口入口类型第一跳继续追踪对应文档
main/main.go:main()应用入口命令行解析 → cmdRuncore.New()initInstanceWithConfig() → 各功能模块01-entrypoints.md
core.New(config)API 入口配置解析 → 功能创建app/*, proxy/*, transport/*01-entrypoints.md
transport/internet/reality.UClient()客户端连接uTLS 握手REALITY 认证验证08-reality-client.md
transport/internet/reality.Server()服务端连接REALITY TLS 握手认证 → VLESS Inbound09-reality-server.md
proxy/vless/inbound/inbound.goVLESS 入站用户验证 → 请求解析Dispatcher → Outbound../protocols/vless.md

核心对象识别证据

对象README/文档证据配置/API 证据源码目录证据为什么是核心对象
VLESSREADME 多处推荐入站/出站协议proxy/vless/项目主要代理协议,与 REALITY/XTLS 紧密集成
REALITY在 README 中重点介绍security: "reality"transport/internet/reality/ + REALITY/核心安全传输创新,消除 TLS 指纹
XTLS VisionREADME 配置中必含 flowflow: "xtls-rprx-vision"proxy/vless/encoding/消除 TLS-in-TLS 特征的关键技术
VMess兼容旧协议入站/出站协议proxy/vmess/重要的兼容协议,V2Ray 遗产
Trojan轻量 TLS 伪装协议入站/出站协议proxy/trojan/广泛使用的 TLS 伪装协议
Shadowsocks经典反审查协议入站/出站协议proxy/shadowsocks/长期存在的反审查协议
TransportREADME 中 streamSettingsnetwork, securitytransport/internet/传输层决定了链路的伪装方式

核心对象覆盖清单

对象类型为什么重要覆盖文档覆盖深度
REALITY安全传输协议核心安全创新,项目旗舰特性../protocols/reality.md深入源码分析
VLESS代理协议默认推荐的代理协议../protocols/vless.md深入源码分析
XTLS Vision流控机制消除 TLS-in-TLS 特征../protocols/xtls.md流程级说明
VMess代理协议重要的兼容协议../protocols/vmess.md流程级说明
Trojan代理协议TLS 伪装代理协议../protocols/trojan.md流程级说明
Shadowsocks代理协议经典反审查协议../protocols/shadowsocks.md流程级说明

领域机制覆盖清单

机制类型用户可见入口影响链路相关对象覆盖文档覆盖深度
REALITY TLS 握手安全/加密security: "reality"客户端→服务端 TLS 层REALITY../protocols/reality.md深入源码分析
XTLS 分流流控flow: "xtls-rprx-vision"入站→出站数据传输VLESS, XTLS../protocols/xtls.md流程级说明
Fallback 回落安全fallbacks 配置入站→回退目标VLESS, REALITY../mechanisms/fallback.md待补充
路由决策分发routing 配置入站→出站Router../source/05-router.md待补充
DNS 分流DNSdns 配置DNS 查询DNS Client../source/06-dns.md待补充
TLS 指纹模拟传输fingerprint 配置客户端→服务端uTLS, REALITY../background/tls-fingerprinting.md流程级说明
流量嗅探检测sniffing 配置入站→路由Sniffing待补充待补充
爬虫模式伪装spiderX/YMITM 响应REALITY Client../background/mitm-attacks.md流程级说明

未覆盖与待补充清单

类型影响当前状态需要补充
VMess 协议详细分析协议文档协议理解不完整需要编写docs/protocols/vmess.md
Trojan 协议详细分析协议文档协议理解不完整需要编写docs/protocols/trojan.md
Shadowsocks 协议详细分析协议文档协议理解不完整需要编写docs/protocols/shadowsocks.md
XTLS 流控机制详细分析机制文档机制理解不完整需要编写docs/protocols/xtls.md
路由模块源码分析源码分析路由逻辑理解不完整需要编写docs/source/05-router.md
DNS 模块源码分析源码分析DNS 理解不完整需要编写docs/source/06-dns.md
传输层源码详细分析源码分析传输层理解不完整需要编写docs/source/07-transport.md
Hysteria 协议协议文档新协议未覆盖需要编写docs/protocols/hysteria.md
配置完整参考参考文档配置查询不方便需要编写docs/reference/config.md
部署指南运维文档缺少运维指导需要编写docs/runbooks/deployment.md
问题排查手册运维文档缺少排障指导需要编写docs/runbooks/troubleshooting.md
Geedge Networks TSG 网关背景知识用户要求覆盖已完成docs/background/geedge-tsg.md
密码学基础背景知识前置知识不完整需要编写在 background/ 中补充密码学文档

模块学习卡片

模块:proxy/vless/encoding/

问题说明
解决什么问题VLESS 的 XTLS 流控编解码,实现 TLS 流量识别和分流
在项目中的位置VLESS 协议的核心流控层
被谁调用VLESS Inbound/Outbound Handler
依赖谁common/buf, common/net
核心文件encoding.go
关键函数NewVisionReader, NewVisionWriter
覆盖深度流程级说明

模块:proxy/vmess/encoding/

问题说明
解决什么问题VMess 消息的编解码、AEAD 加密和认证
在项目中的位置VMess 协议的编解码层
被谁调用VMess Inbound/Outbound Handler
依赖谁proxy/vmess/aead/
核心文件client.go, server.go, encoding.go
覆盖深度流程级说明

模块:transport/internet/reality/

问题说明
解决什么问题REALITY 客户端和服务端的 TLS 握手实现
在项目中的位置传输安全层,连接 REALITY TLS fork 和上层代理协议
被谁调用入站/出站连接建立时
依赖谁github.com/xtls/reality, github.com/refraction-networking/utls
核心文件reality.go
覆盖深度深入源码分析

外部参考资料

资料:Xray-core 源码仓库 类型:源码 链接:https://github.com/XTLS/Xray-core 可信度:A

资料:REALITY 源码仓库 类型:源码 链接:https://github.com/XTLS/REALITY 可信度:A