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