第二章 遠端桌面介紹
2.1 VNC
Virtual Network Computing(VNC)是現行的遠端桌面連線系統之一,最初發展是 在 1995 年由英國劍橋的 Olivetti & Oracle 實驗室發展出來,公開且免費的通訊協定,
至今已發展多種版本,為跨平台的遠端桌面連線程式。
2.1.1 VNC 簡介
VNC 透過 Remote Frame Buffer (RFB) Protocol[4]控制遠端的電腦,VNC 為一套跨 平台的應用程式,在操作端安裝 VNC Viewer 就是我們所說的 Client,在遠端的電腦安 裝 VNC Server,可以多台 Clients 在同一個時間連接同一個 Server,另外,可透過 JAVA Applet 使用網路瀏覽器連接到安裝 VNC Server 的電腦。VNC 的架構可以分為 VNC Server 和 VNC Client(Viewer),彼此溝通的通訊協定為 RFB Protocol,如圖 1。
VNC Server:負責接收 Client 傳送過來的鍵盤或是滑鼠的輸入訊號後,並提供一套桌 面分享機制,畫面改變的資料量透過 TCP/IP 傳送到 Client。
VNC Client:根據收到的資料,將 Client 端顯示 Server 的畫面,並根據接收到的資料 做更新。
RFB Protocol:一個簡單的原則,將 Server 的點陣圖(bitmap)資料放到螢幕上指定的 X、Y 座標。
圖 1. VNC 系統架構
2.1.2 VNC 的圖形編碼
在圖形傳輸時,根據不同的網路頻寬,Client/Server 處理資料的速度,VNC Protocol 提供了多種編碼方式,主要有 Raw、Copy-Rect、RRE、Hextile 以及 ZRLE,接下來根 據這幾種編碼方式說明。
z RAW:直接傳送圖形的資訊圖形資料不經過壓縮,傳送 pixel 資料由左至右 依序傳送,任何版本的 VNC 都支援這樣的編碼方式,因此造成資料量驚人。
z Copy-Rect(Copy Rectangle encoding):將 framebuffer 中的圖形位置由一塊區 域複製到另一塊區域,是一種簡單有效率的方法,Client 端的 buffer 已經暫 存了這塊區域的資料,Server 只要將 x、y 的座標告知 Client,只要複製 buffer 中的資料,便可以在畫面中顯示出來,可以節省網路頻寬。這樣的情形發生 在移動桌面內的視窗時,由於視窗內的資料並沒有改變,只需要改變顯示的 區域,透過這樣的方法可以降低頻寬的使用。
z RRE:這種編碼方式是將同樣的 pixel 壓縮成單一數值重複計算,在 VNC 中 實現的方法就是將要傳送的矩型區域中的顏色資訊,找出分布最多的顏色當 做背景色,然後根據其他顏色的分布定義出多個子區域(Sub-rectangle)並記 錄該區域的顏色、位置以及大小,如圖 2.,這樣的方法在面積大顏色單純的
區塊(例如:單色的桌布畫面),但是不適合於背景複雜的區塊。
圖 2. VNC 的 RRE 編碼方式
z Hextile:Hextile 算是 RRE 原理變化,將一個矩形區域以 tile 為單位切割,每 個 tile 為 16 x 16 pixels,每個 tiles 的順序由左至右、由上至下依序切割,如 果一個矩形區域,寬不是 16 的倍數那麼最後一個 tile 的寬度就會窄一點,相 同情形,如果高不能被 16 整除,那麼最後一個 tile 的高度就會短一點。每個 tile 可以使用 Raw 編碼或是 RRE 編碼,如果採用 Raw 編碼就直接記錄這個
tile 的 pixel 顏色資訊;如果採用 RRE 編碼,每個 tile 有自己的背景顏色,如 果其背景顏色和前一個 tile 的背景顏色一樣,就不需要明確定義;另外尚需 定義 tile 中,所有 subrectangle 前景顏色,並記錄下來,如果前景顏色都一致,
只需要紀錄一次。每個 tile 中的 subrectangle 都需要清楚的定義前景顏色和 x、
y 座標以及長、寬。
圖 3. VNC 的 Hextile 編碼
z ZRLE:Zib Run-Length Encoding(ZRLE),是結合了 zlib 壓縮、titling、調色 盤和 run-length 編碼技術。傳輸的時候,矩形區域以 4 個 bytes 開始,緊接著 是 zlib 壓縮資料,唯一的 zlib stream 傳送在 RFB protocol 連線上,因此 ZRLE 區域必須精確的依序編碼和解碼。Zlib 資料在還沒解壓縮之前,代表了 64 x 64 個 pixels,由左到右、從上到下,類似於 hextile 切割方式,如果高和寬不是 64 的整數倍,那麼最後一筆資料區域會小一點。
2.1.3 VNC 優缺點分析
VNC 最大的優點就是其跨平台的性質,透過其簡單的傳輸協定,在不同作業系 統、應用程式都能夠使用,此外,其協定的開放及免費性質,任何想應用的實驗環境 都可以實現或是自行設計。
VNC 在影像傳送有個缺點,假設我們要播放 640 x 480(pixels)的影片,VNC Server 就必需每秒傳送 30 張 16 位元的高彩圖片,每秒傳輸資料量為 17.58 MBytes,這樣的 結果不利於在低頻寬的網路上使用,不適合播放動態影片,造成使用者觀賞影片時,
Client 播放影片畫面有遲滯的現象發生。