今天我們就把它講清楚。
一、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 連一下伺服器。
真正做的是:用 mstsc 客戶端,透過 RDP 協議,連接 RDS 服務。
三、為什麼 Windows 遠程桌面這麼流暢?
很多人會發現:
● Windows 遠端桌面非常順暢
● 延遲低
● 頻寬佔用也不大
而一些遠控軟件卻像在看視頻。
原因在於:
遠端桌面的傳輸方式不一樣。
四、普通遠控軟件:傳輸的是視頻
很多遠控軟件的邏輯其實很簡單:
1.把螢幕截成一幀
2.壓縮
3.當成視頻發送
流程類似:
屏幕 → 截圖 → H264壓縮 → 網絡傳輸 → 解碼顯示
這其實就是屏幕直播。
所以会出现:
● 带宽占用大
● 延迟高
● 画面拖影
五、RDP的核心是傳輸繪圖指令
RDP的設計思路完全不同。
它並非傳輸畫面,而是傳輸繪圖指令。
舉個例子。
如果遠端電腦要顯示一個按鈕:
普通遠控軟件會發送:
一張按鈕圖片
而 RDP 会發送:
在 x=100,y=50 畫一個按鈕
客戶端自己繪製。
再比如滾動網頁。
普通遠控:
發送很多張新截圖
RDP:
把這塊區域向上移動20像素
所以 RDP 的頻寬需求極小。
六、RDP还能調用客戶端GPU
RDP 還有一個非常高級的優化:
客戶端渲染。
也就是說:
字體
窗口
UI
動畫
很多都是:在本地 GPU 渲染
伺服器只發送:
UI結構 + 繪圖指令
這和網頁瀏覽很像:
伺服器發 HTML
瀏覽器自己渲染
而不是發整張截圖。
七、只有視頻內容才會走視頻流
當然,如果遠端電腦播放視頻:
比如:
看電影
看 YouTube
播放視頻
這時候 RDP 會自動切換策略:
視頻區域 → H264編碼 → 視頻流傳輸
所以你會發現:
遠端桌面:
操作系統界面極其流暢
影片稍微沒那麼流暢
這是設計上的取捨。
頻寬需求小
延遲低
畫面清晰
CPU佔用低
所以很多運維工程師甚至會說 RDP 好像比本地操作還流暢。
尤其是在網絡好的情況下。
但真正的关系是:
mstsc (客戶端程式) ↓ RDP (通信協議) ↓ RDS (遠程桌面服務)
而 RDP 之所以這麼流暢,本質原因只有一句話:
它傳輸的不是螢幕,而是繪圖指令。
這也是為什麼,幾十年前設計的協議,今天依然非常先進。
TOP

