• 沒有找到結果。

第二章 遠端桌面介紹

2.2 X Window

X Window 系統(也常稱為 X11 或 X)是一種以點陣圖方式顯示的視窗系統。最 初是 1984 年麻省理工學院的研究,之後變成 UNIX、Linux 等作業系統所一致適用的 標準化軟體工具套件及顯示架構的運作協定,經過二十多年的演進,現今已成為工業 標準。

2.2.1 X window 的架構

X Window 與一般的作業系統不同,在設計時就是以 Client/Server 為理念,整個 X Window 可以分為幾個部份:X Server、X Client、X Protocol 和 X Library,系統架構如 下圖所示。

圖 4. X Window 系統架構

z X Server:負責控制顯示卡將影像畫在顯示器上,並且管理鍵盤和滑鼠的事 件 , 產 生 視 窗 、 對 應 視 窗 及 刪 除 視 窗, 這 部 份 要 特 別 說 明 , 與 一 般 的 Client/Server 名詞定義有點差異,X Server 定義為 Display Server,而應用程 式端稱為 X Client。

z X Client:在 X Window 下的應用程式,要求特定的 X Server 作特定的動作。

主要的工作為:1、向 X Server 提出需求,2、接收來自 X Server 的事件訊息,

3、接收來自 X Server 的錯誤訊息。

z X Protocol[5]:X Client 和 X Server 的通訊協定,定義 Requests、Reply、Error 和 Events,這部份將在 2.2.2 節詳細說明。

z X Library:簡稱 X Lib,大部分 X window 上的應用程式以 X Library 來建立 GUI 元件,例如:按鈕(botton)、目錄(menus)等等。

2.2.2 X Window 的網路透明性

由於 X Window 系統採用網路訊息協定作為應用程式(X Client)和顯示介面(X Server)的溝通管道,而不是一般作業系統常見的函式呼叫,X Client 和 X Server 之間 就是夠過可靠的位元組資料流作為溝通。一般來說,如果 X Client 和 X Server 在同一 台電腦,就以內部程序通訊(IPC,InterProcess Communication)方式溝通;如果 X Client 和 X Server 在不同的機器上,利用程式介面 X Lib 透過可靠的網路協定(例如:TCP/IP)

進行溝通。X Protocol 定義了四種封包做為溝通的機制,如圖 5.。

圖 5. X Client 和 X Server 溝通程序

z 請求(Request):客戶端請求伺服器的資訊,或者請求伺服器執行一個動作。

z 回應(Respone):伺服器回應請求。但是並非所有的請求都會產生回覆。

z 事件(Event):伺服器傳送事件給客戶端,例如,鍵盤或滑鼠的輸入,或移 動、調整視窗。

z 錯誤(Error):如果請求無效時,伺服器會傳送一個錯誤封包。

當 X Client 要向 X Server 發出要求(Request)時,可透過網路向執行的 X Server 發出要求,然後交給 X Server 處裡。X Server 向 X Client 通知事件(Event)時,也可 以透過網路傳送。Request 和 Reply 的封包沒有長度限制,而 Event 和 Error 則有固定 32 bytes 的長度限制。網路透明化的性質,就是不同機器上的應用程式可以在同一台 電腦上顯示結果,這樣的特性乃是 X Window 不同於其他系統的一大特點。

2.2.3 X Client 和 X Server 的繪圖管道

瞭解了 X window 的架構及網路透明性,我們的重點還是影像畫面的繪製與傳遞,

關於 Window 的繪圖功能以及 Client/Server 之間傳遞的影像資訊,X Window 提供了一 些原則:

z X Server 將螢幕規劃為可重疊的視窗階層(window hierarchy),每個應用程 式可以使用多個視窗,依實際需要,重新規劃大小、位置。每個 GUI 中,視 窗就是一個頂層視窗(Top Level Window),除了根視窗(Root Window)以外,

每個視窗都有一個 Parent Window,也就是說,Client 建立一個視窗就是在現 存的視窗下建立一個子視窗,所以 Client 所建立的視窗都是以樹狀結構去建 立的,樹狀結構的根就是 root window。

z X Server 的繪圖是立即性的,X Server 並沒有儲存繪圖序列的動作,而是收 到資料後立即繪出畫面。X Window 繪圖是以位元對映(bit-mapped)導向,

所有繪圖動作均以視窗定位,因此 X Client 可以在視窗內畫出東西,而不用 考慮視窗在哪個地方。

z X Window 顯示圖片(images),由於影像的資料量很大,因此 X Lib 提供了 一個 XImage 結構,允許使用者操作影像。XImage 支持多種格式的影像資料 並且操作影像中的 pixmaps。

在使用者圖形介面下,常會需要顯示一張圖片在畫面上,Xlib 提供了直接在 Client 和 Server 之間傳送影片的函數,這些函數都會使用 XImage 結構來作為函數的輸入參 數,這裡提供一套顯示圖片的方法,這個方法也是本論文架構 rdesktop 使用的方法,

以下進行說明:

1、宣告變數 XImage *image;

Pixmap bitmap;

2、呼叫 XCreatePixmap

bitmap=XCreatePixmap(display, drawable, width, height, depth) 建立一個 pixmap 的結構

3、呼叫 XCreateImage

image=XCreateImage(display, visual, depth, format, offset, data, width, height, bitmap_pad, bytes_per_line)

建立影像資料結構,並定義相關參數 4、XInitImage(image)

XImage 在使用前,必須先經過初始化的動作。

5、將建立的影像資料結構放入 bitmap 中

XPutImage(display, bitmap, GC, image, source X, source Y, destination X, destination Y, width, height)

X Server 利用 pixmap 支援影像功能,pixmap 實際是一塊存放 bits per pixel 的圖形 儲存區,他的深度就是每一個 pixel 使用的位元數,pixmap 利用來存放影像,當我們 在 pixmap 做圖時,就如同在 window 做圖一樣,只是沒有顯示在螢幕上,因此 X window 的可繪圖區(drawable)其實就是泛指視窗(window)和 pixmap。由於 pixmap 是系 統資源,所以使用前必須創建它,當一個 pixmap 創立後,其內容是未被定義的,唯有 透過 X Lib 的做圖函數在其中作圖,才可以設置它,在利用函數將其複製到視窗中就 可以顯示了。瞭解了 X Window 做圖方式後,接下來說明 X Client 和 X Server 之間的 交談方式,X Server 存放了資源(Resources)提供 X Client 使用識別碼(identifiers)

操作,以下對各個資源做說明。

z 視窗(window):這項資源是工作站上的矩型面積,使用者可利用視窗來觀 看輸出結果,當應用程式產生需要顯示的圖形時,必須指定一個視窗來輸出。

每個視窗都必須有一個根視窗(root window),整個螢幕就是一個根視窗。

z 繪圖環境(graphical contexts,GC):這部份是用來追蹤圖形的屬性,例如:前 景顏色、背景顏色、線條寬度、字型等等。每一個圖形輸出的請求必須參照 GC,X Window 提供 X Client 請求產生、改變或是刪除一個 GC。

z 字型(fonts):這項資源包括了在視窗上顯示文字有關的資料,描述一組文字 的大小及樣式,這部份 X Server 通常有字型可供選擇,X Client 說明字元大 小、字元空間、字體,利用編碼(ASCII、ISO Latin-1 等等)由 X Server 顯 示。 的函式,Client/Server 通訊協定都仰賴這個函式庫來完成,現行有些 X Window 高階的 程式語言(例如:GTK+),就是建構在 X Lib 函式庫的基礎上。

2.2.4 X Window 優缺點分析

X Window 是一套已經發展成熟且公開的標準,其中 X Client 和 X Server 又是以 訊息溝通為主,X Server 屬於顯示部分,而 X Client 屬於運算處理部份,這樣的溝通 方式可以降低頻寬的使用。但是,這樣的溝通方式造成冗長的 round trip time。round trip time 就是 X Client 和 X Server 溝通時,因為太多的 request 和 response 造成訊息往返時

Remote Desktop Protocol,簡稱 RDP[6][7]。RDP 是微軟根據 ITU T.120 協議系列 所制定的一套未公開發表的數據通訊協議。透過網路連接 RDP Server 將應用程式顯示 畫面傳送到 RDP Client,RDP Client 將滑鼠、鍵盤等輸入訊息傳送給 RDP Server。

2.3.1 RDP 簡介

RDP 是 Windows 作業系統使用的 Terminal Service 通訊協定,其版本從 version 4.0 開始,演進到現在 version 6.0 版[8],以下根據各個版本支援的作業系統與特色做比較,

如下表。

表 1. RDP 版本比較

Version Operating System Feature 4.0 Windows NT 4.0 Server,

Terminal Server Edition

支援 8 bpp bitmap cache

clipboard mapping 複製區塊 5.0

(rdesktop)

Windows 2000 Professional 支援 16 bpp

列印到用戶端印表機 針對網路頻寬使用的改進 以 56 bit 或 128 bit 加密 5.1 Windows XP Professional 支援 24 bpp

支援聲音轉向播放

在文檔中 終端服務的桌面影像壓縮 (頁 18-22)