公众号旧文
为什么大家都管微软的远程桌面叫 RDP,但运行时输入的命令却是 mstsc?
很多人第一次使用 Windows 远程桌面时,都会产生两个疑问:
- 明明大家都在说 RDP,为什么 Win + R 运行远程桌面时输入的命令却是 mstsc?
- 为什么 Windows 远程桌面这么流畅,而很多远控软件却像看视频一样卡?
这两个问题,背后牵扯的是 Windows 远程桌面的历史,以及远程桌面的实现方式。
今天我们就把它讲清楚。
一、RDP 和 mstsc,其实不是一个东西
很多人以为 RDP 就是那个远程桌面程序,其实不是。
RDP 是协议。
它的全称是:
Remote Desktop Protocol
也就是:远程桌面通信协议
简单理解:
- RDP = 网络通信规则
- 规定客户端和服务器如何传输远程桌面数据
而 Windows 里的远程桌面程序,其实叫:
Remote Desktop Connection
这个程序的可执行文件就是:mstsc.exe
RDP 是协议,Remote Desktop Connection 是客户端程序,mstsc 是启动这个程序的命令。
二、mstsc 为什么叫这个名字?
mstsc 是 Microsoft Terminal Services Client 的缩写。
也就是:微软终端服务客户端
那又为什么叫 Terminal Services?
因为在早期 Windows Server 时代,远程桌面服务的名字就叫:
Terminal Services
比如在:
- Windows Server 2003
系统里,远程桌面服务就叫 Terminal Services。
后来微软在:
- Windows Server 2008
把它改名成了:
Remote Desktop Services(RDS)
但问题来了:
程序名 mstsc.exe 已经存在很多年了。
微软一贯的策略是:程序名一旦广泛使用,就尽量不改。
于是就出现了一个有趣的现象:
| 名称 | 含义 |
|---|---|
| RDP | 远程桌面协议 |
| RDS | 远程桌面服务 |
| mstsc | 远程桌面客户端 |
所以现在大家说:用 RDP 连一下服务器。
真正做的是:用 mstsc 客户端,通过 RDP 协议,连接 RDS 服务。
三、为什么 Windows 远程桌面这么流畅?
很多人会发现:
- Windows 远程桌面非常顺滑
- 延迟低
- 带宽占用也不大
而一些远控软件却像在看视频。
原因在于:
远程桌面的传输方式不一样。
四、普通远控软件:传输的是视频
很多远控软件的逻辑其实很简单:
- 把屏幕截成一帧
- 压缩
- 当成视频发送
流程类似:
屏幕 → 截图 → H264压缩 → 网络传输 → 解码显示
这其实就是屏幕直播。
所以会出现:
- 带宽占用大
- 延迟高
- 画面拖影
五、RDP 的核心是传输绘图指令
RDP 的设计思路完全不同。
它并不是传输画面,而是传输绘图命令。
举个例子。
如果远程电脑要显示一个按钮:
普通远控软件会发送:
一张按钮图片
而 RDP 会发送:
在 x=100,y=50 画一个按钮
客户端自己绘制。
再比如滚动网页。
普通远控:
发送很多张新截图
RDP:
把这块区域向上移动20像素
所以 RDP 的带宽需求极小。
六、RDP 还能调用客户端 GPU
RDP 还有一个非常高级的优化:
客户端渲染。
也就是说:
- 字体
- 窗口
- UI
- 动画
很多都是:在本地 GPU 渲染
服务器只发送:
UI结构
+
绘图指令
这和网页浏览很像:
- 服务器发 HTML
- 浏览器自己渲染
而不是发整张截图。
七、只有视频内容才会走视频流
当然,如果远程电脑播放视频:
比如:
- 看电影
- 看 YouTube
- 播放视频
这时候 RDP 会自动切换策略:
视频区域 → H264编码 → 视频流传输
所以你会发现:
远程桌面:
- 操作系统界面极其流畅
- 视频稍微没那么流畅
这是设计上的取舍。
八、为什么服务器行业都用 RDP
原因很简单:
- 带宽需求小
- 延迟低
- 画面清晰
- CPU 占用低
所以很多运维工程师甚至会说 RDP 好像比本地操作还流畅。
尤其是在网络好的情况下。
九、一句话总结
很多人以为 RDP 就是远程桌面程序。
但真正的关系是:
mstsc
(客户端程序)
↓
RDP (通信协议)
↓
RDS (远程桌面服务)
而 RDP 之所以这么流畅,本质原因只有一句话:
它传输的不是屏幕,而是绘图指令。
这也是为什么,几十年前设计的协议,今天依然非常先进。