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