第二章 背景知識
2.3 常見分享軟體簡介
目前比較常見的 P2P 軟體有 eDonkey[ 18 ]、eMule[ 17 ]、ezPeer[ 21 ]、Kuro[ 20 ]、
BitTorrent(BT)[ 27 ]、KaZaA[ 25 ]、Gnutella[ 16 ]、FastTrack[ 24 ]等,以下各小節分 別簡介其運作方式。
2.3.1 eDonkey 與 eMule
eDonkey 為一個不需要依賴中心伺服器就可以搜尋網路上分享的檔案。搜尋的速度 快且具有全域搜尋的功能。它允許客戶端傳輸任何類型的檔案,它能自動的交換來源繼 續傳輸檔案,使用者將能從多重來源下載一個相同的檔案以確保傳輸是快速的可能性。
eMule project 開始於 2002 年 5 月,此因於 Merkur 不滿意原始 eDonkey2000 客戶端 使用介面,並且堅信能提升程式的效能,建立更穩定的網路架構,因此他聚集了周圍的 案。eMule 還具有自動檢查下載的檔案是否損壞的功能,以確保檔案的正確性,eMule 智慧損壞控制有助於快速矯正損壞的部分。其自動優先權及來源管理允許您一次下載許 多檔案而不須監視他們。除此之外,預覽功能允許您在下載完成之前查看您的影像或檔 案。在搜尋檔案時,eMule 提供了一個大範圍可能的搜尋,包含了:伺服器(本地和全球)、
Web 基礎(Jigle 和 Filedonkey)以及 Kad 網路,eMule 也允許您使用非常複雜的布林搜尋 使搜尋更為的靈活。eMule 還具有即時通訊的功能,可以傳送訊息到其他的客戶端並可 將他們加入成為好友,以內建的 IRC 客戶端,能在全世界和其他的下載者聊天。
2.3.2 FastTrack
FastTrack 和 Kazaa 是由荷蘭人 Scandinavians、Niklas Zennstrom 和 Janus Friis 所設 計的,2001 年 3 月,在一家荷蘭公司 Consumer Empowerment 的產品中最先使用。那時 候正是第一代 P2P 網路的末期。FastTrack 允許使用者交換任何形式的數位檔案,包含 音樂、軟體、視訊、電影等,此軟體屬於第二代的 P2P 架構,使用者要交換檔案並不需 要經過任何廠商作仲介。
FastTrack 在 P2P 的網路上做了一些加強,包含 Super nodes 技術,如果一個用戶端 電腦性能足夠,而且網路連接速度快,那它就自動成為 Supernode。Supernode 為那些速 度較慢的節點提供索引服務,這樣的改變大幅加快了搜尋以及下載速度。一開始的時 候,用戶端中保存了一個 supernode 的 IP 位址的列表,它會試圖連接這些 IP 直至找到 一個在網路中的 supernode,它會向這個 supernode 索取當前活動的 supernode 的列表,
並 更 新 自 己 保 存 的 列 表 。 用 戶 端 也 會 把 自 己 分 享 的 檔 列 表 告 訴 supernode , 也 從 supernode 查詢自己想要的檔案,當查詢到檔案的位置時,就會直接與檔的所有者連接,
並透過 HTTP 協議進行下載。
2.3.3 Kazaa
Kazaa(採用 FastTrack 技術),到目前為止尚未公開其架構,現有的文獻[ 13 ]是經由 分析該軟體的行為,反推而得的結果。但是推測的架構的確是可行的,而且由非官方單 位依其架構開發的軟體 Kazaa-Lite 現在也廣為流行。
圖 12 Kazaa 網路架構
此架構下也是只有一般用戶端,但是會因各用戶端傳輸能力而被區分為 ON( Ordinary Node )、SN( Super Node )拓樸,如圖 12 所示。ON 為一般用戶端,SN 為網路資源大的 用戶端(如頻寬大)。不過使用者無法直接得知本身為 ON 還是 SN,因為 ON 可能因為被 整個系統判定為高資源者,進而轉變成 SN 來處理較多的事件。由於在這樣的架構下可 以提升傳輸速,使得 Kazaa 成為了目前熱門的點對點軟體。
2.3.4 Gnutella
Gnutella 係由 AOL 的子公司 NullSoft 開發出來的程式。Gnutella 為一分散式的 P2P 軟體,其主要的功能是提供一個溝通搜尋管道,使用者只要下載 Gnutella 程式,不需透 過中央伺服器,即可以匿名的方式,和所有已安裝 Gnutella 的同好交換儲存在其電腦內 的音樂和其他檔案(如電影)。Gnutella 之運作是一種類似電話連線網路,呈現一種多重 樹形,各節點提供轉接的服務。當登入網路後,首先它會盡可能告訴你,網路現在有多 少你的平行同儕(horizontal peers)。不過,你僅認識鄰近同儕,而其中一位會認識其本身 之同儕,依此類推而擴展至整個網路。雖然 Gnutella 利用幾個伺服器來暫存同儕的連線 資訊,方便新使用者加入,但運作時並沒有集中管理,是完全分散式地,任何一個節點
(Peer)擁有完全相等的能力。
圖 13 Gnutella 網路架構
在最初的 Gnutella 協定中,使用的 Flooding 方法,來進行檔案的搜尋,此種搜尋方 式被稱為盲目搜索(Blind Search),意思是在網路中,每個節點都不知道其他節點擁有 那些資源。當某個節點要尋找某一特定資料時,此節點會把這個查詢要求傳發送給它的 相鄰節點,如果相鄰節點含有這個資源,就返回一個 QueryHit 的資訊給 Requester。如 果它相鄰的節點都沒有命中(QueryHit)這個被查詢檔案,就會把這條搜尋要求轉發給 自己的相鄰節點。這種方式訊息就像洪水在網路中各個節點流動一樣,所以叫做 Flooding 搜索。
Flooding 搜尋方式,使得控制訊息大量的被發送,消耗了大量的網路頻寬,並很快 造成網路擁塞甚至網路的不穩定。同時,局部性能較差的節點可能會導致 Gnutella 網路 被分片(fragment),從而導致整個網路的可用性較差,另外這類系統更容易受到垃圾資 訊,甚至被惡意的使用者利用而造成阻斷式攻擊(DoS attack)。
2.3.5 ezPeer 與 Kuro
ezPeer 與 Kuro 是國內本土公司採用會員收費機制的 P2P 檔案分享軟體。ezPeer 為 全球數碼科技公司之產品,它以點對點的網路架構技術,讓每一個使用者的電腦可以直 接與另一個使用者交換 MP3 音樂或多媒體檔案(包括電影或小遊戲)。早期的 ezPeer 類似 Napster,為第一代點對點架構,有一個主 Index Server 紀錄歌曲來源。改版後的 ezPeer 似無 Index Server。
ezPeer 沒有索引服務,它採用類似 Gnutella 的運作方式,ezPeer 的特色在於透過驗 證主機控管並且對會員收費。它的搜尋功能不需付費,只有下載需要付費。它也提供線 上立即娛樂、歌曲邊載邊聽、內建 MP3 音樂播放器、即時訊息傳遞、線上音樂聊天室 等等功能,所支援的分享檔案類型除 MP3 音樂檔案外,ezPeer 也可搜尋或傳輸文字檔、
圖片檔、影片檔等檔案格式
Kuro 為飛行網公司所開發的 P2P 軟體,其推出的主要功能是音樂搜尋與音樂分享,
目前為付費軟體,必須申請帳號及付費才能正式使用。會員需透過 Kuro 主機通過付費 驗證後,才能進行搜尋及下載。當安裝完 Kuro 的軟體之後,第一次使用此軟體,Kuro 會自動連向固定的 Server 來做溝通,並取得其他使用者的相關資訊,往後在登入 Kuro 時,不會再連向固定 Server,而是連到第一次記住的其他使用者,藉著其他使用者連上 Kuro 的 P2P 網路。
Kuro 並沒有集中的檔案索引 Server,供使用者直接查詢存放音樂之檔案資訊,以進 行搜尋。在分享音樂及搜尋音樂方面,是向其他使用者發出請求,若有找到此音樂,便 會向擁有音樂的使用者要求下載。Kuro 的 Server 並不會存放音樂檔案的索引檔,而是 僅存放 Kuro 使用者的資訊。(目前在 Server 存放使用者資訊,還在司法程式中認定是否 違法。)
圖 14 ezPeer 和 Kuro 軟體
2.3.6 BT(BitTorrent)
BitTorrent(簡稱 BT)沒有提供搜尋功能,使用者需自行尋找所需種子( SEED,.torrent 檔 )。種子中包含追蹤者( Tracker )網路位置、最初來源網路位置、檔案雜湊值等檔案相 關資訊,利用該種子才能下載所需檔案。
BitTorrent 的架構由追蹤者、種子來源、用戶端組成。追蹤者在 BitTorrent 佔最重要 的角色,追蹤者會輔助尋找檔案,因為追蹤者會紀錄有哪些用戶端擁有所需資料的片段 可供下載。種子來源提供取得種子的角色,通常是網站論壇或使用者之間互相交換。點 則是每個用戶端,不僅是接收端,同時也是來源端。用戶端加入 BitTorrent 的方式,不 需要透過複雜溝通,只要得到種子即可。然而搜尋則相當於是尋找種子的動作。取得種 子後,BitTorrent 軟體會解析種子的內容,取得追蹤者的網路位置,並與追蹤者溝通,
然後詢問追蹤者是否有擁有資源的來源點,獲得來源點的網路位置後,點就開始向這些 點要求傳輸。
圖 15 BitTorrent 傳輸架構