日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VNC源码研究(一)

發布時間:2023/12/10 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VNC源码研究(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

VNC采用RFB通信協議。RFB?("remote?幀緩存?")?是一個遠程圖形用戶的簡單協議,因為它工作在幀緩存級別上,所以它可以應用于所有的窗口系統,例如:X?11,Windows?和?Mac?系統。

獨特的計算環境。?

? ? ?RFB?協議可進行可靠的傳輸,如字節流或基于消息的。和大多數協議一樣,它也是通過TCP/IP?協議簇連接。

協議由三步完成連接:

首先是握手報文,目的是對協議版本和加密方式進行協商。

第二步是初始化報文,主要用于客戶和服務器的初始化消息。

最后就是正常握手始于服務器向客戶發送協議版本的消息,告知客戶服務器所能支持RFB?協議的最高版本號。此時客戶端會發送相似的消息告訴服務器將要使用的協議版本??蛻舳瞬粦撜埱蟾哂诜掌鞯膮f議版本。如此一來就給客戶和服務器端提供了一種向后兼容機制。?
目前發布的協議版本主要有3.3??3.7??3.8??(3.5版本被報告存在問題),對于新的編碼和偽碼方式版本號不需要進行修改,因為服務器端可能忽略它不能識別的版本。?

? ? ?一旦協議版本被確定,服務器和客戶端必須一致同意連接的安全類型。服務器發送所支持的安全類型,當客戶端支持服務器的某一種安全類型,客戶端選擇這種安全認證類型并發送給服務器。否則客戶端發送失敗,并標識出失敗原因。
?

安全認證有多種,有一種為VNC安全認證,當用VNC認證的時候,協議數據采用明文發送,服務器發送一個16字節的隨機數驗證給客戶端,客戶端用DES對驗證進行加密,用用戶密碼作為密鑰回復給服務器16字節,這時服務器會返回安全結果給客戶端。如果成功就進入初始化報文階段。不成功就關閉連接。

? ? ?當安全認證成功后,客戶端會發送客戶端是否共享服務器初始化報文,當客戶端設置報文為可共享時,服務器查看當前配置是否允許共享連接,如果同意,則不關閉之前連接的客戶端,否則斷開之前連接的客戶端。?

? ??這時服務器會發送客戶端初始化信息。這些信息包括:服務器上幀緩存的高寬,像素格式還有與桌面相關的名稱,其中服務器象素定義服務器本來的象素格式,這種象素格式會被一直使用,除非客戶端使用設置象素格式消息來請求另一種象素格式。

至此初始化報文階段完成,進入協議交互階段。?

? ??協議交互分為客戶到服務器消息和服務器到客戶消息?

?

二、

VNC (Virtual Network Computing)是虛擬網絡計算機的縮寫。VNC 是一款優秀的遠程控制工具軟件,由著名的AT&T 的歐洲研究實驗室開發的。VNC 是在基于UNIX 和Linux操作系統的免費的開源軟件,遠程控制能力強大,高效實用,其性能可以和Windows 和MAC 中的任何遠程控制軟件媲美。 在 Linux 中,VNC 包括以下四個命令:vncserver,vncviewer,vncpasswd,和 vncconnect。大多數情況下我只需要其中的兩個命令:vncserver 和 vncviewer。

VNC(Virtual Network Computing)基本上是屬于一種顯示系統,也就是說它能將完整的窗口界面通過網絡,傳輸到另一臺計算機的屏幕上. Windows服務器中包含的"Terminal Server"、Symantec公司開發的收費軟件PCAnywhere、近期流行的Teamviewer、國內的協通XT800(快遞通KDT)都是屬于這種原理的設計,同時這些軟件又在VNC的原理基礎上做了各自相應改進,提高了易用性、連通率和可穿透內網(Teamviewer、協通XT800、KDT).

  VNC是由 AT&T實驗室所開發的,其采用GPL(General Public License)授權條款,任何人都可免費取得該軟件。VNC軟件要由兩個部分組成:VNC server 及VNC viewer。用戶需先將 VNC server安裝在被遠程操控的計算算機上后,才能在主控端執行VNC viewer 進行遠程操控。 類似的技術為 RDP(Remote Desktop Process),稱為“遠程桌面連接”,此外,還有一套由mantec 公司推出的 pcAnywhere 軟件也具有類似功能。 VNC、RDP、pcAnywhere等均為遠程登錄 Telnet 的圖形化界面軟件,由 Telnet 軟件發展而。

VNC工作流程

  (1) 在服務器端啟動 VNC Serve。

  (2) VNC客戶端通過瀏覽器或 VNC Viewer 連接至VNC Server。

  (3) VNC Server傳送一對話窗口至客戶端,要求輸入連接密碼, 以及存取的VNC Server顯示裝置。

  (4) 在客戶端輸入聯機密碼后,VNC Server驗證客戶端是否具有存取權限。

  (5) 若是客戶端通過 VNC Server 的驗證,客戶端即要求VNC Server顯示桌面環境。

  (6) VNC Server通過X Protocol 要求X Server將畫面顯示控制權交由VNC Server負責。

  (7) VNC Server將來由 X Server 的桌面環境利用VNC通信協議送至客戶端, 并且允許客戶端控制VNC Server的桌面環境及輸入裝置。

特點
? 同樣可能遠程連入UNIX、Linux進行圖形化操作的還有流行的Xmanager,VNC與之相比——兩者工作原理不一樣,前者(VNC)是遠程連入操作系統,所有操作在UNIX、Linux主機服務端進行,即使操作過程中“本地電腦與操作主機網絡斷開”,也不影響操作的順利進行;而后者(Xmanager)是通過端口將主機服務器的UI界面引導到本地電腦進行展現,如操作過程出現“本地電腦與操作主機網絡斷開”,操作將中斷失敗!如果操作都進行的工作任務非常重要,不能中斷,如ORACLE RAC實施,結果是災難性的!更重要的是,VNC是免費的、開源的,Xmanager你可能用的是破解注冊版的。

組成部分

VNC基本上是由兩部分組成:一部分是客戶端的應用程序(vncviewer);另外一部分是服務器端的應用程序(vncserver)。VNC的基本運行原理和一些Windows下的遠程控制軟件很相象。VNC的服務器端應用程序在UNIX和Linux操作系統中適應性很強,圖形用戶界面十分友好,看上去和Windows下的軟件界面也很類似。在任何安裝了客戶端的應用程序(vncviewer)的Linux平臺的計算機都能十分方便的和安裝了服務器端的應用程序(vncserver)的計算機相互連接。另外,服務器端 (vncserver)還內建了Java Web接口,這樣用戶通過服務器端對其他計算機的操作就能通過Netscape顯示出來了,這樣的操作過程和顯示方式比較直觀方便。

命令描述

?

?????? vncserver

  此服務程序必須在在主(或遙控)計算機上運行。你只能作為使用者(不需要根用戶身份)使用此項服務。

  vncviewer

  本地應用程序,用于遠程接入運行vncserver的計算機并顯示其環境。你需要知道遠程計算機的IP地址和vncserver設定的密碼。

  vncpasswd

  vncserver的密碼設置工具。vncserver服務程序沒有設置密碼將不能運行(好習慣)。如果你沒有設置,運行vncserver時它會提示你輸入一個密碼。所以,一般我不會單獨運行這個命令來設置密碼。

  vncconnect

  告訴vncserver連接到遠程一個運行vncviewer的計算機的IP和端口號。這樣我就可以避免給其他人一個接入的密碼。

  Xvnc

  一個vnc“主控”程序,一般來說不需要直接運行。(vncserver和vncviewer實際上是Xvnc的腳本)

  查找所有可用的選項,運行:

  Xvnc --help

  出于安全的考慮,一般不建議直接以超級用戶帳號運行vncserver程序。如果你需要超級用戶的環境,請以一般用戶登錄后再使用su命令登錄到超級用戶帳號。

  VNC運行的工作流程如下:

  (1) VNC客戶端通過瀏覽器或VNC Viewer連接至VNC Server。

  (2) VNC Server傳送一對話窗口至客戶端,要求輸入連接密碼,以及存取的VNC Server顯示裝置。

  (3) 在客戶端輸入聯機密碼后,VNC Server驗證客戶端是否具有存取權限。

  (4) 若是客戶端通過VNC Server的驗證,客戶端即要求VNC Server顯示桌面環境。

  (5) VNC Server通過X Protocol 要求X Server將畫面顯示控制權交由VNC Server負責。

  (6) VNC Server將來由 X Server的桌面環境利用VNC通信協議送至客戶端,并且允許客戶端控制VNC Server的桌面環境及輸入裝置。

?

7、測試vnc

  7.1、使用java連接vncserver

  在瀏覽器中輸入http://192.168.0.10:5801登錄桌面。

  7.2、使用vnc viewer連接vncserver

  打開vnc viewer,在server中輸入192.168.0.10:1進行連接。

  注意:192.168.0.10替換成自己的服務器IP。

?

三、

VNC由Olivetti?&?Oracle研究室所開發,此研究室在1999年併入美國電話電報公司(AT&T)。AT&T於2002年中止了此研究室的運作,並把VNC以GPL釋出。

由於VNC以GPL授權,衍生出了幾個VNC軟體:

RealVNC:由VNC團隊部份成員開發,分為全功能商業版及免費版。?
TightVNC:強調節省頻寬使用。?
UltraVNC:加入了TightVNC的部份程式及加強效能的圖型映射驅動程式,並結合Active?Directory及NTLM的帳號密碼認證,但僅有Windows版本。?
Vine?Viewer:MacOSX的VNC用戶端。?
這些軟體各有所長,例如UltraVNC支援檔案傳輸以及全螢幕模式。而這些軟體間大多遵循基本的VNC協定,因此大多可互通使用。

http://www.realvnc.com/???REALVNC

http://www.tightvnc.com/???TIGHTVNC

http://ultravnc.com/????????ULTRAVNC

?四、這里記錄TightProjector的安裝過程:

說明:如上面所講到的,我們這里下載的VNC具有特性:“VNC與之相比——兩者工作原理不一樣,前者(VNC)是遠程連入操作系統,所有操作在UNIX、Linux主機服務端進行,即使操作過程中“本地電腦與操作主機網絡斷開”,也不影響操作的順利進行;”。

1、下載

?

?

得到

它只有387K。

?

?

2、安裝在服務器與客戶機上都安裝上此軟件。

安裝目錄里的文件有:

安裝后得到兩個程序:

TightProjector是服務端,TightReceiver是客戶端。

?

3、

正常現象如下圖:

(1)當我們把鼠標移到客戶端的窗口時,鼠標是消失的。

(2)客戶端的窗口是大小不變的。

(3)

發現一個現象:

服務端(即主機)顯示了鎖定界面,可是客戶端還是顯示桌面。

?

?

五、tightProject實現方法研究

?

?

六、這里記錄tightVnc 的安裝過程:

1、下載安裝

(1)服務端TightVNC Service下載

?

我們下載32位的,安裝文件為:

安裝過程提示:

這里有個是否注冊為系統服務、是否允許發送Ctrl-Atl-Del的開關。這個開關的影響我們后面會講到。

?

接下來會要求輸入遠程訪問的密碼及管理員密碼(當有多個用戶時可以用管理員密碼登錄)

?

接下來會彈出“運行身份”的對話框,選擇以哪個賬戶運行這個程序。

?

安裝完成后TightVNC程序的運行文件有:

?

?

?

運行界面如下:

從下面看是既支持客戶端Viewer連接,也支持WEB端連接。我們是以客戶端連接Viewer來講的。

?

在訪問控制TAB中可以設置訪問的IP地址。

(2)客戶端安裝

下載后得到文件:

?

?

2、運行后的界面

OPtION選項的內容為:

“Let remote server deal with mouse cursor”那么Viewer不顯示鼠標,只是一個小點,但都可操作。

?

?

?

?

3、運行后的效果如下:

4、在有屏保時,Viewer顯示很卡。且屏保無法去掉,服務端去掉屏保后View中無更新。是黑的,得在服務端中進入解鎖才可得到圖像。

?

?

?

總結

以上是生活随笔為你收集整理的VNC源码研究(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。