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