Kaitu LogoKaitu.io
k2プロトコル
自己デプロイガイド
ルーター
ダウンロード
ログイン

    k2v5 协议架构

    k2v5 是 k2 协议族的当前版本,采用客户端-服务端架构。URL 格式、三层身份体系、ECH 配置派生、证书固定、TLS 记录填充、QUIC+TCP-WS 双栈传输、端口跳跃、服务端 ECH 路由。

    k2v5 协议架构

    k2v5 是 k2 协议族的当前版本,采用客户端-服务端架构。所有 Kaitu 客户端和 k2 命令行工具默认使用 k2v5——连接 URL 以 k2v5:// 开头。

    k2v5 使用 k2cc 作为拥塞控制层。未来的 k2v6 将采用 P2P 架构,同样使用 k2cc。关于 k2cc 自适应速率控制算法的详细介绍,请参阅 k2cc 自适应速率控制。

    关于隐身伪装机制的详细分析,请参阅 隐身伪装技术。

    k2v5 URL 格式

    k2v5 将所有连接参数编码到单个 URL 中:

    k2v5://USERNAME:PASSWORD@HOST:PORT?ech=ECH_CONFIG&pin=sha256:CERT_HASH&fp=FINGERPRINT&hop=PORT_RANGE
    
    参数说明示例
    USERNAME用户名abc123
    PASSWORD认证密码tok456
    HOST服务端 IP 或域名203.0.113.5
    PORT服务端端口(通常 443)443
    echBase64 编码的 ECH 配置AEX0...
    pin服务端证书的 SHA-256 哈希sha256:abc...
    fpTLS 指纹类型(chrome/firefox/safari/random)chrome
    hopUDP 端口跳跃范围(可选)10000-20000

    三层身份体系

    k2v5 连接过程中存在三层可观测的身份信息:

    层级         明文可见  内容
    ─────────────────────────────────────────────────────────
    1. TCP 目标  是        服务端真实 IP 地址
    2. 外层 SNI  是        某主流 CDN 公共域名(ECH public_name)
    3. 内层 SNI  否        k2 服务端域名(被 ECH 加密)
    

    网络旁观者(ISP、GFW)只能看到第 1 层和第 2 层。第 3 层被 ECH 完整加密,无法在不持有 ECH 私钥的情况下解密。

    ECH 配置派生

    k2s 生成的 ECH 配置从某主流 CDN 的真实 ECH 配置派生:

    1. 查询该 CDN 公共域名的 DNS HTTPS 记录,获取 ECH 配置模板
    2. 复制 cipher_suites、kem_id、public_name 等字段
    3. 递增 config_id(避免与真实配置冲突)
    4. 替换 HPKE 公钥为 k2s 自己的公钥

    结果:k2 流量的 ECH 配置与该 CDN 的真实流量在结构上无法区分。

    证书与固定

    k2s 使用自签名证书,不依赖任何 CA。

    • 双证书设计:EC 证书 + RSA 证书,与真实 CDN 的证书多样性匹配
    • 证书固定:URL 中的 pin=sha256:HASH 是证书公钥的 SHA-256 哈希,客户端直接比对
    • 自签名证书不出现在 Certificate Transparency(CT)日志中,避免被 CT 扫描检测

    TLS 记录填充

    k2s 定期(每 24 小时)从 ECH 伪装目标域名下载真实证书链,测量其 TLS Record 大小分布,并用相同的填充长度发送 TLS 握手记录。k2 握手的流量特征(数据包大小分布)与真实 CDN 的 HTTPS 流量匹配。

    传输层

    QUIC/H3(主传输):基于 QUIC 的 HTTP/3 传输,原生多路复用、无队头阻塞。k2cc 算法直接控制 QUIC 的发送速率。

    TCP-WebSocket(回退传输):当 QUIC 被 UDP 封锁时自动切换。使用 smux 在单个 WebSocket 连接上实现多路复用。切换过程对应用层透明。

    TransportManager 封装统一的 Dialer 接口:优先 QUIC → QUIC 失败回退 TCP-WS → 连接状态监控与自动重连。

    UDP 端口跳跃

    当 URL 包含 hop=START-END 参数时,k2 客户端在 QUIC 传输中随机选择端口范围内的 UDP 端口,定期更换,对抗基于固定端口的 UDP QoS 限速。

    服务端 ECH 路由

    k2s 在接收 TLS 连接时检查 ClientHello:

    • 有 ECH 扩展:解密 ECH,验证身份,进入 k2v5 隧道处理
    • 无 ECH 扩展:将原始 TCP 连接透明转发到 public_name 对应的真实 CDN 服务器

    非 ECH 连接收到的是真实 CDN 响应,探测脚本无法区分 k2s 与真实 CDN 服务器。

    常见问题

    什么是 ECH?为什么 k2v5 需要它?

    ECH(Encrypted Client Hello)加密 TLS 握手中的 SNI 字段,让 DPI 无法看到你连接的真实目标。这是 k2v5 隐身能力的核心——没有 ECH,GFW 可以通过明文 SNI 识别并封锁代理连接。VLESS+Reality 不支持 ECH,依赖借用真实网站证书伪装,已被学术研究证明存在可检测特征(USENIX Security 2025)。

    k2v5 的"三层身份"是什么意思?

    第 1 层是 TCP 目标 IP(明文,无法隐藏),第 2 层是外层 SNI(明文,伪装成主流 CDN 域名),第 3 层是内层 SNI(被 ECH 完全加密)。DPI 只能看到前两层,第 3 层需要 ECH 私钥才能解密。这意味着即使 GFW 捕获了完整的 TLS 握手,也无法得知你连接的真实服务端。

    k2v5 和 k2v6 有什么区别?

    k2v5 是客户端-服务端架构(当前版本),k2v6 是规划中的 P2P 架构。两者都使用 k2cc 作为拥塞控制层——k2cc 是独立算法,不绑定特定协议版本。

    QUIC 被封锁了怎么办?

    k2v5 内置自动回退:QUIC 被 UDP 封锁时,自动切换到 TCP-WebSocket 传输,对应用层完全透明。切换过程无需用户干预。这比 Hysteria2 更可靠——Hysteria2 只支持 QUIC,UDP 被封锁时完全无法连接。


    接下来阅读:k2cc 自适应速率控制 了解拥塞控制算法,隐身伪装技术 从威胁模型角度分析对抗能力。

    Kaitu LogoKaitu

    安全で便利なネットワークプロキシソリューション

    製品

    • クライアントダウンロード
    • スマートルーター製品
    • 販売代理プログラム
    • 更新履歴

    サポート

    • ユーザーガイド
    • よくある質問
    • お問い合わせ
    • ホームスクール設置ガイド

    利用規約

    • プライバシーポリシー
    • 利用規約

    愿上帝为你开路

    © 2026 Kaitu LLC. All rights reserved.