網路指南

網路指南
從0.42.1版開始,eMule(電騾)就具有了兩個不同特徵的網路——傳統的基於伺服器的eD2K網路(eDonkey2000 Network – 電驢網路)和一個基於Kademlia的全新的無伺服器拓撲結構網路。
本質上兩個網路的作用一致。它們兩者都分別提供一種尋找其他用戶及你想下載的文件的方法。

基礎知識

文件識別
所有文件都有一個Hash——哈希值(指紋)。Hash是獨一無二地標識文件的字母和數字。一個文件的文件名可能千變萬化,但文件的Hash卻不會因此改變。因而不管其他用戶給這個文件起了什麼名字,每個用戶都可以找到這個文件的來源。
另外,文件會被分割成 9.28 兆大小的文件片段。每個片段都有Hash標識。舉例來說,一個600兆的文件會被分成65個片段,接著每個片段會被標上Hash。然後文件的Hash就根據這些文件片段的Hash被計算出來,並用在網路中作為文件標識。

其他客戶端的識別
正如文件Hash一樣,每一個網路中的用戶都有一個永久性的Hash。這種用戶識別依靠一個公鑰/私鑰交握機制的強力保障以防止濫用。

數據下載
應當要理解的是 eMule實際的下載與兩個網路的選擇無關。兩個網路的拓撲結構只與文件搜索以及為文件尋找來源客戶端有關。
在找到來源之後,你的客戶端就會連接上它。來源客戶端會將該下載任務排到等候隊列中。在過了一段等候時間後排到了隊列第一位時,就輪到你來接收它的數據了。

傳統的基於伺服器的eD2k

與網路的連接
eD2k網路的核心是eD2k伺服器。要連上該網路的客戶端須先連接到一個伺服器。
當你的客戶端連接到伺服器的時候,伺服器會檢查別的客戶端是否能不受限制地連接到你的客戶端。如果能,伺服器就會給你的客戶端指派一個所謂的High ID(高ID)。如果通信受到阻礙,伺服器就會給你指派一個Low ID(低ID)。
收到指派的ID後,eMule會將共享文件的列表發給伺服器。伺服器會將這列表裡的文件名與Hash記錄到它的資料庫。

文件搜索
連接到網路後,客戶端就可以按文件名關鍵字搜索文件。搜索可以是本地的或是全局的。對於本地搜索(只在你連接到的伺服器中搜索),其搜索速度快但結果較少。對於全局搜索(在網路上所有的伺服器中搜索),其所花時間較長但結果更多。搜索時,每個的伺服器都在它的本地資料庫中查找並返回任何包含關鍵字的文件名(與Hash)。

搜索文件來源
添加下載任務可以通過 eMule的搜索功能或是很多網站提供上的eD2k鏈接。
一旦任務添加到下載列表,eMule先向本地(連接到的)伺服器後向所有網路上其他的伺服器查尋該下載任務的來源。每個伺服器會在它的資料庫中尋找該文件的 Hash並返回資料庫中擁有該文件的客戶端。
文件來源是其他至少擁有相同Hash的文件的一個片段(9.28兆)的那些客戶端。

無伺服器的Kademlia網路

與網路的連接
連接到這個網路只需要任何一個已經連接到這個網路的eMule客戶端的IP地址和相應埠。這被稱作【引導程序】。
一旦一個客戶端連接到了網路,這個客戶端就會請求其他客戶端判斷自己是否能不受限制地被連接上。這個過程與伺服器判斷 HighID/LowID 很相似。若連接不受限制,你就被會指派一個ID(類似於HighID)並標為開放狀態。若連接收阻礙,你就被標為通過防火牆狀態。從v.44a 版本開始,Kademlia網路為通過防火牆狀態的用戶提供了 Buddy(搭檔)功能。Buddies(搭檔)是其他擁有開放狀態的Kademlia客戶端。他們為那些通過防火牆狀態的用戶擔任中繼站,並幫著處理那些通過防火牆狀態的用戶所無法處理的連接。

Kademlia上的文件搜索
在這個網路里不論你搜索什麼方法都-樣。搜索文件名、下載來源或是其他用戶的過程是一樣的。
網路中沒有伺服器記錄各個客戶端和它們共享的文件-本質上,每一個客戶端都又是一個小伺服器。
由於每個客戶端都由獨一無二的Hash,Kademlia的理念是依靠Hash賦予客戶端一些「責任」。每個Kademlia網路中的客戶端都成為提供某些關鍵詞和來源的伺服器。客戶端的Hash決定了它所提供的關鍵詞和來源。
因此,每種搜索的目標就是找到對當前搜索主題負有責任的客戶端。這個過程依賴於通過詢問其他客戶端獲得通往目標客戶端的最短路徑,以此來推出自己與目標客戶端的大致距離的複雜計算。

總結

兩個網路用完全不同的理念來做相同的事:搜索文件和尋找來源。Kademlia網路的主要目標是獨立於伺服器並提高可擴容性。伺服器只能處理有限數量的用戶,而且大型伺服器會拖累網路。
Kademlia有自組織性,並且它可以依照用戶數量和其連接質量來自我調整。因此,它更能防止大型網路中的傳輸損失。


網路指南》,由孫山翻譯自eMule官方網站英文版幫助與支持《Network Guide》並首發於eMuleFans.com。原文版權歸屬於eMule官方和原文作者。翻譯內容版權歸屬於翻譯者並遵守CC 3.0 BY-NC-SA協議。已編入eMule官網簡體中文版幫助與支持《網路指南》。英文原文最後由Monk更新於2004年9月12日。

4條評論隱藏

  1. #1 yfdyh000
    2010年12月21日 周二 17:23 | 回復

    從版本 v.42.1 開始,eMule 運用了兩個不同的網路
    從 0.42.1 版開始,eMule 就具有了兩個不同特徵的網路

    她們都分別允許你找到其他的用戶以及你要下載的文件。
    它們兩者都分別提供一種尋找其他用戶或你想下載的文件的方法。

    因而不管其他用戶給文件起了什麼名字
    因而不管其他用戶給這個文件起了什麼名字

    倆網路的拓補結構
    兩個網路的拓補結構

    此篇文章中多處「她」應為「它」
    此篇文章使用了多處英文逗號,應改為中文逗號

    PS:我希望參與eMule中文幫助的翻譯和校對,請問有什麼要求以及和誰聯繫?

  2. 2010年12月21日 周二 17:41 | 回復

    @yfdyh000 沒有什麼特別要求,翻譯的工作已經基本完成,現在主要是進行校對,大家有興趣都可以參與。 🙂

  3. #3 孫山
    2011年1月7日 周五 00:25 | 回復

    @yfdyh000 改正了(吧)。謝謝!

  4. #4 Orly
    2014年5月6日 周二 14:33 | 回復

    我搜索時選擇全局(伺服器)或者伺服器,都會顯示未連接伺服器,但用自動能搜到並下載,是什麼原因呢?

發表評論

您的Email將不會顯示出來。頭像請至Gravatar.com註冊上傳。*號標註項為必填。

*
*
*
標籤用法
字數:0