mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-01-28 16:41:52 +08:00
- 新增 RustDesk 模块,支持与 RustDesk 客户端连接 - 实现会合服务器协议和 P2P 连接 - 支持 NaCl 加密和密钥交换 - 添加视频帧和 HID 事件适配器 - 添加 Protobuf 协议定义 (message.proto, rendezvous.proto) - 新增完整项目文档 - 各功能模块文档 (video, hid, msd, otg, webrtc 等) - hwcodec 和 RustDesk 协议技术报告 - 系统架构和技术栈文档 - 更新 Web 前端 RustDesk 配置界面和 API
70 lines
3.1 KiB
Markdown
70 lines
3.1 KiB
Markdown
# RustDesk 通信协议技术报告
|
||
|
||
## 概述
|
||
|
||
本报告详细分析 RustDesk 远程桌面软件的客户端与服务器之间的通信协议,包括 Rendezvous 服务器(hbbs)、Relay 服务器(hbbr)以及客户端之间的 P2P 连接机制。
|
||
|
||
## 文档结构
|
||
|
||
| 文档 | 内容 |
|
||
|------|------|
|
||
| [01-architecture.md](01-architecture.md) | 整体架构设计 |
|
||
| [02-rendezvous-protocol.md](02-rendezvous-protocol.md) | Rendezvous 服务器协议 |
|
||
| [03-relay-protocol.md](03-relay-protocol.md) | Relay 服务器协议 |
|
||
| [04-p2p-connection.md](04-p2p-connection.md) | P2P 连接流程 |
|
||
| [05-message-format.md](05-message-format.md) | 消息格式定义 |
|
||
| [06-encryption.md](06-encryption.md) | 加密机制 |
|
||
| [07-nat-traversal.md](07-nat-traversal.md) | NAT 穿透技术 |
|
||
| [08-onekvm-comparison.md](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)
|