eMule協議的演進和客戶端
其實,網絡的發展根源來源于資源的共享。那么作為共享,我們就需要上傳和下載資源。如何進行下載呢?在這里我們主要講述一下eMule協議的主要原理。首先我們來了解一下這個協議的基本概念。
eMule協議規范概述
eMule網絡是由上百個eMule服務器和幾百萬個eMule客戶端組成。客戶端必須連接到一個服 務器來取得網絡服務,只要該客戶端在系統中,服務器連接保持打開狀態。這些服務器主要 執行集聚索引服務(好像在Napster),相互間不聯系。
每個eMule客戶端都預配置了一個服務器列表和當地文件系統的共享文件列表。客戶端用單 獨的TCP連接到一個eMule服務器登錄到網絡中,獲得想得到的文件信息和客戶端。eMule客戶端也用幾百個TCP連接到其他客戶端進行上傳和下載文件。
每個eMule協議客戶端對它的每 個共享文件都維護著一個上傳隊列。要下載的客戶端先加入到隊列的底部,然后逐漸前進直 到到達隊列的頂部并開始下載它的文件。一個客戶端可以從幾個不同的eMule客戶端中下載 同一個文件的不同的文件塊。
客戶端也可以上傳它還沒有完成的文件的文件塊。***,eMule協議擴展了eDonkey的能力,允許客戶端之間交換關于服務器、其他客戶端和文件的信息。注意 , 客戶端和服務器的交流都是基于TCP的。
服務器使用了一個內部數據庫,用來存儲關于客戶端和文件的信息。一個eMule服務器不存 儲任何文件,它為關于文件位置的存儲信息作集聚索引。服務器的另一個功能,開始變得被 抗議,是連接由于通過防火墻連接而無法接收到連接的兩個客戶端。這個連接功能增加了服 務器的負載。
相對于服務器和其他客戶端,eMule協議使用UDP來增強客戶端的能力。客戶端發 送和接收UDP信息的能力在日常使用中不是強制使用的,當有防火墻阻止它收發UDP信息時 也能無瑕疵的運行。
客戶端到服務器的連接
在開始啟動時,客戶端用TCP連接到一個eMule服務器。服務器提供一個客戶ID給客戶端, 在整個客戶端-服務器連接的生命周期里,它是有效的(注意,如果客戶端有一個高ID,它 會從所有的服務器中接收到相同的ID,直到它的IP地址改變)。在連接建立之后,客戶端發 送它的共享文件列表到服務器中。服務器把這個列表存儲到它的內部數據庫中,這個數據庫
通常包含了成百上千有效的文件和活動的客戶端。eMule客戶端也發送它的下載列表,包含 著它想下載的文件。第二章提供了eMule客戶端和服務器TCP信息交換的詳細描述。
建立連接之后,eMule服務器給客戶端發送用有它想下載的文件的其他客戶端列表(這些客 戶端稱作“ 源” )。從這點起,eMule協議客戶端開始與其他客戶端建立連接,如 1.2.2所述。
注意,在整個客戶端會話期間,客戶/服務TCP連接一直保持連接狀態。初次握手后主要是 用 戶活動激發事務:有時,客戶端發送文件搜索需求,由搜索結果回應,一個搜索事務一般在對源中指定文件查詢之后,用源(IP和端口)列表來回答這個查詢,查詢者可以從這列表中 下載文件。
客戶端和它沒有連接的服務器的交流是用UDP。UDP信息的目的是增強文件搜索,增強源搜 索,***保持連接狀態(確保客戶端服務器列表中的eMule協議服務器有效)。