為什麼我網路很快!但 Windows RDP 連線破圖?

平常遠端連線都使用 VPN + RDP 來解決,最近網路架構更換之後發現連 VPN + RDP 速度不如以往,當你點開 RDP 上方的連線狀態圖示,竟然跳出:「您的網路速度可能很慢。您可能會遇到問題。UDP 已啟用。」 詳細資料裡還顯示可用頻寬甚至小於 100 kbps、畫面播放速率只剩下可憐的 9 FPS

這到底是怎麼回事?RDP 不是應該走 TCP 嗎?


Windows RDP 不是走 TCP 嗎?

在過去(Windows 7 以前的時代),Windows 的遠端桌面(Remote Desktop Protocol)確實是純粹走 TCP 3389 連接埠。

然而,從 Windows 8 / Server 2012 開始,微軟為了優化高延遲環境(如跨國網路、Wi-Fi 行動網路)下的動態畫面與音訊表現,引入了 URCP(UDP-based RDP Transport)多傳輸協定架構

  1. 交握與驗證(TCP): 連線初始化時,依然先透過 TCP 3389 建立安全通道、處理身分驗證與加密。
  2. 升級動態傳輸(UDP): 連線成功後,系統會在背景嘗試開啟 UDP 3389 通道。如果成功建立,後續的即時畫面更新、動態影像和音訊就會改走 UDP 傳輸,以達到更低的延遲和更流暢的體驗,但 UDP 的特性在資料傳輸過程中的資料遺失是不會重新傳送,在畫面體驗上就是會遇到破圖,畫面馬賽克。

異常剖析:低延遲、低頻寬的矛盾現象

前後兩張極具價值的技術截圖對比。

1. UDP 啟用,卡頓

  • 傳輸通訊協定: UDP
  • 來回行程時間(RTT): 7 毫秒(極快,標準區網速度)
  • 可用頻寬: 小於 100 kbps
  • 畫面播放速率: 9 FPS

【原因分析】 7ms 的延遲代表實體線路非常完美,但可用頻寬卻被判定成撥接上網等級。這是典型的「UDP 封包被過濾、限速或嚴重掉包」症狀。 當區域網路內的防火牆、防毒軟體、VPN 虛擬網卡或路由器上的 QoS 規則對 UDP 進行限制時,RDP 的智慧偵測機制會因為 UDP 瘋狂掉包而產生誤判,誤以為「使用者的網路品質極差」,進而主動將頻寬鎖死在 100 kbps 以下,並強制壓低畫面張數。這就是你明明在區網卻卡到懷疑人生的根本原因。

2. 強制 TCP,滿血回歸

  • 傳輸通訊協定: TCP
  • 來回行程時間(RTT): 8 毫秒
  • 可用頻寬: 28.97 Mbps 🚀
  • 畫面播放速率: 0 FPS(註:此為微軟常見的視覺 Bug,當畫面靜止無更新時會顯示 0,滑鼠一動即回復正常

當我們切換回純 TCP 傳輸後,頻寬直接被解放到接近 30 Mbps,警告視窗消失,連線品質瞬間回歸「良好」。


如何關閉 RDP 的 UDP 傳輸?

如果你在區網或高品質網路環境下也遇到了 UDP 帶來的副作用,最直接有效的解法就是在「用戶端」(你手上這台操作的電腦)強制關閉 UDP,逼 RDP 全程走穩定的 TCP

方法 A:使用本機群組原則編輯器(推薦 Pro/Enterprise 版)

  1. 按下 Win + R 鍵,輸入 gpedit.msc 並執行。
  2. 依序導覽至: 電腦設定 -> 系統管理範本 -> Windows 元件 -> 遠端桌面服務 -> 遠端桌面連線用戶端
  3. 在右側面板找到 「關閉用戶端上的 UDP」 (Turn off UDP on client),雙擊打開它。
  4. 將狀態調整為 「已啟用」 (Enabled),點擊確定。
  5. 關閉並重新建立遠端桌面連線。

方法 B:修改登錄檔(適合 Home 家用版)

  1. 按下 Win + R 鍵,輸入 regedit 並執行。
  2. 移至以下路徑: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client (如果找不到 Client 機碼,請在 Terminal Services 上按右鍵 -> 新增 -> 機碼,命名為 Client)
  3. 在右側空白處點選右鍵 -> 新增 -> DWORD (32 位元) 值
  4. 將其命名為 fClientDisableUDP
  5. 雙擊該值,將「數值資料」修改為 1,點擊確定。