瀏覽單個文章
csid
Regular Member
 

加入日期: Feb 2005
文章: 51
引用:
作者micall.lee
這種概念在電腦網路剛發展就有了

只是用於檔案交換則是這十幾年來由於網際網路普及,才讓大家誤以為這是甚麼新概念

如果你指的是那種交換檔案類型(尤其是用在侵權用途)的 Peer-to-Peer,最早可能是 1999 年的 Napster 開始紅的,當初是用來交換音樂檔案的

後來出現了 eDonkey(根據這個專案又發展了更紅的 emule)、 Kazaa之流,不過以上這些還是需要一個類似伺服器的結點,真正可以做到 p2p 那種則是後來的 BitTorrent,所謂 BT
以上都是我自己的記憶啦,有錯請指正


嗯,的確有蠻多地方不太正確(抱歉),首先沒有"真正做到P2P"這種說法,這些檔案交換軟體全部都是P2P,只是查詢技術上有些不同。

Napster,eDonkey和emule,BitTorrent一開始算是同一類,是"集中式目錄",這方式就是,
某檔案在哪個使用者身上,類似戶口名簿,都是統一由一個大型伺服器的資料庫紀錄,
當某人需要某個檔案,就先向伺服器取得清單,再向清單的使用者交換資料。
交換的過程中,仍然是直接的P2P行為(我上傳,我下載坦蕩蕩)。

這個方式有好處,首先,使用者搜尋檔案時,查詢回應結果會較快,
數量也較多,這取決於伺服器。也可以由伺服器做判定ban掉一些惡意使用者。

缺點就是抄掉目錄伺服器,整個P2P網路就掰掰(找不到人傳檔),
並且目錄伺服器紀錄了使用者擁有的檔案,使用者可能會連帶遭到查緝。

eDonkey2000和早期emule的ED2K Server,和BT的tracker就是目錄伺服器,
所以一直以來都是重點查緝的對象。



另外一種就是"分散式目錄"的技術,Gnutella就是用這個方式。
這種方式就沒有統一的大型伺服器管理檔案目錄,由P2P上的成員共同承擔,
當某人需要某個檔案,將需求發出去後,就用flooding的方式將這個訊息傳出去,
其他成員接到後,除了回應結果外,也把這個訊息接力出去,來取得盡可能多的結果。

這個方式的好處就是,難抓又難抄掉,少了一個節點,P2P網路幾乎不會有什麼影響(殺了一個我還有千千萬萬個我)。

缺點也很明顯,因為目錄查詢訊息要經過許多使用者,導致回應變得比較慢,
另外,目錄查詢的結果也比伺服器少得多,因為要控制flooding的幅度(有限領域flooding),如果不控制會造成P2P網路整個癱瘓。


最後一個方式,是Kazaa所使用的,就是把這兩個方式組合起來,各取其優點,
方法就是,把使用者劃分為群組,並在該群組選出某些使用者作為群組領導點(節點),
領導點用分散式,一般點就用集中式。
當某人需要某個檔案,將需求發出去後,先向領導點查詢,只由領導點來flooding。

這基本上就是個折衷,首先一樣難查難抄,同樣的flooding控制下,能抓到查詢的結果數量和速度要比純分散式好得多。
這方式表現好不好主要取決於群組領導者,怎麼選,擔任期限,要負擔多重等等,取決於演算法。

現今主流的P2P都是使用類似的概念,也就是群組化,例如emule的Kad,BT的DHT,Share這類。
舊 2013-11-15, 01:56 PM #15
回應時引用此文章
csid離線中