文/北京航空航天大學中法工程師學院 范文菁
VNC (Virtual Network Computing,虛擬網絡計算),是一種遠程操作執行軟件,在各類應用場景中被廣泛使用。在云計算技術迅猛發展的今天,用戶所請求的服務將更多的在云端服務器上執行,數據也存儲在云端服務器上[1]。VNC可以成為終端用戶使用云端資源的有效工具,擁有良好的應用前景。近年來,HTML5成為Web技術發展的新熱點。特別是HTML5在圖像呈現和通信方式上的新技術備受 Web 應用程序開發人員的矚目。這些技術為基于Web 的VNC連接提供了發展基礎。
VNC遠程操作執行軟件允許用戶通過網絡從任何終端機器控制并使用遠程服務器的桌面環境。用戶的桌面狀態將會在服務器端得到保持。當用戶從不同終端訪問服務器時,能夠保持上一次的連接狀態,保證數據和應用的一致性[2]。2002年,美國電話電報公司AT&T把VNC以GPL形式發布,此后派生出了許多VNC軟件。表一中列舉了幾種主流的VNC軟件。
VNC由三部分構成:服務器、客戶端和RFB 通信協議。RFB(RemoteFrame Buffer,遠程幀緩沖協議)是一種遠程圖形界面訪問協議。它能發送服務器桌面圖像到客戶端,同時接收客戶端操作并把事件發送到服務器。RFB協議對終端設備的資源需求很小,是一種真正面向瘦客戶端的協議[4]。

表一[3] 主流的 VNC 軟件
VNC的基本工作原理在于傳輸桌面圖像。服務器以一定的頻率掃描桌面像素,并把桌面圖像以位圖的形式傳送到客戶端。這種實現方式相對簡單,但是數據量大。為了減少數據傳輸量,VNC采用增量傳輸的方法,即只傳送發生變化的區域內的像素數據。這種方式在屏幕只有小部分區域發生變化時工作良好。但是當用戶開關窗口或觀看視頻時,對帶寬的需求會顯著增加[4]。
HTML5是HTML下一個主要的修訂版本,目前仍處于發展制定階段。HTML5 添加了許多新的語法特征,其中包括
Web Socket是HTML5提供的一種允許瀏覽器與服務器之間進行全雙工通信的網絡技術。為了實現即時通信,目前常用的技術是輪詢。輪詢是指瀏覽器以特定的頻率向服務器發出HTTP請求,之后由服務器返回數據給客戶端瀏覽器。輪詢模式的缺點是,瀏覽器需要不斷向服務器發出請求。由于HTTP請求的報頭很長,而報文數據可能是一個很小的值,這樣將會浪費網絡帶寬和服務器資源。面對這種情況,HTML5定義了新的Web Socket協議,以便節省資源,并達到實時通信的效果。使用Web Socket,服務器可以隨時向瀏覽器推送信息,這在傳統的無狀態HTTP連接中是不可能實現的。
Web Socket的協議名稱是ws。在新的通信方式下,網絡連接的地址將會寫為ws://local host:8080/web Socket Server。由于ws是不同于HTTP的新協議,它需要服務器和客戶端同時支持才能正常運行。目前,服務器對Web Socket的支持尚不普遍。下表是瀏覽器對 Web Socket的支持信息。可以看出,現代瀏覽器對于WebSocket的支持是比較廣泛的[6]。

表二[7] 主流瀏覽器對Web Socket的支持情況
如果將V N C客戶端用純粹的HTML5來實現,這樣的應用將可以繼承VNC和HTML5跨平臺、高效率通信等特性,在遠程連接中將有良好的應用前景。no VNC是一種基于HTML5和Javascript的VNC客戶端,采用了Web Socket通信技術,因此需要同樣支持Web Socket的VNC服務器才可以實現連接。但是目前,服務器對WebSocket的支持尚不普及,提供支持的只有x11vnc和 Pocket VNC兩種服務器。noVNC通過加設轉換WebSocket為TCP socket的代理服務器,使得客戶端可以連接到任意標準的VNC服務器。
建立VNC連接有兩種傳統方法:使用VNC 專屬的客戶端或使用基于Java的瀏覽器插件。這兩種方法的共同特點是,都需要客戶在本地進行相應軟件的安裝。no VNC連接則不需要在客戶端安裝特定軟件,只要通過瀏覽器從網頁上發起連接即可。
在局域網環境內,通過100Mbps以太網實現從Windows客戶機到Tight VNC服務器的連接。實驗表明,采用這三種方式的連接,在進行文件操作時普遍會感覺到操作延時。但對于常用的應用程序,如Word等,性能都普遍可以接受。
當三種連接進行第一幀初始化時,網絡帶寬的占用情況略有不同,測試結果如上圖所示。從標準客戶端連接,在圖像進行第一幀初始化時,帶寬占用率明顯高于另外兩種類型連接。重復進行初始幀渲染,可以觀察到no VNC連接在三種連接類型中的帶寬占用率是最低的。雖然對于單臺客戶機來說,帶寬占用率的降低并沒有顯著影響。但是當網絡上活躍用戶越來越多時,每個用戶帶寬占用的些許降低對全網來說卻是意義重大的。
隨著云計算技術的發展,基于RFB協議的VNC因其開源、跨平臺、易于實現等特性,在各類應用場景中得到了廣泛使用。本文介紹了VNC和HTML5技術的發展歷程以及應用現狀。將VNC客戶端用純粹的HTML5技術實現,這樣的應用將會有良好的應用前景。文中對三種不同類型的VNC連接進行了實驗對比。實驗的結果表明,基于Web Socket的no VNC連接,其初始化時的帶寬占用率在三者中是最低的,而在性能方面和其他兩種連接表現相當。該結果充分說明了HTML5新技術的發展潛力。在未來,Web Socket在Web應用中會有良好的實用價值。

圖一 標準客戶端連接帶寬占用情況

圖二 基于Java插件連接帶寬占用情況

圖三 noVNC連接帶寬占用情況
[1]陳全, 鄧倩妮.云計算及其關鍵技術[J].計算機應用. 200929(9): 2562-2567.
[2]劉奎恩, 王青.一種基于VNC的智能應用服務系統的設計和實現[J].計算機工程與應用, 2004
[3]Virtual Network Computing[EB/OL], http://en.wikipedia.org/wiki/Virtual_Network_Computing
[4]Tristan Richardson, RealVNC Ltd, The RFB Protocol [EB/OL], http://www.realvnc.com/docs/ rfbproto .pdf 2010
[5]邢曉鵬.HTML5核心技術的研究與價值分析[J]. 價值工程,2011
[6]W3C, The Web Socket API [EB/OL], http://www.w3.org/TR/2012/CR-websockets-20120920, 2012
[7]黃曉安, 何亮, 許寧.使用HTML5 Web Socket構建實時Web應用.IBM developer Works, 2011