Gnutella文件共享體系架構的工作原理
Gnutella工作原理
Napster在其巔峰時期或許是有史以來最受歡迎的網(wǎng)站。在不到一年的時間里,這個網(wǎng)站每月的訪問人數(shù)就從零上升到了六千萬。后來,該網(wǎng)站由于侵犯版權而被院勒令關閉,直到2003年才作為一個合法的音樂下載網(wǎng)站而得以重建。
最初的Napster迅速走紅是因為它提供了一種獨特的產(chǎn)品——您幾乎不費吹灰之力就可以從一個巨型數(shù)據(jù)庫中免費下載音樂。您不再需要到音像制品店去購買音樂唱片,不再需要為此付錢。同樣,您也不再需要為了一張CD而去排隊,也不再需要找一盤磁帶來翻錄。并且,幾乎世界上所有的音樂都可以在此獲得。
基于一開始Napster分發(fā)的產(chǎn)品是非法的這一特點,該網(wǎng)站的主要弱點就在于其體系架構——創(chuàng)始者設計整個系統(tǒng)的方法。一旦法院判定Napster涉嫌版權侵犯,下令關閉這個網(wǎng)站也就順理成章了。
Napster涉嫌版權侵犯的事實對其用戶來說無關緊要,他們中的大部分人都轉(zhuǎn)向了另外一個新的文件共享體系架構——Gnutella。在這篇文章中,您將會了解到Gnutella與舊式的Napster之間的不同之處,正是這種不同使得Gnutella能在當今對自己不利的法律環(huán)境下得以生存。
新的Napster
2003年,Napster由新的母公司Roxio重新創(chuàng)建。Napster現(xiàn)在是一個合法的付費音樂網(wǎng)站——第二版的Napster不存在版權侵犯問題。
Napster的體系架構
與普通的實施一樣,網(wǎng)站上有Web服務器負責維護信息并處理對信息的請求。Web瀏覽器允許個人用戶連接服務器并查看信息。流量大的大型網(wǎng)站可能需要購買和維護數(shù)百臺計算機來支持所有的用戶請求。
Napster首先提出了對等文件共享的概念。舊版的Napster中(Napster在2003年以一個合法的付費音樂網(wǎng)站的身份重新面世),人們將他們想要共享的文件(通常為MP3音樂文件)存儲在硬盤上并直接與其他人共享。用戶運行一個用來實現(xiàn)共享的Napster軟件,每一個用戶計算機都成為了一個微型服務器。
如果您登錄到舊版Napster下載一首歌曲,需要進行以下操作:
- 在計算機上啟動Napster軟件,此時您的計算機會成為一個可以讓文件為其他 Napster用戶所共享的微型服務器。
- 您的計算機連接到Napster的中央服務器,它將會告訴中央服務器您的計算機上有哪些文件可以共享。因此,Napster的中央服務器有一個完整的共享歌曲列表,其中列出了當時與 Napster連接的所有硬盤上每一首可用的共享歌曲。
- 然后,您輸入有關一首歌曲的查詢請求。假設您正在查找The Police樂隊的歌曲“Roxanne”,Napster的中央計算機就會列出存儲有這首歌的所有計算機。
- 您從列表中選出這首歌的一個版本。
- 你的計算機連接到存儲這首歌的用戶計算機,并直接從那臺計算機上下載這首歌曲。
Napster的創(chuàng)始者采用這種方法有很多原因:
- Napster最終成長為可以提供數(shù)十億首歌曲的網(wǎng)站,然而中央服務器不可能有足夠的硬盤空間來存儲所有的歌曲,也不可能有足夠的帶寬來處理所有的請求。
- Napster嘗試利用允許朋友之間共享音樂的版權法漏洞。Napster背后的法律觀念是:“所有人都是與朋友共享硬盤上的音樂?!狈ㄍゲ煌膺@種邏輯,但是它給了Napster足夠的時間來證明這種觀念并使其壯大起來。
這種方法取得了很好的效果并巧妙地應用了互聯(lián)網(wǎng)體系架構,通過在數(shù)百萬臺計算機上分擔下載文件的負載量,Napster實現(xiàn)了用其他任何方法都無法實現(xiàn)的任務。
歌曲名中央數(shù)據(jù)庫成了Napster的致命要害。法院下令Napster必須停止共享音樂時,由于中央數(shù)據(jù)庫的缺失而導致整個原初的Napster網(wǎng)絡的毀滅。
原初的Napster的消失,當時的狀況讓人感覺像是全世界有一億左右的人渴望著能夠共享越來越多的文件。故而出現(xiàn)另一個系統(tǒng)來填補這個空白只是時間的問題。
Gnutella的體系架構
現(xiàn)今,最受歡迎的文件共享系統(tǒng)是另一個對等網(wǎng)絡——Gnutella(或稱Gnutella網(wǎng)絡)。Gnutella與舊式Napster之間有兩大相似點:
- 用戶將想要共享的文件放到硬盤上,并使其可供任何其他人以對等方式下載。
- 用戶使用一個Gnutella軟件來連接Gnutella網(wǎng)絡。
Gnutella與舊式Napster之間也有兩大不同:
- 沒有使用中央數(shù)據(jù)庫以存儲Gnutella網(wǎng)絡中的所有可用文件,使用的是分布式查詢法。這樣,網(wǎng)絡上所有的計算機都能告知彼此可共享的文件。
- 有許多不同客戶程序可用于訪問Gnutella網(wǎng)絡。
由于具有這兩個特點,一個簡單的法院命令很難關閉Gnutella,法院必須尋找一種方法在ISP和互聯(lián)網(wǎng)的主干網(wǎng)級別上阻塞所有的Gnutella網(wǎng)絡通信,才能阻止人們進行共享。
Gnutella客戶程序
最初的Napster有一個“客戶軟件”——一個在用戶計算機上運行以訪問Napster服務器的軟件。Gnutella提供了數(shù)十個客戶程序。一些受歡迎的Gnutella客戶程序有:
- BearShare
- Gnucleus
- LimeWire
- Morpheus
- WinMX
- XoloX
Gnutella客戶程序如何查找歌曲
既然沒有中央服務器來存儲所有可用文件的名稱和位置,您的計算機上的Gnutella軟件又是如何從別人的計算機上搜索歌曲的呢?這個過程是這樣的:
- 您輸入想要查找的歌曲或者文件的名稱。
- 您的計算機至少知道網(wǎng)絡上的另一個Gnutella計算機,其原因是您已經(jīng)通過輸入IP地址告訴它該計算機的位置,或者因為Gnutella客戶程序中有一個預先編制的Gnutella主機的IP地址。您的計算機會把您輸入的歌曲名稱發(fā)送給它所知道的Gnutella計算機。
- 這些計算機搜索本地硬盤以用來查看是否有請求的文件。如果有,它們就會將文件名(以及計算機的IP地址)發(fā)送回請求者。
- 時,所有這些計算機還會將這個請求發(fā)送給與它們相連接的計算機,并重復這個過程。
- 每個請求都有一個TTL(生存時間)限制。一個請求在停止傳播之前可能會傳播六至七級。如果Gnutella網(wǎng)絡上的每臺計算機都只知道另外四臺計算機,那么這意味著,如果傳播至七級,您的請求可能會到達約8,000臺其他的Gnutella計算機。
這是一個快速向數(shù)千臺計算機發(fā)送查詢的極其簡單而又聰明的方法。
|
這種方法有一個很大的優(yōu)點——Gnutella可以在任何時候工作,只要您至少能聯(lián)系到另外一臺運行Gnutella軟件的計算機,您就能在網(wǎng)絡中進行查詢。任何一個法院命令都不能關閉這個系統(tǒng),因為這個過程中沒有可以控制一切的計算機。不過,Gnutella至少有三個缺點:
- 不能保證您想要的文件能在您可以聯(lián)系到的這8000臺計算機中獲得。
- 查詢文件時,如果您想要獲得完整的響應,需要一定的時間。有可能需要1分鐘或者更多的時間才能收到所有的七級深度的響應。
- 您的計算機是這一網(wǎng)絡的一部分,它一直在應答和傳送請求,也一直處在回送響應的過程中。您需要出讓一些帶寬用來處理來自所有其他用戶的請求。
顯然,這些缺點是微不足道的,因為人們已經(jīng)下載了數(shù)億個Gnutella客戶程序副本。
XoloX示例:搜索
XoloX是一個用于連接到Gnutella網(wǎng)絡的相當簡單的程序,該程序不像一些復雜的客戶程序那樣花哨,但卻可以很好地工作,文件很小,便于下載(僅約600KB),而且不包含間諜軟件或捆綁的彈出式廣告,安裝和使用也非常容易。其簡潔性有助于演示一個典型的Gnutella客戶程序的工作原理。
|
您可以使用XoloX完成三大任務:搜索文件、將文件到傳輸?shù)侥挠嬎銠C以及查看您下載的文件。XoloX窗口頂部的三個按鈕可以讓您在這三項活動之間進行切換。
上圖是一個較為典型的搜索截圖。您所要做的全部工作就是輸入您要查找的文件名(或關鍵字)。您也可以選擇文件類型:音頻、視頻等或“所有類型”。XoloX客戶程序發(fā)送出包含您的搜索字符串的信息,經(jīng)過大約30至60秒,搜索窗口中就會出現(xiàn)搜索結果,這些結果來自數(shù)千臺處理了您的查詢請求的計算機。
您可能會在搜索窗口中注意到一個分數(shù)。這個分數(shù)代表存儲有此相同文件的當前在線計算機的數(shù)量。選擇一個分數(shù)值高的文件,可以增加您獲得自己所需文件的機會。
XoloX示例:下載
如果您要下載一個文件,那么您只需在搜索窗口中雙擊它即可,這個舉動會將相應的文件名發(fā)送到傳輸窗口。當一個文件名位于傳輸窗口中時,您的XoloX就會連接對等計算機來下載這個文件。XoloX/Gnutella的一個優(yōu)點是:如果有多個計算機可提供您所需的文件,您的客戶程序便能同時連接其中的某些計算機,從而快速地下載文件。在下圖中,您會看到Filename1.avi正在利用這種能力以每秒69.2千字節(jié)的速度下載文件。XoloX估計只需要43分鐘的時間就可以完成這個超過100MB的文件的下載。
|
您選擇了一個文件下載時,經(jīng)常會沒有反應。這就是說,XoloX無法連接到存儲有該文件的計算機,或者這臺計算機正忙著為其他人服務。如果要解決這個問題,您可以選擇等待(一臺繁忙的計算機最終會空閑下來),或者選擇分數(shù)值高的文件(增加找到一臺空閑計算機的可能性),又或者從傳輸窗口中刪除沒有動靜的文件,并用搜索窗口中的一個相同文件來替換它。
在您的計算機中保存了這些文件之后,您就可以在XoloX目錄和XoloX的“File”(文件)窗口中找到它們,然后您可以隨心所欲地與別人共享這些已經(jīng)下載的文件。為此,您首先需要在“Preference”(首選項)對話框中指定要共享的目錄和文件類型。
|
您還可以控制當人們從您的計算機中下載文件時允許XoloX占用的輸出帶寬。-
|
這樣能防止人們占用您全部的上行流量帶寬。
Gnutella是否合法?
Gnutella本身是合法的。沒有法律反對共享無版權文件。當人們使用Gnutella分發(fā)具有版權的音樂或者電影時,它的使用就變成違法的了。就是這個問題使得Napster一度陷入困境。音像制品行業(yè)對Gnutella很惱火,但是目前還沒有找到簡易的方法來控制它。
攻擊Gnutella的體系架構是破壞文件共享行為的一種途徑。目前正在使用的有兩種方式:
- 發(fā)送大量偽造的搜索包使Gnutella網(wǎng)絡超負荷。
- 使Gnutella服務器充斥損壞的文件。
Gnutella的設計者們已經(jīng)攻克了過去存在的問題,因而也有可能出現(xiàn)新的軟件來避開這些威脅,從而保持文件的流動。
現(xiàn)在的爭論在于文件共享到底造成了多少經(jīng)濟損失。共享的文件是贓物嗎?還是像電臺播放一樣只是免費廣告的一種形式?
評論
查看更多