BT 和電驢在理論上有什麼區別?兩種下載協議的對比有什麼不同?


Emule與bt協議小議

簡單的說,emule與bt 協議兩者各有千秋,下面就兩種協議的異同及性能作一比較.

1.傳統連接方式

bt使用統一的torrent文件先作一個原下載文件的信息記錄,然後客戶下載後通過torrent的信息與伺服器連接並下載,

emule僅有一個文件ID,客戶自行與伺服器連接再下載

2.底層傳輸協議比較

bt只使用TCP協議進行下載,協議簡單有效,但是功能比較單一,有的功能不完整

emule使用TCP和UDP兩種協議進行通信,更加有效的利用了網路資源,功能完整強大,但這也同時使主機的負荷加大,程序編寫難度提高

3.文件組織方式和數據驗證方式

bt會在開始前對文件進行一次完全的HASH,就是將文件首尾相聯然後按固定塊取SHA值,這些值最終被放入torrent文件編碼中,客戶從網上一次下載完全,高效簡單,一般情況下bt軟體會在每小塊下載完成後就對其進行HASH測試,檢查其正確性

emule 在連接字元串中只存放了整體文件的HASH值,通過將這個HASH到伺服器上取出文件的相關信息,在實際的操作中,會將文件分解成9.28M大小的塊並進行HASH用於對塊的完整性測試.新版的emul會用一種叫AICH的技術,就是說將文件分成120K大小的塊然後HASH再將HASH值進行二進迭代式(具體的看emule協議)的HASH最終組成一個HASH二叉樹這種方式的好處是可以在連接時只加入根結節的HASH值而不用加入葉子節點,減小了連接時的字元串大小,如果在最終文件下載完畢後,測試出的根節點HASH與得到的根節點的HASH值不同,則可以通過協議與網路上的其它主機的樹進行比較快速得出錯誤的塊.

4.流量控制方式

bt採用有名的針鋒相對的方式處理上傳下載平衡的控制,這種方式會記錄短期內與客戶連接的所有節點的上傳下載流量,通過在固定時間內對下載流量的比較,得出允許上傳的客戶;為防止新客戶長時間得不到其它客戶的認同,bt會在一斷時間停止他的上傳作為對他的警告;對於已經下載完畢的客戶,bt會簡單的使上傳流量最的客戶得到更多的時間完成上傳;為了防止在文件的最後階段下載速度下降,bt會在最後時向所有連接的客戶發送請求迅速完成下載;在整個下載過程中,bt會對文件塊在整個網路中的存在複本的多少進行跟蹤,那些存在的比較少的複本總是會得到優先的下載權,以使整個網路的文件冗餘度提高.簡單的說bt使用的是針對文件的流量控制方式.

Emule採用的是客戶積分的方式,就是對所有用戶的上傳和下載量進行一個運算,從而得出一個客戶的積分值,那些積分比較高的用戶總是可以得到優先的下載權,甚至可以不進行排隊直接下載,這樣就在一個比較長的時間內對用戶對其它用戶的整體貢獻有了一個評估.簡單的說emule採用的是針對用戶的流量控制方式.

5.kad與dht

kad和dht兩者都是基於kademlia技術的分散式HASH表查找技術,可惜的是由於協議上的區別,兩者不能互通.簡單介紹下kad,它首先給每個客戶分配一個唯一的ID值,然後對不同的ID值進行異或來得到兩個客戶之間的"距離",kad會維護一個桶,"距離"越近的用戶桶里的數量會越多,kad定其的對桶里的用戶進行清理,以保持其有效性.對於文件和用戶emule會有兩個這個東西,所以我們可以通過kad來查找文件和文件相關的用戶信息;同樣為了考慮冗餘的問題,kad會將其自身的信息複製一份給"距離"它最近的一定數量的用戶,這樣就算在它下線後,這些信息也不會丟失.bt的 dht不太了解,呵呵,不過估計差不多.

6.功能比較

emule具有查找功能,而這在bt 只能通過網站來實現

新版的emule在對防火牆的支持上採用的代理的方式,就是如果一個用戶處在內網,那麼它會找到一個在公網的用戶作為它的朋友.bt在這方面沒有明顯的變化,但是不同的bt客戶端實現方式有些不同的支持.

7.總體性能比較

個人感覺bt的方式更注重於簡單高效的快速傳輸,而emule更注重於整個網路狀態的變化及用戶體驗.單從下載效率上說bt佔優,而從網路狀態及完整強大的協議支持上說,emule作了更多的事情.從性能上考慮,在相同網路狀態下,bt下載單文件的能力比較強, emule比較適合於長時間的多文件下載,這源於兩者對網路均衡及p2p模式的不同理解.

轉自

http://hi.baidu.com/lifi007/blog/item/9c5e12cbe6105f1dbe09e68a.html


推薦閱讀:

VeryCD 沒有雙拼域名,甚至都沒有正式的中文名,為什麼也可以這麼火?
VeryCD 和 電驢到底是什麼關係?

TAG:eMule | BT下載BitTorrent |