Files
One-KVM/docs/report/rustdesk/00-overview.md
mofeng-git a8a3b6c66b feat: 添加 RustDesk 协议支持和项目文档
- 新增 RustDesk 模块,支持与 RustDesk 客户端连接
  - 实现会合服务器协议和 P2P 连接
  - 支持 NaCl 加密和密钥交换
  - 添加视频帧和 HID 事件适配器
- 添加 Protobuf 协议定义 (message.proto, rendezvous.proto)
- 新增完整项目文档
  - 各功能模块文档 (video, hid, msd, otg, webrtc 等)
  - hwcodec 和 RustDesk 协议技术报告
  - 系统架构和技术栈文档
- 更新 Web 前端 RustDesk 配置界面和 API
2025-12-31 18:59:52 +08:00

3.1 KiB
Raw Blame History

RustDesk 通信协议技术报告

概述

本报告详细分析 RustDesk 远程桌面软件的客户端与服务器之间的通信协议,包括 Rendezvous 服务器hbbs、Relay 服务器hbbr以及客户端之间的 P2P 连接机制。

文档结构

文档 内容
01-architecture.md 整体架构设计
02-rendezvous-protocol.md Rendezvous 服务器协议
03-relay-protocol.md Relay 服务器协议
04-p2p-connection.md P2P 连接流程
05-message-format.md 消息格式定义
06-encryption.md 加密机制
07-nat-traversal.md NAT 穿透技术
08-onekvm-comparison.md One-KVM 实现对比分析

核心组件

1. Rendezvous Server (hbbs)

  • 功能: ID 注册、Peer 发现、NAT 类型检测、连接协调
  • 端口: 21116 (TCP/UDP), 21115 (NAT 测试), 21118 (WebSocket)
  • 源文件: rustdesk-server/src/rendezvous_server.rs

2. Relay Server (hbbr)

  • 功能: 当 P2P 连接失败时提供数据中转
  • 端口: 21117 (TCP), 21119 (WebSocket)
  • 源文件: rustdesk-server/src/relay_server.rs

3. 客户端 (RustDesk)

  • 功能: 远程桌面控制、文件传输、屏幕共享
  • 核心模块:
    • rendezvous_mediator.rs - 与 Rendezvous 服务器通信
    • client.rs - 客户端连接逻辑
    • server/connection.rs - 被控端连接处理

协议栈

┌─────────────────────────────────────────┐
│            Application Layer            │
│   (Video/Audio/Keyboard/Mouse/File)     │
├─────────────────────────────────────────┤
│            Message Layer                │
│         (Protobuf Messages)             │
├─────────────────────────────────────────┤
│           Security Layer                │
│    (Sodium: X25519 + ChaCha20)          │
├─────────────────────────────────────────┤
│           Transport Layer               │
│   (TCP/UDP/WebSocket/KCP)               │
└─────────────────────────────────────────┘

关键技术特点

  1. 混合连接模式: 优先尝试 P2P 直连,失败后自动切换到 Relay 中转
  2. 多协议支持: TCP、UDP、WebSocket、KCP
  3. 端到端加密: 使用 libsodium 实现的 X25519 密钥交换和 ChaCha20-Poly1305 对称加密
  4. NAT 穿透: 支持 UDP 打洞和 TCP 打洞技术
  5. 服务器签名: 可选的服务器公钥签名验证,防止中间人攻击

版本信息

  • 分析基于 RustDesk 最新版本源码
  • Protocol Buffer 版本: proto3
  • 加密库: libsodium (sodiumoxide)