1. 程式人生 > >eMule 協議分析翻譯(四)

eMule 協議分析翻譯(四)

 

4.3.5 下載過程

A到達B下載佇列的頂端,B就向A發起連線,A可以選擇連線到B下載檔案,也可以選擇通過傳送取消訊息,取消連線(在A已經連線到其他客戶端下載檔案的時候)。

4.4 資料傳輸

4.4.1資料包

傳輸和接受資料是emule網路的主要活動,emule傳輸的檔案片大小可以在5000——15000byets之間(由是否壓縮決定)。為了避免碎片,檔案被分為許多小片,每個小片被封裝在一個單獨的TCP資料包中。Emule3.0中,最大的檔案分片是13000bytes(僅僅對TCPpayload而言)。也就是說控制資訊被封裝在單獨的TCP分片中,而資料資訊被分解,用若干個TCP 資料包進行傳輸,第一個資料包包含檔案部分的訊息頭,而後面的資料包只包含檔案的資料部分。

4.4.2 資料傳輸序列

檔案傳輸佇列在請求應答之後開始,由下載者A傳送上傳請求,隨後上傳方給出應答,然後由A發出請求檔案部分的請求,每個檔案請求將其請求3個檔案部分,但是應答方對於每個檔案部分否給出應答。

當傳輸雙方都支援擴充套件協議的時候,資料將會被壓縮。擴充套件協議還支援可擴充套件的檔案資訊。

4.4.3選擇檔案塊下載

Emule在進行下載檔案塊時將選擇下載的順序以達到最優覆蓋網吞吐量的目的,每個檔案被分成大小位9.28MB 的部分,而每個部分又被分成180KB的小塊。下載的順序取決於客戶端請求檔案的檔案部分請求,在某一特定時刻下載者在同一上傳者只能獲取一個檔案部分,還有其他策略如下:

(1)選則下載頻率較高的檔案塊進行下載,因為新假如的客戶端迫切要求得到完整的部分以便作為源,供其他客戶端下載。

(2)優先下載預覽需要的檔案部分(首分片+末分片)。

(3)在下載進行中會向其他的源請求另一個檔案部分。

(4)在下載完成後,選擇最短的檔案部分作為下次請求的檔案部分,因為檔案越短,完成的越快。

頻率評判標準包含三個區域:非常稀少,稀少,一般。在每個區域,頻率都又特定的權重,用來計算每個部分的ratingRating低的檔案部分被優先下載。

在選擇演算法中,首先選擇請求較少或者基本上沒有請求的部分進行下載,然後選擇部分完成的部分進行下載。最後是普通的部分。

4.5 檢視共享檔案和共享資料夾

Emule 提供了兩種訊息供客戶端檢視共享資料夾和共享檔案,在初始握手之後雙方就傳送檢視檔案共享訊息,並由應答方傳送檢視共享檔案應答訊息進行應答,如果應答方想要隱藏共享檔案,那麼應答的共享檔案數就是0,而不是傳送拒絕資訊。

第二種資訊包含請求共享資料夾的資訊,迴應方迴應共享資料夾列表。每個共享資料夾都會返回一個對應的資訊。與請求共享檔案不同,如果客戶端隱藏共享資料夾,將返回拒絕資訊。

4.6 交換檔案部分雜湊集

為了對檔案部分進行雜湊效驗,客戶機之間需要請求檔案的雜湊資訊,迴應方迴應含有檔案各個部分雜湊值的雜湊值列表。

4.7 獲得檔案的預覽

emule支援客戶端對檔案的預覽,預覽取決於檔案的應用型別,在emule3.0中,僅僅支援對圖片檔案的預覽。在請求檔案預覽的時候需要用到兩種訊息型別,檔案預覽請求和檔案預覽應答。

5.0 客戶機之間的UDP通訊

Emule客戶機之間週期性的傳送UDP 資料包進行。在emule3.0中,UDP資料包僅僅用來查詢客戶端在其他節點下載佇列中的位置,採用簡單的詢問——應答方式,主要有三種類型的訊息:

(1)佇列查詢:客戶機在下載佇列中的位置

(2)佇列已滿:

(3)查詢檔案不可達:上傳者沒有下載方請求的檔案。

這些資料包大概每20分鐘傳送一次。