eMule協(xié)議的由來和BT的差異
在著名的下載協(xié)議中,我們比較看好的則是eMule協(xié)議和BT協(xié)議了。相信,絕大多數的用戶都不會對電驢和BT陌生。那么作為它們的協(xié)議支持,在兩方面有什么差異呢?我們接下來就將兩者比較一下,方便大家研究。
eMule協(xié)議的由來
eDonkey由Jed McCaleb在2000年創(chuàng)立。采用“多源文件傳輸協(xié)議”(MFTP,the Multisource File Transfer Protocol)。eDonkey索引服務器并不集中在一起的,而是各人私有的,遍布全世界,每一個人都可以運行電驢服務器,同時共享的文件索引為被稱為“ed2k-quicklink”的連接,文件前綴“ED2K://”。每個文件都用md5-hash的超級鏈接標示,這使得該文件獨一無二,并且在整個網絡上都可以追蹤得到。EDonkey可以通過檢索分段從多個用戶那里下載文件,最終將下載的文件片斷拼成整個文件。2002年05月3日Merkur不滿意eDonkey 2000客戶端并且堅信自己能做出更出色的P2P軟件,于是便著手開發(fā)。凝聚一批原本在其他領域有出色發(fā)揮的程序員,eMule工程就此誕生,目標是將eDonkey的優(yōu)點及精華保留下來,并加入新的功能以及使圖形界面變得更好?,F在eMule的最新版本是0.48a(2007年5月20號發(fā)布)。
eMule協(xié)議是eDonkey的升級版,它的獨到之處在于開源。其基本原理和運作方式,也是基于eDonkey,能夠直接登錄eDonkey的各類服務器。eMule同時也提供了很多eDonkey所沒有的功能,比如可以自動搜索網絡中的服務器、保留搜索結果、與連接用戶交換服務器地址和文件、優(yōu)先下載便于預覽的文件頭尾部分等等,這些都使得eMule使用起來更加便利,也讓它得到了電騾的美譽。
支持BT協(xié)議的P2P應用程序很多,如BitBuddy、FlashBT、BitComet和BitSpirit等,通常BT由如下幾部分組成:.torrent文件、種子提供站點、目錄服務器和內容發(fā)布者/下載者。.torrent文件是一個文本文件,包含了tracker信息和文件信息兩部分。tracker信息主要是BT下載中需要用到的tracker服務器的地址和針對tracker服務器的設置;文件信息是指將目標文件計算處理后再根據BT協(xié)議的B編碼規(guī)則網編碼后得到的信息。BT的主要原理是把提供下載的文件虛擬分成小相等的塊,塊小必須為2Kbyte的整數次方(由于是虛擬分塊,硬盤上并不產生各個塊文件),并把每個塊的索引信息和Hash驗證碼寫入.torrent文件中,所以.torrent文件就是被下載文件的“索引”。早期的BT協(xié)議只支持tracker服務器,這種目錄服務器是集中式目錄與分布式查詢的混合型;在BT協(xié)議的升級版本中,增加了對DHT(分布式Hash表)網絡的支持。
BT和eMule協(xié)議的宏觀比較和分析
eMule從技術層面上說是比BT好很多的,可是由于各種各樣的原因,似乎在互聯網上eMule并不是很流行。
1.傳統(tǒng)連接方式:
BT使用統(tǒng)一的torrent文件先作一個原下載文件的信息記錄,然后客戶下載后通過torrent的信息與服務器連接并下載,eMule僅有一個文件ID,客戶自行與服務器連接再下載;eMule的資源發(fā)布更便捷,同時資源更豐富,BT中不同種子之間的用戶是分隔的,即使種子中包含的文件是相同的,BT用戶之間也無法互通連接。
2.底層傳輸協(xié)議比較:
BT只使用TCP協(xié)議進行下載,協(xié)議簡單有效,但是功能比較單一,有的功能不完整,eMule協(xié)議使用TCP和UDP兩種協(xié)議進行通信,更加有效的利用了網絡資源,功能完整強,但這也同時使主機的負荷增加;
3.文件組織方式和數據驗證方式:
BT會在開始前對文件進行一次完全的HASH,就是將文件首尾相聯然后按固定塊取SHA值,這些值最終被放入torrent文件編碼中,客戶從網上一次下載完全,高效簡單,一般情況下BT軟件會在每小塊下載完成后就對其進行HASH測試,檢查其正確性。eMule在鏈接字符串中只存放了整體文件的HASH值,通過將這個HASH到服務器上取出文件的相關信息,實際的操作中,會將文件分解成9.28M小的塊并進行HASH用于對塊的完整性測試。新版的eMule協(xié)議會用一種叫AICH的技術,就是說將文件分成80K小的塊然后HASH再將HASH值進行二進迭代式(具體的看eMule協(xié)議)的HASH最終組成一個HASH二叉樹。好處:可以在鏈接中只加入根結節(jié)的HASH值而不用加入葉子節(jié)點,減小了鏈接字符串小,如果在最終文件下載完畢后,測試出的根節(jié)點HASH與得到的根節(jié)點的HASH值不同,則可以通過協(xié)議與網絡上的其它主機的樹進行比較快速得出錯誤的塊。
4.流量控制方式:
BT采用針鋒相對的方式處理上傳下載平衡的控制,這種方式會記錄短期內與客戶連接的所有節(jié)點的上傳下載流量,通過在固定時間內對下載流量的比較,得出允許上傳的客戶;為防止新客戶長時間得不到其它客戶的認同,BT會在一段時間停止他的上傳作為對他的警告;對于已經下載完畢的客戶,BT會簡單的使上傳流量最多的客戶得到更多的時間完成上傳;為了防止在文件的最后階段下載速度下降,BT會在最后時向所有連接的客戶發(fā)送請求迅速完成下載;下載過程中,BT會對文件塊在整個網絡中的存在復本的多少進行跟蹤,比較少的復本總是會得到優(yōu)先的下載權,以使整個網絡的文件冗余度提高。簡單的說,BT使用的是針對文件的流量控制方式。
Emule采用的是客戶積分的方式,就是對所有用戶的上傳和下載量進行一個運算,從而得出一個客戶的積分值,那些積分比較高的用戶總是可以得到優(yōu)先的下載權,甚至可以不進行排隊直接下載,結果就是:在一個比較長的時間內對一個用戶對其它用戶的整體貢獻有了一個估量。簡單的說,eMule協(xié)議采用的是針對用戶的流量控制方式。
5.功能與性能:
eMule具有查找功能,而這在BT只能通過網站來實現。