新型Web技術(shù)在遠程桌面連接中的應(yīng)用
引言
VNC (Virtual Network Computing,虛擬網(wǎng)絡(luò)計算),是一種遠程操作執(zhí)行軟件,在各類應(yīng)用場景中被廣泛使用。在云計算技術(shù)迅猛發(fā)展的今天,用戶所請求的服務(wù)將更多的在云端服務(wù)器上執(zhí)行,數(shù)據(jù)也存儲在云端服務(wù)器上[1]。VNC可以成為終端用戶使用云端資源的有效工具,擁有良好的應(yīng)用前景。近年來,HTML5成為Web技術(shù)發(fā)展的新熱點。特別是HTML5在圖像呈現(xiàn)和通信方式上的新技術(shù)備受 Web 應(yīng)用程序開發(fā)人員的矚目。這些技術(shù)為基于Web 的VNC連接提供了發(fā)展基礎(chǔ)。
1 VNC
1.1 發(fā)展現(xiàn)狀
VNC遠程操作執(zhí)行軟件允許用戶通過網(wǎng)絡(luò)從任何終端機器控制并使用遠程服務(wù)器的桌面環(huán)境。用戶的桌面狀態(tài)將會在服務(wù)器端得到保持。當(dāng)用戶從不同終端訪問服務(wù)器時,能夠保持上一次的連接狀態(tài),保證數(shù)據(jù)和應(yīng)用的一致性[2]。2002年,美國電話電報公司AT&T把VNC以GPL形式發(fā)布,此后派生出了許多VNC 軟件。表一中列舉了幾種主流的VNC軟件。
1.2 工作原理
VNC由三部分構(gòu)成:服務(wù)器、客戶端和RFB 通信協(xié)議。RFB(Remote Frame Buffer,遠程幀緩沖協(xié)議)是一種遠程圖形界面訪問協(xié)議。它能發(fā)送服務(wù)器桌面圖像到客戶端,同時接收客戶端操作并把事件發(fā)送到服務(wù)器。RFB協(xié)議對終端設(shè)備的資源需求很小,是一種真正面向瘦客戶端的協(xié)議[4]。
VNC的基本工作原理在于傳輸桌面圖像。服務(wù)器以一定的頻率掃描桌面像素,并把桌面圖像以位圖的形式傳送到客戶端。這種實現(xiàn)方式相對簡單,但是數(shù)據(jù)量大。為了減少數(shù)據(jù)傳輸量,VNC采用增量傳輸?shù)姆椒?,即只傳送發(fā)生變化的區(qū)域內(nèi)的像素數(shù)據(jù)。這種方式在屏幕只有小部分區(qū)域發(fā)生變化時工作良好。但是當(dāng)用戶開關(guān)窗口或觀看視頻時,對帶寬的需求會顯著增加[4]。
2 HTML5
2.1 發(fā)展現(xiàn)狀
HTML5是HTML下一個主要的修訂版本,目前仍處于發(fā)展制定階段。HTML5 添加了許多新的語法特征,其中包括<video>,<audio>和<canvas>等元素。這些元素是為了更容易地在網(wǎng)頁中添加和處理多媒體和圖片而設(shè)計的[5]。目前,F(xiàn)irefox、Chrome、Opera、Safari、Internet Explorer9等主流瀏覽器已陸續(xù)開始支持 HTML5 技術(shù)。
2.2 WebSocket
WebSocket是HTML5提供的一種允許瀏覽器與服務(wù)器之間進行全雙工通信的網(wǎng)絡(luò)技術(shù)。為了實現(xiàn)即時通信,目前常用的技術(shù)是輪詢。輪詢是指瀏覽器以特定的頻率向服務(wù)器發(fā)出HTTP請求,之后由服務(wù)器返回數(shù)據(jù)給客戶端瀏覽器。輪詢模式的缺點是,瀏覽器需要不斷向服務(wù)器發(fā)出請求。由于HTTP請求的報頭很長,而報文數(shù)據(jù)可能是一個很小的值,這樣將會浪費網(wǎng)絡(luò)帶寬和服務(wù)器資源。面對這種情況,HTML5定義了新的 WebSocket協(xié)議,以便節(jié)省資源,并達到實時通信的效果。使用WebSocket,服務(wù)器可以隨時向瀏覽器推送信息,這在傳統(tǒng)的無狀態(tài)HTTP連接中是不可能實現(xiàn)的。
WebSocket的協(xié)議名稱是ws。在新的通信方式下,網(wǎng)絡(luò)連接的地址將會寫為ws://localhost:8080/webSocketServer。由于ws是不同于HTTP的新協(xié)議,它需要服務(wù)器和客戶端同時支持才能正常運行。目前,服務(wù)器對WebSocket的支持尚不普遍。下表是瀏覽器對 WebSocket的支持信息??梢钥闯?,現(xiàn)代瀏覽器對于WebSocket的支持是比較廣泛的[6]。
3 基于WebSocket的VNC連接
3.1 noVNC簡介
如果將VNC客戶端用純粹的 HTML5來實現(xiàn),這樣的應(yīng)用將可以繼承VNC和HTML5跨平臺、高效率通信等特性,在遠程連接中將有良好的應(yīng)用前景。noVNC是一種基于HTML5和javascript的VNC客戶端,采用了WebSocket通信技術(shù),因此需要同樣支持WebSocket的VNC服務(wù)器才可以實現(xiàn)連接。但是目前,服務(wù)器對WebSocket的支持尚不普及,提供支持的只有x11vnc和 PocketVNC兩種服務(wù)器。noVNC通過加設(shè)轉(zhuǎn)換WebSocket為TCP socket的代理服務(wù)器,使得客戶端可以連接到任意標(biāo)準(zhǔn)的VNC服務(wù)器。
4 三種VNC連接對比
建立VNC連接有兩種傳統(tǒng)方法:使用 VNC 專屬的客戶端或使用基于Java的瀏覽器插件。這兩種方法的共同特點是,都需要客戶在本地進行相應(yīng)軟件的安裝。noVNC連接則不需要在客戶端安裝特定軟件,只要通過瀏覽器從網(wǎng)頁上發(fā)起連接即可。
在局域網(wǎng)環(huán)境內(nèi),通過100Mbps以太網(wǎng)實現(xiàn)從Windows客戶機到TightVNC服務(wù)器的連接。實驗表明,采用這三種方式的連接,在進行文件操作時普遍會感覺到操作延時。但對于常用的應(yīng)用程序,如Word等,性能都普遍可以接受。
當(dāng)三種連接進行第一幀初始化時,網(wǎng)絡(luò)帶寬的占用情況略有不同,測試結(jié)果如上圖所示。從標(biāo)準(zhǔn)客戶端連接,在圖像進行第一幀初始化時,帶寬占用率明顯高于另外兩種類型連接。重復(fù)進行初始幀渲染,可以觀察到noVNC連接在三種連接類型中的帶寬占用率是最低的。雖然對于單臺客戶機來說,帶寬占用率的降低并沒有顯著影響。但是當(dāng)網(wǎng)絡(luò)上活躍用戶越來越多時,每個用戶帶寬占用的些許降低對全網(wǎng)來說卻是意義重大的。
5 結(jié)論
隨著云計算技術(shù)的發(fā)展,基于RFB協(xié)議的VNC因其開源、跨平臺、易于實現(xiàn)等特性,在各類應(yīng)用場景中得到了廣泛使用。本文介紹了VNC和HTML5技術(shù)的發(fā)展歷程以及應(yīng)用現(xiàn)狀。將VNC客戶端用純粹的HTML5技術(shù)實現(xiàn),這樣的應(yīng)用將會有良好的應(yīng)用前景。文中對三種不同類型的VNC連接進行了實驗對比。實驗的結(jié)果表明,基于WebSocket的noVNC連接,其初始化時的帶寬占用率在三者中是最低的,而在性能方面和其他兩種連接表現(xiàn)相當(dāng)。該結(jié)果充分說明了HTML5新技術(shù)的發(fā)展?jié)摿?。在未來,WebSocket在Web應(yīng)用中會有良好的實用價值。
責(zé)編/王蒙
參考文獻
[1]陳全, 鄧倩妮.云計算及其關(guān)鍵技術(shù)[J].計算機應(yīng)用. 200929(9): 2562-2567.
[2]劉奎恩, 王青.一種基于VNC的智能應(yīng)用服務(wù)系統(tǒng)的設(shè)計和實現(xiàn)[J].計算機工程與應(yīng)用, 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核心技術(shù)的研究與價值分析[J]. 價值工程,2011
[6]W3C, The WebSocket API [EB/OL], http://www.w3.org/TR/2012/CR-websockets-20120920, 2012
[7]黃曉安, 何亮, 許寧.使用HTML5 WebSocket構(gòu)建實時Web應(yīng)用.IBM developerWorks, 2011
手機體驗

微信公眾號

微信小程序

手機版
-
微分享
