网络连接基础——WebRTC P2P 与中继服务器的原理
WebRTC 是什么
WebRTC(Web Real-Time Communication)是 Google 推出的一套开源实时音视频通信协议栈。BilldDesk 的核心远程控制能力(屏幕画面传输、键鼠事件发送、文件传输、剪贴板同步等)都建立在 WebRTC 之上。
WebRTC 的优势在于:
- P2P 直连:双方设备直接交换数据,不经过中间服务器(延迟最低、带宽占用最小)
- 低延迟:WebRTC 设计目标就是实时通信,默认优化低延迟
- 跨平台:Web 浏览器、原生桌面端、移动端都有完整支持
- 自带加密:所有数据默认加密传输
BilldDesk 的连接流程
BilldDesk 的远程连接建立过程:
- 信令协商:主控端和被控端通过 BilldDesk 信令服务器交换连接所需的信息(设备码、密码、NAT 穿透候选地址、加密密钥等)
- NAT 穿透尝试:双方尝试通过 NAT 穿透(STUN 协议)建立 P2P 直连
- P2P 直连:如果 NAT 穿透成功,双方直接建立 WebRTC 点对点连接(最佳情况)
- 中继回退:如果 NAT 穿透失败(比如双方都在 NAT 后面),回退到 BilldDesk 中继服务器转发流量
P2P 直连 vs 中继转发
| 对比项 | P2P 直连 | 中继服务器转发 |
|---|---|---|
| 延迟 | 最低(80ms 以内) | 略高(取决于中继服务器位置) |
| 带宽占用 | 不走服务器 | 中继服务器承担带宽消耗 |
| 稳定性 | 可能因 NAT 类型失败 | 更稳定,但依赖中继服务器可用性 |
| 费用 | 无额外费用 | BilldDesk 官方承担中继成本(向用户收费覆盖) |
NAT 穿透为什么会失败
NAT(Network Address Translation)是路由器的功能,让多个内网设备共享一个公网 IP。常见 NAT 类型的穿透难度:
| NAT 类型 | STUN 穿透成功率 | 典型场景 |
|---|---|---|
| Full Cone(全锥形) | ✅ 容易 | 大部分家庭路由器 |
| Restricted Cone(受限锥形) | ✅ 容易 | 部分企业网络 |
| Port Restricted Cone(端口受限) | ⚠️ 较难 | 部分运营商网络 |
| Symmetric(对称型) | ❌ 很难 | 移动 4G/5G、企业 VPN |
如果主控端和被控端都是对称型 NAT,STUN 穿透几乎一定会失败,BilldDesk 会自动回退到中继服务器。
中继服务器的作用
BilldDesk 官方提供了多个中继服务器分布在不同地区。当中继转发生效时,双方的流量路径变成:
主控端 → 本地路由器 → 公网 → BilldDesk 中继服务器 → 公网 → 被控端本地路由器 → 被控端
如何优化网络连接
换中继服务器
BilldDesk 允许在设置中手动切换中继服务器,选择一个离自己最近的。在「高级设置 → 网络设置 → 中继服务器」中可以看到当前可用的中继列表,逐个尝试找到最流畅的。
VIP 用户的优势
BilldDesk 的中继服务器资源有限,非 VIP 用户连接到中继服务器时可能遇到连接风控(被标记为风险连接拒绝)。购买任意 VIP 套餐后可以:
- 使用更多中继服务器
- 解锁连接风控
- 获得更稳定的中继转发质量
自建中继(私有化部署)
如果有足够的技术能力,可以自己搭建中继服务器并在 BilldDesk 设置中指向自建中继。这样完全不依赖官方中继,数据也不会经过第三方服务器。
自建中继的详细说明见 自定义中继服务器与私有化部署。