文章

代理协议架构与握手流程图解

代理协议架构与握手流程图解

用 Mermaid 图直观呈现《主流代理协议技术详解》中的部署拓扑与关键握手流程。 Obsidian 原生支持 Mermaid:在笔记中渲染以下代码块即可看到图(无需插件,部分旧版需开启 Settings → Editor → 启用 Mermaid)。


1. 四种部署拓扑

1.1 直连(最简单,源站 IP 暴露)

graph LR
    C[客户端] --> S[代理服务端]
    S --> T[目标站点]

1.2 中转 / 链式(入口抗封锁 + 内部高性能)

graph LR
    C[客户端] --> E[入口节点<br/>Reality 强伪装]
    E --> R[中转节点]
    R --> X[出口节点<br/>Hysteria2/TUIC]
    X --> T[目标站点]

1.3 CDN 前置(源站藏在边缘节点后)

graph LR
    C[客户端] --> CDN[CDN 边缘节点]
    CDN --> S[隐藏源站<br/>XHTTP/Trojan+CDN]
    S --> T[目标站点]

1.4 链式 + TUN(系统级接管 + 规则分流)

graph LR
    D[设备/全家流量] --> TU[TUN 系统级接管]
    TU --> CO[核心<br/>路由/规则]
    CO -->|海外| E[入口节点 Reality]
    CO -->|国内| DI[DIRECT 直连]
    E --> T[目标站点]

2. 关键握手流程

2.1 VLESS + Reality(抗主动探测核心)

sequenceDiagram
    participant C as 客户端
    participant S as Reality 服务端
    participant D as dest 真实服务器
    C->>S: TLS1.3 ClientHello<br/>(SNI=伪装域名, Random 嵌认证)
    alt 认证通过
        S->>C: 放行代理流量 (VLESS)
    else 认证失败 (探测/非授权)
        S->>D: 原样转发 ClientHello
        D->>S: 真实 TLS 响应
        S->>C: 转发 (像在访问真实站点)
    end

要点:校验失败时不报错,而是把连接转发给真实目标——审查方看到的是合法会话。

2.2 NaiveProxy(极致伪装,流量=真实 Chrome)

sequenceDiagram
    participant C as 客户端 (uTLS 模拟 Chrome)
    participant Cd as Caddy 真实 Web 服务器
    participant P as Naive 代理处理
    C->>Cd: 标准 HTTPS 请求<br/>(Chrome 指纹/JA4 命中)
    Cd->>P: 转发代理流量
    P->>Cd: 响应
    Cd->>C: 标准 HTTPS 响应

要点:服务端是真实 Caddy,代理流量混在真实 HTTPS 中,报文与真实 Chrome 无统计差异。

2.3 Hysteria2 / TUIC(QUIC 系,弱网优化)

graph LR
    C[客户端] -->|QUIC UDP<br/>0-RTT/多路复用/拥塞控制| S[QUIC 服务端]
    S --> T[目标站点]
    style C fill:#eef,stroke:#88a
    style S fill:#efe,stroke:#8a8

要点:基于 UDP/QUIC,内置拥塞控制(类 BBR)与连接迁移;速度快但 UDP 特征易被针对性限速。


3. 检测 vs 反制 映射(图)

graph TD
    DET[检测手段] -->|字节/魔数| R1[AEAD 加密]
    DET -->|包长/时序| R2[随机化/填充/分片]
    DET -->|TLS 指纹 JA3/JA4| R3[uTLS 模拟真实客户端]
    DET -->|主动探测| R4[优雅失败 转发真实目标]
    DET -->|机器学习| R5[打破统计规律]
    R1 --> PROTO[协议实现]
    R2 --> PROTO
    R3 --> PROTO
    R4 --> PROTO
    R5 --> PROTO

4. 客户端核心三选一(概览)

graph LR
    subgraph 配置
        J[JSON: Xray-core<br/>Reality 原生]
        J2[JSON: sing-box<br/>协议最广/DNS强]
        Y[YAML: mihomo<br/>规则组分流体验]
    end
    J --> OUT[统一逻辑:<br/>入站+出站+路由]
    J2 --> OUT
    Y --> OUT

相关笔记

本系列属于「代理协议与核心实现」知识簇: