1. 程式人生 > >轉載: bt協議與emule協議幾點區別

轉載: bt協議與emule協議幾點區別

最近把emule協議通讀了一下,和以前研究的bt協議做了個對比,當然差別還是相當大的,此處僅簡單列出幾點:

bt協議不包括檔案搜尋,該過程要由使用者自己進行,在找到感興趣的檔案後要首先獲取一個torrent檔案,根據該torrent檔案找到伺服器,進而找到其他peer;emule協議中的檔案搜尋也是由協議規定的,在結點啟動的時候向伺服器發起檔案查詢請求,伺服器返回查詢結果,進而得到相關的peer列表

emule協議在判斷peer好壞時採用的是credit方式,即對方給自己傳輸資料的行為會被自己記錄下來,上傳越多credit記錄越好;bt在判斷的時候採用的是tit-for-tat方式,即由結點在資料傳輸過程中實時選擇優先上傳的結點,如果peer給我資料,則我也給peer。兩種方式本質差不多,不過emule的實時性沒有bt強,另外emule是針對結點的,而bt是針對當前下載檔案的。

emule協議的結點ID是伺服器分配的,有high和low之分,high型別的表示結點是公網IP;bt協議的ID是結點自己產生的,不反映結點的網路型別。

emule協議在結點和伺服器以及結點之間進行連線後都需要一個認證過程,在和伺服器連線後伺服器會分配一個Client ID給結點,結點之間的認證通過公鑰加密;bt協議沒有此過程。

emule協議制定了結點之間以及結點和server之間的UDP通訊協議,支援UDP通訊的情況下可以作為輔助,而bt協議僅僅將UDP通訊作為擴充套件協議,而且只在結點和tracker通訊部分才有

emule協議設計了幫助內網結點穿越NAT和防火牆的機制,雖然比較原始但還是有效的,bt協議當中則沒有設計這樣的機制,需要結點自行解決。

通過上面的分析可以看到,emule協議考慮的問題比較全面,其協議的文件也比較長,bt協議相比是一個輕量級的協議,簡單實用為設計目標,比較專一,涉及的方面不那麼多。也正因如此,bt客戶端軟體有很多,一個人就能寫出來,但是emule實現起來就麻煩多了。