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的设计者们已经攻克了过去存在的问题,因而也有可能出现新的软件来避开这些威胁,从而保持文件的流动。
现在的争论在于文件共享到底造成了多少经济损失。共享的文件是赃物吗?还是像电台播放一样只是免费广告的一种形式?
评论
查看更多