揭秘UDP服務(wù)增強(qiáng)搜索的原理
UDP協(xié)議是網(wǎng)絡(luò)傳輸層的協(xié)議。當(dāng)然也就是起到傳輸作用的一種協(xié)議。那么很容易就聯(lián)想到,傳輸和下載是有著密不可分的聯(lián)系。在這里我們就來就來講解一下UDP服務(wù)和電騾下載之間的一些應(yīng)用。電騾客戶端和服務(wù)器使用不可靠的UDP服務(wù)來保活和搜索增強(qiáng)。由電騾客戶端產(chǎn)生的UDP包的數(shù)量(注意,包不是字節(jié))達(dá)到電騾客戶端發(fā)送包總數(shù)的5%;這依賴于在客戶端的服務(wù)器列表中服務(wù)器的數(shù)量、客戶端下載列表中源的數(shù)量以及用戶執(zhí)行的搜索的數(shù)量。UDP包通過定時(shí)器來觸發(fā),100ms,如果有一個(gè)單獨(dú)線程來負(fù)責(zé)發(fā)送UDP通訊,結(jié)果最大是每秒10個(gè)UDP包。
服務(wù)器?;詈蜖顟B(tài)信息
客戶端定期驗(yàn)證它的服務(wù)器列表的狀態(tài)。這個(gè)驗(yàn)證使用UDP服務(wù)器狀態(tài)請求和UDP服務(wù)器描述請求報(bào)文來完成?,F(xiàn)在介紹的簡單的?;钅J矫總€(gè)小時(shí)產(chǎn)生少于幾打個(gè)包。在任何情況下,最大高產(chǎn)生率是0.2個(gè)包每秒(或每5秒一個(gè)包)。當(dāng)檢查一個(gè)服務(wù)器的狀態(tài)是,客戶端首先給服務(wù)器發(fā)送一個(gè)狀態(tài)請求,然后是每兩個(gè)服務(wù)器描述請求一個(gè)狀態(tài)請求的方式發(fā)送;見圖1:
圖1 UDP的?;钛h(huán)
服務(wù)器的狀態(tài)請求包含一個(gè)隨機(jī)數(shù),這個(gè)隨機(jī)數(shù)在服務(wù)器的響應(yīng)中返回。如果服務(wù)器中返回的數(shù)不同于前面客戶端返回的,響應(yīng)中的信息會(huì)被拋棄。每次從客戶端發(fā)送到服務(wù)器的狀態(tài)請求包,客戶端都會(huì)啟動(dòng)一個(gè)嘗試計(jì)數(shù)器。如果嘗試次數(shù)達(dá)到設(shè)置的最大值是,就認(rèn)為該服務(wù)器是死的,將它從客戶端的服務(wù)器列表中刪除。服務(wù)器響應(yīng)包括幾個(gè)數(shù)據(jù)項(xiàng):服務(wù)器狀態(tài)響應(yīng)包括當(dāng)前的用戶數(shù)和服務(wù)器上的文件,服務(wù)器的軟和硬限制。服務(wù)器描述響應(yīng)包括服務(wù)器名稱和一個(gè)簡單的描述字符串。圖2描述了一個(gè)客戶端和活動(dòng)服務(wù)器之間的完整保活序列的消息流。
圖2 UDP?;钚蛄?/p>
文件搜索增強(qiáng)
電騾客戶端可能被配置而用來使用UDP服務(wù)來增強(qiáng)文件搜索功能。UDP搜索請求格式幾乎與TCP搜索請求相同。服務(wù)器僅僅在有搜索結(jié)果的時(shí)候響應(yīng)。有兩種UDP搜索報(bào)文的OPCODE,我不能他們之間不同。UDP搜索包發(fā)送給客戶端服務(wù)器列表中的服務(wù)器。
文件源搜索增強(qiáng)
當(dāng)客戶端所擁有的下載隊(duì)列中的某個(gè)文件的源的數(shù)量小于設(shè)置的極限(100)時(shí),客戶端定期向它的服務(wù)器隊(duì)列中的服務(wù)器發(fā)送UDP包來得到更多源。有個(gè)包可能每秒都發(fā)送,它時(shí)源搜索客戶端產(chǎn)生的UDP通訊中最重要部分。消息格式和TCP計(jì)數(shù)器部分非常相似。注意,同TCP源搜索比較,UDP源搜索與文件搜索是隔離的并且依賴于客戶端擁有的給定文件的源的數(shù)量。