• 沒有找到結果。

Web MK2

在文檔中 P2P技術的研究 (頁 11-0)

第二章 P2P 的研究與介紹

2.2 P2P 的應用模式

2.2.5 Web MK2

Web MK2 的技術是一種資訊願景。理想上,企業可以整合上述的 技術,包括:通訊、內容及運算,透過多層資料存取架構及目錄,進 行資料的運算及存取。在此架構下,將需要大量智慧軟體代理人,進 行資料的蒐集。此外,這樣機制,也將被用於「供應鏈管理」上,透 過資訊代理人的協助,大量的資訊將會被整合、運算及分享。

2.3、P2P的產品 1.Napster

免費提供用戶之間的 MP3 歌曲文件交換服務,一年左右擁有了 3800 萬用戶,因與 RIAA 的官司而使整個世界為之側目。《財富》和《商業 周刊》都曾 對其作封面報道。

2.Gnutella

類似 Napster 提供包括 MP3 文件在內的各種文件交換服務,是開放 源碼的軟體,其宣稱是「純粹的 P2P」,不需要任何中心伺服器。

3.Jabber

基於 XML 的即使訊息(Instant Messanging)標準,基於 Java 的開放 源碼軟體。其有可能打破 AOL 在這一領域的壟斷,以開放源碼和 P2P 形成統一的即時訊息標準。

4.Groove

由 Lotus Notes 設計者 Ray Ozzie 開發的應用 P2P 技術的、基於互 聯網的新一代群件工具。類似產品還有 Legion 和 Engenia。

5.SETI@Home

試圖收集聯接在網路上的個人電腦的晶片、記憶體的富餘計算能 力,形成巨大的分佈計算網路進行外空探索。

2.4、P2P的未來發展

首先應該對 peer to peer 這這字做解讀,如同前面講的,這是一 個兩個端點間的交流,兩個端點間的地位應該是平等的。一連上網,

所做的動作便是連至某個 SERVER 端,被動接受其所提供的資料,交流 之間變的困難。P2P出現的意義讓網路上的資訊掌控者轉移,改進 主導的主從式架構讓資訊的提供者成為每一個人,這讓彼此溝通更進 一步拓展了。Dave Winner 的論斷 P2P 中的 P 是人﹝people﹞!這可 能是關於 P2P 最深刻的解讀之一。事實上,我們所處的真實生活是 P2P 的環境,人們可以和其他人直接地的交流。資訊技術將我們帶到了網 路空間,在網路空間我們仍然希望還能夠按照原來的 P2P 方式交流溝 通。儘管互聯網本質上是支援對等交流模式,但是網路的發展給對等 交流增加了許多障礙。

正如許多技術專家所指出的,動態 IP 位址、防火牆、代理伺服器 從技術上使得對等連接變得很困難。更不用說目前的網路主導模式已 經發展成為伺服器/用戶端模式,人們在網路上只能被動的接受那些大

可以這樣類比,互聯網的出現和電話的發明是具有同樣的意義 的,但是互聯網最開始的主要特徵是非即時的,就像傳真一樣,而沒 有提供像電話那樣即時交流,現在 P2P 的即時訊息可能使得互聯網上 的即時交流變得和 Web 頁面、E-mail 那樣普遍和不可或缺。

對於所有的 P2P 應用來說,最先要做的就是恢復互聯網曾經失去 的對等聯網能力。這也正是 Napster 概念上最大的缺陷。﹝email 是具 有 P2P 交流的特徵的,但 email 缺乏即時交流的能力,它類似與傳真,

但我們還需要“電話”的。﹞

從“人”的角度上來講,P2P 發展的要點並不是 P2P 網路架構是如 何,而是 P2P 將人們在網路上連接起來了,人們可以在網路這個更迅 疾的媒介上處理那些需要溝通的問題。這是最重要的。儘管到今天還 有人在懷疑互聯網作為零售商業和 B2B 媒介的有效性,但是互聯網已 經從根本上改變了我們的交流方式是不需要任何討論的。過分的談了

“純粹的”、完全消除控制的 P2P 是毫無意義的。中心化或者非中心 化都只是工具,都是為了創造出使人們可以更有效地溝通的工具。

人類在現實生活中的經驗至今仍只有極少的部分被應用到網路 上,如新聞、B2C、B2B。現在,人們最常使用的 P2P 被移植到了網路 空間。P2P 可能改變一些我們已經熟知的、習慣了的產品和服務,也會 創造更多。

究竟會出現些什麼?預言未來的最好辦法是去創造。

第三章 使用技術和原理 3.1 通訊協定

3.1.1 TCP

通訊協定之一特色是無錯誤的大量傳輸資料並提供錯誤偵測和排 序資料以補 ip 不足之處。當應用程式使用 tcp 通訊時,會在來源電腦 與目的電腦監建立一條虛擬的連結。一但連結被建立完成後就可以在 兩台電腦箋以雙向位元組串流傳遞資料。TCP 使用位元串流通訊,資料 可被視為一連串位元組。

主機1 主機2

IP封包(packet)

雙向連線

3.1.2 UDP

和 TCP 相反主要用在傳遞少量的資料且只做單項資料的傳遞,接 收或發送的主機並不需要先建立好連線通道只是單純的將封包丟到目 的位置。

來源 主機

來源 主機

Ip封包

3.1.3 通訊協定的執行流程

而不論是撰寫何種應用程式,其執行流程大致如下:

以 TCP 通訊協定為例:

要建立主從應用程式(Client/Server),首先 Client 端必須知道 Server 端電腦的名稱或其 IP 位址,並且還要知道 Server 端用來「聆 聽」(Listen)的 Port,然後呼叫 Connect 方法。而在 Server 端方面 需建立一個接收 Port,並且呼叫 Listen 方法。當 Server 端接收到來 自 Client 端的連結請求時,會觸動 WinSock 的 ConnetionRequest 事 件。在此事件中,Server 端可利用 Accept 方法來完成連線。

在完成連線後,不論是 Client 端或 Server 端都可以收發資料。

若要傳送資料,可呼叫 SendData 方法,並且同時會觸發另一端的 DataArrival 事件,在此事件中可利用 DataArrival 事件內的 GetData 方法來擷取資料。

以 UDP 通訊協定為例:

UDP 應用程式可以是 Client 端也可以是 Server 端。在傳輸資料的 時候,只要先設定 Client 端的 LocalPort 屬性,然後 Server 端只需 將其 RemoteHost 屬性設定為 Client 端的 internet 位址,並且將 Server 端的 RemotePort 屬性設定為跟 Client 端的 LocalPort 屬性相 同的連接埠(Port)。其他如資料的傳送(SendData)、擷取(GetData)

等方法都跟上述的 TCP 通訊協定的方法相同。

而在建立 UDP 應用程式時,會呼叫 Bind 方法,這是必須的。Bind 方法的作用是為控制項保留一個本機 Port,舉例來說,如果將控制項 連結到 1001 號 Port,那麼其它應用程式就無法使用這一個 Port 來進 行 Listen,使用 Bind 方法可以阻止其它的應用程式使用同樣的 Port。

在使用 UDP 通訊協定的時候,可以隨意更改 RemoteHost 和

RemotePort 屬性,並且還保持連結在同一個 LocalPort 上。但 TCP 通 訊協定就不同了,在改變 RemoteHost 和 RemotePort 屬性之前,必須 先關閉連線。

3.2.Socket

3.2.1 socket 的介紹

Socket 第一次是在 Berkeley Unix 中出現,作為網路設計 TCP/IP 的橋樑。一個 socket 就是一個通訊的端點,以一個短整數來表示。這

簡單的說 socket 就是提供一個跟協定無關的傳送介面。Socket 應 用程式使用一個通訊埠號碼在一台電腦類為一識別它自己,例如,FTP

所以,應用程式透過指定三個項目建立 Scoket:主機的 IP 位置服 務的類型(TCP 連結導向、UDP 非連結傳輸)。

3.2.2 WinSock -Windows Sock 的介紹

Windows Socket 或稱 WinSock 程式介面,是以 BSD UNIX 中流行 的 Socket 介面為準則,定義了一套可使網路程式開發人員在

Microsoft Windows 環境下開發的標準 TCP/IP 網路程式。

3.3.Client/Server 架構

TCP 在連線時需做兩端點的連線,往往我們將提供資料的一方稱之 為伺服器端 (Server ) 而接收資料的一方稱之為客戶端 (Client)。

這裡所謂的 client 並不是真正的伺服器主機,而是網路程式設計領域 中大家稱之的伺服器,是指等待客戶端主動連線並提供資源服務的一 個程式,而要求連線的即為客戶端。且連線雙方皆可以同時執行伺服 器程式或者是客戶端程式。

3.4 微軟 visual basic winsock 控制項 3.4.1 使用方法

要使用 visual basic winsock 控制項,首先要將這控制項引用進 來

找到 Microsoft Winsock Control6.0 (SPS)此時 VB 的編輯畫面的 左邊的工具列會多一個控制項,就可以開始使用了。

3.4.2 控制項的屬性以及方法

RemoteHost String 會在產生了 DataArrival 事件後 設定,及設定之後,會包含負責發

Accept RequestID 只能用於 TCP 連接,處理一個

ConnectionRequest 事件時,用這個方法

接受進入的連接請求。

Bind LocalPort

,LocalIP

將 Sockets 同指定的本地連接埠和 IP 綁 在一起。假如有安裝多個網路卡,請使用 Bind。Bind 必須在 Listen 之前呼叫。

Close 無 關閉連接。

Connect RemoteHos t,

RemotePor t

在指定的遠端連接埠上,建立與指定遠端 主機的一個連接。

GetData Data,

Type,

MaxLen

取回當前等待中的資料。Type 和 MaxLen 參數均是可選的。

Type:參數指定要讀入的資料的類型。

Maxlen;參數指定最多要取回多少位元組

式。Listen 只用於 TCP 連接。

PeekData Data,

Type,

MaxLen

動作與 GetData 幾乎完全一致,只是資料 不會從系統緩衝區中刪除。

SendData Data 將資料傳送給遠端電腦。假如傳遞了一個 UNICODE 字串,那麼它會先轉換成一個 ANSI 字串。對於二進位資料,無論如何 都要使用一個位元組陣列。

3.4.3 winsock 控制項的應用

不論用 UDP 或 TCP 協動 WINSOCK 控制項都允許與遠端的設備連接,

並且相互之間交換資料。因此不管哪一種協定也都可以扮演主機端跟 用戶端,其所可以應用的範圍:

1.將用戶端所收集的資料,傳送給主機端 2.點對點的檔案傳送

3.聊天室應用程式 4.電子白板

5.VOIP

3.4.4 選擇適用的協定

在使用 WinSock 控制元件之前,必須先決定即將撰寫的應用程式 是使用 UDP 或 TCP,下面的幾個問題能夠幫助撰寫者選擇通訊協定:

1.在發送資料的時候,應用程式是否必須得到用戶端或伺服端的 確認?如果需要的話,那麼當然是要使用 TCP 通訊協定,在使用前,

先建立好連線系統。

3.5 winsock 的多人連線

一個 WinSock 控制項(當 Server)只能連結一個 Client 端的需 求,所以 Server 要變成可多重連結,要有多個 WinSock 控制項,我們 也可以使用 Load 指令來動態產生。

Server 端必須設定好一個 Local Port 當作其 Listen 的 Port,所 有 Client 端的 RemotePort 要,指定 Server 當 Listen 的 Port Number,

以本例來說,我設定 9999 當作 Server Listen 的 Port,而我的程式中 有一個 WinSock Control (Winsock1(0))專門做 Listen 的動作。在本 例中,我只允許有 4 個 Cllient 同時連上來,所以我在 Form Load 時,

便動態產生 4 個 WinSock ,含 Listen 的那一個一共 5 個 WinSock Control。

在 Server 端,如果 ConnectionRequest Event 產生了,代表有 Client 端提出需求,這時候,我們要選取一個沒有使用的 WinSock

在 Server 端,如果 ConnectionRequest Event 產生了,代表有 Client 端提出需求,這時候,我們要選取一個沒有使用的 WinSock

在文檔中 P2P技術的研究 (頁 11-0)

相關文件