Chinaunix首页 | 论坛 | 博客
  • 博客访问: 971233
  • 博文数量: 261
  • 博客积分: 10026
  • 博客等级: 上将
  • 技术积分: 3420
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-24 12:10
个人简介

https://smart888.taobao.com/ 立观智能监控

文章分类

全部博文(261)

文章存档

2011年(1)

2010年(4)

2009年(256)

我的朋友

分类:

2009-07-01 15:42:05

RDC 又稱為『遠端桌面』(在 NT 時代也叫做 terminal service),多年來我心中一直有個疑惑就是,為何平平是遠端遙控,RDC 的速度就是比 VNC 快上一大截,而且即使在慢速網路下,它仍然能有非常好的表現。

最近開始準備替換掉家裏最後一台 windows server,因此跟同事借了台 mac mini 回來想玩玩遠端遙控,實驗結果讓人非常非常失望,基本上 mac 的遙控只有兩種方法

1. screen sharing

2. Apple Remote Desktop (ADC)

但不論是哪一種,骨子裏其實都是 VNC,因此它的做法仍然是 pixel by pixel 抓下來後高度壓縮再送出去,資料量顯然無法小到哪去,耗用的頻寬就更不用說了。

也由於這兩天失敗的結果,讓我再度開始好奇到底 RDC 是何方神聖怎麼會表現這麼好,這次終於專心爬完所有資料也得到一個滿意的結論了,簡單整理如下。

上面這些 references 中以第二篇最重要,而該篇文章中最精華的一段如下:

On the server, RDP uses its own video driver to render display output by constructing the rendering information into network packets by using RDP protocol and sending them over the network to the client. On the client, RDP receives rendering data and interprets the packets into corresponding Microsoft Win32 graphics device interface (GDI) API calls. For the input path, client mouse and keyboard events are redirected from the client to the server. On the server, RDP uses its own on-screen keyboard and mouse driver to receive these keyboard and mouse events.

中文解釋如下(這裏我們假想的劇情是:從辦公室中想遠端遙控家裏的電腦)

RDC 被控端(Server,想像為家裏電腦)做的事:

1. 自備 video driver 將原本要經由顯示卡畫在螢幕上的資料,encode 成封包

2. 自備 on-screen 鍵盤與滑鼠 driver 來接收並回應遠端傳來的 keyboard/mouse event

RDC 遙控端(Client,想像為辦公室電腦)做的事:

1. 接收網路傳來的封包(內含 rendering data)然後用標準的 win32 GDI API 畫在螢幕上

2. 將滑鼠與鍵盤事件傳回 Server

這裏面我個人覺得最重要,也是為何 RDC 能這麼快的關鍵,就在於紅色那項,它不是像 VNC 透過網路在傳 compressed pixel data,而只是傳 rendering data,然後在 client 端自備 win32 GDI API 依這些 rendering data 再畫出來,這樣做要來回傳遞的資料量就變的非常小(我沒有實際的數據,但猜測大概只有1/5),然後再加上高度的壓縮與資料cache(有些甚至是直接針對 mem 做處理),就達成了驚人的速率啊!

由此也可推知,mac 版的 必然是將部份 win32 GDI API port 過去了,因此才能在 mac 上也提供相同神速的遙控服務。

接下來的問題就是:那為何 mac 不能做相同的事呢?理論上 RDC 是一個 based on 的協定,任何平台都可以實作出 server/client 才對,但奇怪的是 mac 上就是只有提供 VNC-based solution。

我好奇稍微查了一下是否有 RDC server for *nix,結果還真的有( ):

: An open source remote desktop protocol(rdp) server for Linux

但目前的進度看來頗淒慘,其實這種結果也不難想像,畢竟玩 *nix 的人大概都只需 shell 一枚即夠,誰管你 x window 啊…(只是 apple 就應該比較有動力去做這件事吧?)

最後同場加映好康一枚:

目前 windows xp 上的 RDC 只能允許單一的 session, 也就是說如果 John 登入了,原本在用的 Mary 就會被登出,一次只能一個人用,這個神密的 則可以解除這迷般的封印,允許一台 xp 多人同時連線,有圖有真相:

至此終於解開心中多年的疑惑,不過最重要的是,我仍然需要一個快速好用的 mac 遙控方案啊啊啊~

阅读(2880) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~