檔案分享

歷史

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年這個網路提供最好的搜尋不明的英語材料的結果，但它最主要被用來搜尋亞洲語言的材料。