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