RDP(Remote Desktop Protocol,远程桌面协议)是微软的远程桌面协议,端口 3389。 基于 ITU-T T.120 系列协议(T.123/T.125/T.128,微软的 T-Share 实现)扩展而来,支持多通道传输 + TLS 加密。
1. 网络拓扑
┌─────────────────────────────────────────────────────────────────┐
│ RDP 远程桌面拓扑 │
│ │
│ ┌──────────────┐ TCP 3389 / UDP 3389 ┌────────────────┐ │
│ │ RDP 客户端 │ ─────────────────────────→ │ RDP 服务器 │ │
│ │ (mstsc.exe) │ ←── 增量图形帧 ─────────── │ (Windows 主机) │ │
│ │ │ │ │ │
│ │ ┌──────────┐ │ 虚拟通道复用 │ ┌────────────┐ │ │
│ │ │ 显示渲染 │ │ ←── 通道0: 图形 ────────── │ │ 显示捕获 │ │ │
│ │ │ 剪贴板 │ │ ←── 通道1: 剪贴板 ──────── │ │ 剪贴板服务 │ │ │
│ │ │ 文件传输 │ │ ←── 通道2: 文件 ────────── │ │ 文件系统 │ │ │
│ │ │ 音频 │ │ ←── 通道3: 音频 ────────── │ │ 音频设备 │ │ │
│ │ │ 打印 │ │ ←── 通道4: 打印 ────────── │ │ 打印机 │ │ │
│ │ └──────────┘ │ │ └────────────┘ │ │
│ └──────────────┘ └────────────────┘ │
│ │
│ NLA 认证流程(认证先于会话): │
│ 客户端 ── CredSSP/NTLM ──→ 服务器 │
│ │ │ │
│ │ ① 认证(无登录界面暴露) │ │
│ │ ←── 认证成功 ────────────── │ │
│ │ │ │
│ │ ② 建立 RDP 会话 │ │
│ │ ── TLS 加密通道 ──────────→ │ │
│ │ ←── 图形帧/输入流 ────────── │ │
│ │
│ 无 NLA(危险):登录界面先暴露 → 可被 BlueKeep 类攻击 │
│ 有 NLA(安全):认证先完成 → 登录界面不暴露给未认证者 │
└─────────────────────────────────────────────────────────────────┘
2. 设计哲学
RDP 的核心设计是高效传输图形界面:
- 增量编码:只传变化的屏幕区域
- 压缩:RDP 6.0+ 使用 NSCodec/RFX 算法
- 虚拟通道:剪贴板/文件/音频/打印多通道复用
- UDP 传输:RDP 8.0+ 数据走 UDP 降低延迟
专家视角:RDP 的UDP 传输(RDP 8.0+)是重要演进——TCP 的重传和有序性在远程桌面场景是负担(旧帧重传无意义),UDP + 应用层可靠性更高效。
3. 安全层
| 层 | 说明 |
|---|---|
| 标准安全 | RDP 加密(弱,已不推荐) |
| Enhanced (TLS) | TLS 1.2 加密(推荐) |
| NLA | 网络层认证(CredSSP),认证前即验证 |
专家视角:NLA(Network Level Authentication)是关键安全配置——在显示登录界面前就完成认证,防止"蓝屏漏洞"类攻击(如 BlueKeep CVE-2019-0708)。生产环境必须启用 NLA。