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