Gnutella 的工作原理

Old model PC
Gnutella 是一种流行的文件共享系统。clu / Getty Images

在其鼎盛时期,Napster 可能是迄今为止最受欢迎的网站。在不到一年的时间里,它的月访问量从零飙升至 6000 万。随后,由于版权侵权,它被法院命令关闭,直到 2003 年才作为合法音乐下载网站重新上线。

最初的 Napster 之所以如此迅速地流行起来,是因为它提供了一种独特的产品——你可以毫不费力地从一个庞大的数据库中获取免费音乐。你不再需要去音乐商店购买音乐。你不再需要付费。你不再需要担心排队购买 CD 并寻找磁带来录制。而且几乎宇宙中的每一首歌都可以获得。

广告

鉴于它分发的是非法产品,最初的 Napster 的主要弱点在于其架构——即创建者设计系统的方式。当法院裁定 Napster 促进版权侵权时,法院命令关闭该网站就变得非常容易。

Napster 助长版权侵权的事实对其用户来说并不重要。他们中的大多数人已转向一种新的文件共享架构,称为 Gnutella。在本文中,您将了解 Gnutella 与旧版 Napster 之间的差异,这些差异使得 Gnutella 能够在不利的法律环境下生存至今。

广告

Napster 的架构

在通常实现的网络中,存在Web 服务器,它们存储信息并处理对该信息的请求(有关详细信息,请参阅Web 服务器的工作原理)。Web 浏览器允许个人用户连接到服务器并查看信息。流量大的大型网站可能需要购买和支持数百台机器来处理来自用户的所有请求。

Napster 开创了点对点文件共享的概念。旧版 Napster(Napster 于 2003 年重新推出,成为一个合法的付费音乐网站)允许个人将他们想要共享的文件(通常是 MP3 音乐文件)存储在他们的硬盘上,并直接与其他人共享。用户运行一个 Napster 软件,使这种共享成为可能。每台用户机器都成为了一个迷你服务器。

广告

如果您登录旧版 Napster 下载歌曲,就会发生以下情况:

  1. 您在您的机器上启动 Napster 软件。您的机器变成了一个小型服务器,能够向其他 Napster 用户提供文件。
  2. 您的机器连接到 Napster 的中央服务器。它告诉中央服务器您机器上可用的文件。因此,Napster 中央服务器拥有当时连接到 Napster 的每块硬盘上所有共享歌曲的完整列表。
  3. 您输入了歌曲查询。假设您正在寻找 The Police 的歌曲“Roxanne”。Napster 的中央服务器列出了所有存储该歌曲的机器。
  4. 您从列表中选择了一个版本的歌曲。
  5. 您的机器连接到拥有该歌曲的用户机器,并直接从该机器下载歌曲。

Napster 的创建者采用这种方法有几个原因:

  • Napster 最终拥有了数十亿首歌曲。任何中央服务器都不可能拥有足够的磁盘空间来存储所有歌曲,或者足够的带宽来处理所有请求。
  • Napster 试图利用版权法中的一个漏洞,该漏洞允许朋友之间共享音乐。Napster 背后的法律概念是:“所有这些人都在与他们的朋友分享他们硬盘上的歌曲。”法院不同意这种逻辑,但这给了 Napster 足够的时间来证明这一概念并发展壮大。

这种方法运作良好,并极大地利用了互联网的架构。通过将文件下载的负载分散到数百万台机器上,Napster 完成了以其他方式无法实现的任务。

歌曲标题的中央数据库是 Napster 的致命弱点。当法院命令 Napster 停止音乐服务时,中央数据库的缺失彻底摧毁了整个原始 Napster 网络。

随着最初的 Napster 消失,当时全球约有 1 亿人渴望分享更多文件。另一个系统来填补这一空白只是时间问题。

广告

Gnutella 的架构

目前,最流行的文件共享系统是另一个名为 Gnutella(或 Gnutella 网络)的点对点网络。Gnutella 和旧版 Napster 之间有两个主要相似之处:

  • 用户将他们想要共享的文件放在硬盘上,并以点对点的方式提供给其他人下载。
  • 用户运行一个 Gnutella 软件以连接到 Gnutella 网络。

Gnutella 和旧版 Napster 之间也有两个主要区别:

广告

  • Gnutella 网络上没有中央数据库来了解所有可用文件。相反,网络上的所有机器都使用分布式查询方法相互告知可用文件。
  • 许多不同的客户端应用程序可用于访问 Gnutella 网络。

由于这两个特点,简单的法院命令很难关闭 Gnutella。法院将不得不设法在互联网的服务提供商(ISP)和骨干网层面阻止所有 Gnutella 网络流量,以阻止人们共享文件。

广告

Gnutella 客户端

最初的 Napster 只有一份“客户端软件”——用户在其机器上运行以访问 Napster 服务器的软件。Gnutella 有数十种客户端可用。一些流行的 Gnutella 客户端包括:

Gnutella 客户端如何找到歌曲

鉴于没有中央服务器来存储所有可用文件的名称和位置,您机器上的 Gnutella 软件如何在他人的机器上找到歌曲?这个过程大致如下:

广告

  • 您输入要查找的歌曲或文件的名称。
  • 您的机器知道网络上至少还有一台 Gnutella 机器。它知道这一点是因为您通过输入 IP 地址告诉了它机器的位置,或者因为软件预先编程了 Gnutella 主机的 IP 地址。您的机器将您输入的歌曲名称发送给它所知道的 Gnutella 机器。
  • 这些机器搜索以查看请求的文件是否在本地硬盘上。如果是,它们将文件名(和机器 IP 地址)发送回请求者。
  • 同时,所有这些机器将相同的请求发送给它们所连接的机器,然后这个过程重复进行。
  • 请求有一个 TTL(生存时间)限制。一个请求可能会深入传播六到七层,然后才停止。如果 Gnutella 网络上的每台机器只知道其他四台机器,那么如果您的请求深入传播七层,它可能会到达 Gnutella 网络上大约 8,000 台其他机器。

这是一种极其简单且巧妙的方法,可以非常快速地将查询分发到数千台机器。

这种方法有一个很大的优势——Gnutella 始终工作。只要您能连接到至少一台运行 Gnutella 软件的其他机器,您就可以查询网络。没有任何法院命令能关闭这个系统,因为没有一台机器控制所有内容。然而,Gnutella 至少有三个缺点:

  • 无法保证您想要的文件就在您能连接到的 8,000 台机器中的任何一台上。
  • 文件查询可能需要一些时间才能获得完整响应。可能需要一分钟或更长时间才能收到所有深入七层的响应。
  • 您的机器是这个网络的一部分。它正在响应请求并将其转发,同时也在路由响应。您会牺牲一部分带宽来处理来自所有其他用户的请求。

显然,这些缺点是次要的,因为人们已经下载了数亿份 Gnutella 客户端。

广告

XoloX 示例:搜索

XoloX 是一个典型的、相当简单的连接 Gnutella 网络的程序。它不具备更复杂客户端的一些高级功能,但它确实能用,下载文件很小(大约只有 600 千字节),它没有“间谍软件”或捆绑的弹窗广告,并且非常容易安装和使用。它的简单性使其成为演示典型 Gnutella 客户端如何工作的有用工具。

使用 XoloX,您可以做三件大事:搜索文件、将文件传输到您的机器以及查看您已下载的文件。XoloX 窗口顶部有三个按钮,可让您在这三项活动之间切换。

广告

上图显示了搜索期间的典型屏幕截图。您所要做的就是输入您要查找的文件的名称(或关键词)。您还可以选择文件类型:音频、视频等,或“所有类型”。您的 XoloX 客户端会发送一条包含您搜索字符串的消息,在 30 到 60 秒的时间内,搜索窗口将显示来自数千台正在处理您查询的其他机器的结果。

您会在搜索窗口中注意到一个分数。该分数表示当前在线且拥有相同文件的机器数量。通过选择分数较高的文件,您可以增加实际获取所需文件的几率。

广告

XoloX 示例:下载

要下载文件,只需在搜索窗口中双击它。这会将文件名发送到“传输”窗口。一旦文件名进入传输窗口,您的 XoloX 副本将连接到对等机器以下载文件。XoloX/Gnutella 的一个优点是,如果多台机器都有可用文件,您的客户端可以同时连接到其中几台机器以非常快速地下载文件。在下图中,您可以看到 Filename1.avi 特别利用了此功能,以每秒 69.2 千字节的速度下载文件。XoloX 估计下载超过 100 兆字节需要 43 分钟。

当您选择一个文件进行下载时,很常见的情况是没有任何反应。也就是说,XoloX 无法连接到拥有该文件的机器,或者持有该文件的机器正在忙于帮助其他人。您可以通过等待(忙碌的机器最终会变得空闲),或选择分数较高的文件(增加找到空闲机器的可能性),或从传输窗口中删除无进展的文件并用搜索窗口中的相同文件替换来解决此问题。

广告

一旦文件在您的机器上,您可以在 XoloX 目录和 XoloX 的“文件”窗口中找到它们。如果您愿意,您可以将所有已下载的文件与其他人共享。您可以通过首先在“首选项”对话框中指定要共享的目录和文件类型来执行此操作:

您还可以控制当他人从您这里下载文件时,您允许 XoloX 消耗多少出站带宽:

这可以防止他人耗尽您的所有上行带宽。

广告

Gnutella 合法吗?

Gnutella 本身是合法的。分享公共领域文件并不违法。当人们使用 Gnutella 分发受版权保护的音乐和电影时,其使用才变得非法。这就是让 Napster 陷入困境的问题。音乐行业正式对 Gnutella 表示不满,但目前没有简单的方法来控制它。

攻击 Gnutella 架构是扰乱文件共享活动的一种方式。目前有两种方法正在被使用:

广告

  1. 用大量伪造的搜索数据包淹没 Gnutella 网络。
  2. 用损坏的文件填充 Gnutella 服务器。

Gnutella 的许多开发人员过去曾适应过问题,因此新的软件很可能会绕过这些威胁并保持文件流。

目前争论的焦点是文件共享实际造成了多少经济损失。共享文件是盗窃,还是像电台广播时间一样,是一种免费的广告和曝光形式?

有关文件共享和相关主题的更多信息,包括对共享受版权保护音乐合法性的一些不同观点,请查看下一页的链接。

广告

常见问题

什么是 Gnutella 协议?
Gnutella 协议是一种文件共享协议,允许用户在点对点 (P2P) 网络上搜索和共享文件。

广告

加载中...