檔案分享

历史

Napster是第一个大型的，为许多人使用的文件分享工具，它本来是一个中央集中的工具，它只分享MP3文件，音乐工业在对它进行法律控告后成功地将它关闭了。Napster有一个中心的、在它上面报道的用户的MP3文件的目录，它还包括IRC似的聊天室和即时通讯功能。几乎所有新的大的文件分享服务在设计上都以它为榜样。
在Napster陷入困境前文件分享的社区就已经创建了一个新的选择：OpenNap。它是对Napster的协议进行反向工程后发表的一个开放源代码的服务器，是Napster的一个选择。这些网络在Napster倒闭后依然存在，许多新的使用这种协议的客户程序出现了。
此后，一个叫做Gnutella的分散的网络出现了。这个服务完全是开放源代码的，它允许用户寻找任何文件形式，用户不仅可以在网络上找到MP3文件。它是吸取了Napster这样的中央集中制的服务的经验后发展出来的，专门为了对付这样的服务的弱点。其目的是在个别连接被中断后依然保证整个网络的运行。
今天Napster和Gnutella依然在文件分享中占支配作用，它们定义了文件分享的两个极端。从2003年9月开始美国唱片工业协会控告了一系列文件分享服务和用户。今天，Gnutella依然是一个自由的和开放的协议，而Napster则是一个重建的商业性的网上音乐服务，它与其它商业性服务如iTunes是竞争对手。
大多数文件分享系统位于这两个极端之间。
今天在不同的操作系统上有许多不同的档案分享程序，它们各有不同的功能。一般商业性的文件分享程序也分传广告或带有间谍软件。

网络结构

文件分享有多个重要的问题，其中两个最重要，第一个问题是中央集中制还是分散制，第二个是用户的隐私权和匿名性。后者在版权拥有者对一些文件分享用户起诉后成为了一个重要问题。第三个问题是使用所谓的“间谍软件”收集和出卖用户数据。
早年的客户端程序只接受一种协议，因此一个客户端程序要么只接受Napster要么只接受Gnutella。当时有一种在客户端创建一个使用多种协议的软件的运动。这个运动最主要的目的是一个用户没有必要使用不同的程序来做同一件事。
有时有的人分享的文件非常受人欢迎，这样许多人会想从他那里获得这个文件，这有可能导致这个人的系统无法满足所有的需要。分散制是减轻这个问题的一个办法，尤其是假如有许多人在分享这个文件的话，那么这个文件可以从不同的地方来获取。
分散制也被用来解决对中央集中制的威胁，这个威胁即可以来自法律控告，也可能来自敌对的用户。一个分散的网络无法被整个地攻击，攻击者只能对其个别成员进行攻击，而整个网络的剩余部分依然工作。
为了防止有人只收藏别人提供的文件而不肯分享它们，后来有的系统引入了交换和评分的功能。在这样的系统中，一个用户只在他能够期望获得报酬的情况下才分享。KaZaA使用一种非常简单的评分系统。客户端程序计算用户的优先权并告诉提供文件的一段该用户的优先权是多少。但这个系统被发明后不久就有人改变了客户端程序使得客户端用户总是拥有最高的优先权。
另一个使用评分系统的客户端程序是eMule。eMule的客户端程序适用多重来源文件传输协议，它监视用户向另一个用户下载或上传多少文件。有时这个评分系统似乎不影响下载的速度。假如用户有一个空闲的上传隧道的话，那么它接受对方，向对方上传8MB数据，然后将对方放到它的排队的最后。假如对方的评分为x2的话，那么对方比起评分为x1的用户只要等半数的时间就又排到了，用户再上传8MB数据。假如双方互相传送数据的话，那么它们相互之间的评分就会不断上升，传递的速度也提高。
BitTorrent协议也有非常好的评分系统。假如一个用户只下载而不上传的话，那么他的下载速度就非常低。
今天的系统在上传和下载的功能上和在防止侵犯法律方面的功能上都比较有效。

版权问题

高速互联网终端普及后匿名的文件分享系统（如Gnutella和Napster）深受欢迎，此外比较小而质量依然相当高的声音文件格式如MP3也为文件分享的成功提供了一定的帮助。虽然文件分享本身是一种合法的技术，但有些人（实际上大多数使用文件分享的用户）用此下载受版权保护的文件。这导致了一些版权拥有者对文件分享的反攻。
就文件分享的法律后果问题有很大的争议。尤其是假如分享文件的人来自法律不同的国家的话，这个问题会很复杂。比如在有些国家一定程度的加密算法只有在获得国家特别允许后才能被个人使用或拥有，而在其它国家里这个限制可能不存在。假如有人从一个允许使用这样的算法的国家里获取了这样的算法的源代码呢？
2000年代初整个文件分享社区不断受冲击。美国唱片工业协会和一些唱片公司企图关闭越来越多的文件分享。但他们的努力不很成功，因为不断有新的系统出现取代被关闭的系统，而且许多这些新的系统没有中心服务器，因此使用法庭的方法无法关闭它们，其它的一些系统则逃避到法律无法攻击它们的国家。

常用的协议

文件分享有许多不同的协议，以下列举的是最常用和最重要的。

Ares

Ares是一个类似Gnutella的很普及的网络，其标准（和最普及的）Ares Galaxy客户端于2005年3月是美国P2P客户端中第六常用的。大多数使用Ares的是想要接触尽量多的网络而没有找到更好的协议的人。

BitTorrent

BitTorrent协议是唯一广泛被用在公司分配系统中的档案分享协议，它的下载速度一般比较高，原因是每个“洪流”为每个文件或文件组存储着其用户的信息：相对于其它协议其协议本身比较小，缺点是它没有寻找功能。此外它不很灵活，另外精确地说它不完全是一个P2P协议。
2004年初有人发现BitTorrent比任何其它互联网档案分享协议所携带的信息都多。许多人相信这至今未变。

Direct Connect

Direct Connect是一种常用于小的网络和大学内部网络中的协议，它尤其适用于这些小网络环境中。DC++是其最常见的客户端程序。

eDonkey、Overnet和Kad Network

eDonkey2000和eMule是eDonkey网络最普及的P2P客户端程序。它被用来传送大量数据，其传送数目仅少于BitTorrent。它比BitTorrent最大的优点是其客户端程序有一个寻找引擎。用它用户可以找到许多文件，比起BitTorrent来它的传送速度较慢。
Overnet的设计目的是取代eDonkey，许多eDonkey用户端程序同时使用Overnet，Overnet没有中心服务器，但其用户数量现在少于eDonkey。
Kad网络很类似Overnet，几乎只有eDonkey的用户使用它，但它的普及性也很低。

FastTrack

FastTrack的第一个客户端程序是KaZaA，它的协议与Gnutella2很相似。从2002年到2003年它是最大的用户网，但2005年它退到了第三名。
这个衰退的原因是因为这个网络无法对付众多用户同时使用，而且许多版权拥有者在网上放入了许多垃圾文件来阻止受版权保护的歌曲的交换。
KaZaA的用户端软件在用户电脑上设置一个间谍软件，法庭判决这个间谍软件违反了版权，因此不得再继续使用和分发。
iMesh也主要使用FastTrack为其协议，此外开放源代码的GiFT也可以用来连入FastTrack网络。

Gnutella和Gnutella2

当Napster陷入法律困境时，Nullsoft的贾斯廷·弗兰克尔发展了Gnutella，Gnutella是第一个真正的非中心的客户端。此后这个协议获得了很大的发展。Gnutella对文件分享有深刻的影响。
Gnutella2本来是对Gnutella的一个改进和扩展，它的发展人是Shareaza的创始人迈克尔·斯多克斯。它提供了一个扩展的数据包格式、基于UDP的搜索算法和许多其它扩展比如数据包压缩等等。今天现代的Gnutella客户端程序都支持这些功能。

OpenNap（前身为Napster）

OpenNap是对原来的Napster客户端程序改变后来的，Napster客户端程序是第一个普及率高的P2P文件分享程序。今天依然有人在发展它，WinMX等程序使用它。

WinNY

WinNY是WinNY客户端程序使用的协议的非正式名称，它在日本（2005年）很普及，但在亚洲外很少被使用。

WPNP

WPNP是WinMX最主要的协议。从2001年到2002年这个网络提供最好的搜索不明的英语材料的结果，但它最主要被用来搜索亚洲语言的材料。