Protocol)是一種分發(fā)文件的協(xié)議_第1頁
Protocol)是一種分發(fā)文件的協(xié)議_第2頁
Protocol)是一種分發(fā)文件的協(xié)議_第3頁
Protocol)是一種分發(fā)文件的協(xié)議_第4頁
Protocol)是一種分發(fā)文件的協(xié)議_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、VDUP協(xié)議VDUP(Virus Database Update Protocol)是一種分發(fā)文件的協(xié)議,它專門用于病毒庫的升級。它通過URL來識別內(nèi)容,并且可以無縫的和web進(jìn)行交互。它基于HTTP協(xié)議,它的優(yōu)勢是:如果有多個(gè)下載者并發(fā)的下載同一個(gè)文件,那么,每個(gè)下載者也同時(shí)為其它下載者上傳文件,這樣,文件源可以支持大量的用戶進(jìn)行下載,而只帶來適當(dāng)?shù)呢?fù)載的增長。 一個(gè)VDUP文件分布系統(tǒng)由下列實(shí)體組成:1、一個(gè)或多個(gè)病毒庫升級服務(wù)器2、一組增量更新的病毒庫文件“元信息”文件3、終端下載者要提供文件共享,那么一臺服務(wù)器需要執(zhí)行以下步驟:1、運(yùn)行一個(gè)下載管理器程序2、根據(jù)最新發(fā)布的病毒庫文件來生

2、成增量更新的“元信息”文件(.xml)。3、將“元信息”文件發(fā)布到web服務(wù)器上4、運(yùn)行一個(gè)數(shù)據(jù)庫程序5、運(yùn)行一個(gè)客戶端程序要開始下載文件,那么終端用戶執(zhí)行以下步驟:1、安裝客戶端程序2、客戶端程序訪問病毒庫升級服務(wù)器3、對比版本號,獲取服務(wù)器端增量更新的 “元信息”文件,寫入本地“元信息”文件4、從服務(wù)器獲得peers列表5、根據(jù)peers列表與其他peers互聯(lián),相互上傳和下載文件6、下載結(jié)束后,提供限時(shí)或限量上傳服務(wù)。各個(gè)部分之間的連通性如下:服務(wù)器負(fù)責(zé)提供一組增量更新的元信息文件。下載管理器程序從所有下載者處接收信息,實(shí)時(shí)寫入數(shù)據(jù)庫中,并查詢數(shù)據(jù)庫,返回給它們一個(gè)peers列表。這種交

3、互是通過HTTP或HTTPS協(xié)議來完成的。下載者周期性的向下載管理器登記,使得下載管理器能了解它們的進(jìn)度;下載者之間通過直接連接進(jìn)行數(shù)據(jù)的上傳和下載。這種連接使用的是VDUP對等協(xié)議,它基于TCP。服務(wù)器只負(fù)責(zé)上傳,從不下載,因?yàn)樗呀?jīng)擁有了完整的文件。服務(wù)器是必須的。元文件是采用XML格式,包括以下關(guān)鍵字:UpdateDate:該版本病毒庫文件的發(fā)布時(shí)間VerNum:病毒庫版本號PieceNum:文件分塊數(shù)PieceLength:塊長,對應(yīng)文件分割成的塊的字節(jié)數(shù)。出于傳輸需要,文件被分割成大小相等的塊,除了最后一塊可能會被文件尾截?cái)喽∫恍ㄊO碌拇笮〔蛔阋粋€(gè)塊長)。塊長是2的權(quán)值(VDUP

4、協(xié)議默認(rèn)值是8K,2的13次冪)。PieceHash:對應(yīng)一個(gè)字符串,此字符串長度是20的倍數(shù)。它可以再分成每20字節(jié)一段的多個(gè)字符串,分別對應(yīng)每個(gè)塊的SHA1校驗(yàn)碼(hash)。ComponentID:殺毒軟件名,可以用于區(qū)分不同的殺毒軟件產(chǎn)品。UpdateType:文件類型,可以用于區(qū)分升級的文件是病毒庫文件,還是程序升級文件等等。LocalPath:文件保存路徑Filename:文件名FileSize:文件大小,以字節(jié)為單位。FileHash:一個(gè)20字節(jié)長的字符串,對應(yīng)文件的SHA1校驗(yàn)碼。發(fā)送給下載管理器的GET請求,分為用戶驗(yàn)證和狀態(tài)信息反饋兩種。用戶驗(yàn)證GET請求包含以下關(guān)鍵字:

5、Ver_num:下載者本地病毒庫的版本號。用于和服務(wù)器進(jìn)行版本對比,確認(rèn)是否要更新病毒庫。Prod_sn:下載者的殺毒軟件序列號,用于驗(yàn)證用戶的升級權(quán)限。IP:下載者的ip地址(或DNS主機(jī)名)Port:下載者所監(jiān)聽的端口。下載者通常在在 10881 端口上監(jiān)聽,如果該端口被占用,那么會一直嘗試到10889,如果都被占用,那么就放棄監(jiān)聽。狀態(tài)信息反饋GET請求包含以下關(guān)鍵字:Peer_id:一個(gè)20字節(jié)長的字符串,是下載管理器在下載者通過正版驗(yàn)證后,自動分配給下載者的一個(gè)ID號。Prod_sn:下載者的殺毒軟件序列號,用于驗(yàn)證用戶的升級權(quán)限。Uploaded:目前總上傳量,編碼為十進(jìn)制ASCI

6、I碼。Downloaded:目前總下載量,編碼為十進(jìn)制ASCII碼。Left:還要下載的字節(jié)數(shù),編碼為十進(jìn)制ASCII碼。注意,這個(gè)值不能根據(jù)文件長度和已下載數(shù)據(jù)大小計(jì)算出來,因?yàn)楹芸赡苁菙帱c(diǎn)續(xù)傳,如果因?yàn)闄z查文件完整性失敗而必須重新下載的時(shí)候,這也提供了一個(gè)機(jī)會。Event:狀態(tài)信息關(guān)鍵字,值是started、completed、stopped、peers、delete之一。在下載剛開始的時(shí)候,該值被設(shè)置為started,在下載完成之后,設(shè)置為completed。如果下載者停止了下載,那么該值設(shè)置為stopped。如果下載者要再次申請Peers列表,那么該值設(shè)置為peers。如果下載者完成了

7、額定的上傳量或者上傳時(shí)間,想退出升級,那么該值設(shè)置為delete。下載管理器根據(jù)該關(guān)鍵字的值來更新Peers列表里各Peer的狀態(tài)或者再次下發(fā)Peers列表。如果下載管理器回應(yīng)中有關(guān)鍵值failure reason(失敗原因),則其內(nèi)容應(yīng)是易讀懂的字符串信息,用來解釋升級失敗的原因,比如“已經(jīng)是最新版本,無需升級”、“序列號已過期”、“序列號已被列入黑名單”等等。否則,下載管理器的回應(yīng)必須有三個(gè)關(guān)鍵值:Interval(間隔):對應(yīng)下載者定期發(fā)出請求的間隔秒數(shù),要求下載者定期向下載管理器發(fā)送狀態(tài)信息,默認(rèn)設(shè)置30秒。Peer_id:下載管理器分配給下載者的ID號,用于標(biāo)記下載者的身份。Peer

8、s:一個(gè)包含字典的列表,每個(gè)字典對應(yīng)一個(gè)peer,里面包含關(guān)鍵值Peer_id、IP和Port,分別對應(yīng)peer的用戶ID、IP地址或DNS主機(jī)名的字符串以及端口號。(下載者通過 HTTP 的GET 命令來向下載管理器發(fā)送升級請求,下載管理器響應(yīng)一個(gè)peers列表)VDUP對等協(xié)議基于TCP。對等的兩個(gè)連接是對稱的,消息在兩個(gè)方向上同樣的傳遞,數(shù)據(jù)也可以在任何一個(gè)方向上流動。一旦某個(gè)peer下載完了一個(gè)塊,并且也檢查了它的完整性,那么它就向它所有的peers宣布它擁有了這個(gè)塊。連接的兩個(gè)終端有2個(gè)狀態(tài)指標(biāo),被阻塞(choking)與否,被關(guān)注(interested)與否。阻塞(choking)

9、是通知對方,沒有數(shù)據(jù)可以發(fā)送,除非unchoking發(fā)生。一旦一端狀態(tài)變?yōu)殛P(guān)注(interested),而另一端變?yōu)榉亲枞╱nchoking),那么數(shù)據(jù)傳輸就開始了。當(dāng)數(shù)據(jù)傳輸時(shí),下載者馬上將好多份對塊的請求排成隊(duì)列,以獲得較好的TCP表現(xiàn)(這叫“流水作業(yè)”)。另一方面,不能被馬上寫入TCP緩沖區(qū)的請求要在內(nèi)存里排成隊(duì)列,而不是在一個(gè)應(yīng)用程序級的網(wǎng)絡(luò)緩沖區(qū)里,一旦阻塞出現(xiàn),丟棄所有這些請求。對等協(xié)議由一個(gè)握手開始,后面是循環(huán)的消息流,每個(gè)消息的前面,都有一個(gè)十進(jìn)制數(shù)字來表示消息的長度。握手的過程首先是先發(fā)送30,然后發(fā)送字符串“Virus Database Update Protocol”。

10、30就是“Virus Database Update Protocol”的長度。后續(xù)的所有的整數(shù),都采用big-endian 來編碼為4個(gè)字節(jié)所有送入?yún)f(xié)議的整型數(shù)據(jù)都編碼為4字節(jié)高端字節(jié)序(four bytes big-endian)。在協(xié)議名稱之后,是8個(gè)保留的字節(jié),這些字節(jié)當(dāng)前都設(shè)置為0。接下來是20個(gè)字節(jié)的 Peer_id。它包含在下載管理器回應(yīng)下載者的peers列表中。這就是握手過程。接下來就是以消息長度開始的消息流,這是可選的。長度為0 的消息,用于保持連接的活動狀態(tài),被忽略。通常每隔30秒發(fā)送一個(gè)這樣的消息。 其它類型的消息,都有一個(gè)字節(jié)長的消息類型,可能的值如下:0-阻塞1-通暢

11、2-被關(guān)注3-不被關(guān)注4-已有5-比特組6-請求7-塊8-取消“阻塞(choke)”、“通暢(unchoke)”、“被關(guān)注(interested)”和“不被關(guān)注(not interested)”類信息沒有荷載。“比特組(bitfield)”僅作為首信息發(fā)出。它的數(shù)據(jù)實(shí)際是一個(gè)位圖,如果下載者已經(jīng)發(fā)送了某個(gè)片斷,那么對應(yīng)的位置1,否則置0。下載者如果一個(gè)片斷也沒有,可以忽略這個(gè)消息。首字節(jié)高位到低位對應(yīng)索引序號0-7,以此類推,第二字節(jié)對應(yīng)索引序號8-15,等等。尾部的剩余的比特位設(shè)為0?!耙延校╤ave)”類型的消息,后面的數(shù)據(jù)是一個(gè)簡單的數(shù)字,它是下載者剛剛下載完并檢查過完整性的塊的索引序號

12、?!罢埱螅╮equest)”類型的消息,后面包含索引號、開始位置和長度,后兩者是偏移字節(jié)數(shù)。長度一般是2的權(quán)值,除非被文件尾截?cái)唷,F(xiàn)行一般是2的15次冪,并且關(guān)閉請求中長度大于2的17次冪的連接。 “取消(cancel)”類型的消息,它的數(shù)據(jù)和“請求(request)”類型的消息一樣。它通常在下載接近完成即“最后階段(endgame mode)”發(fā)出。在一次下載接近完成的時(shí)候,最后的幾個(gè)塊需要很長時(shí)間才能下載完。為了確保最后幾個(gè)塊盡快下載完,它向所有的peers發(fā)送下載請求。為避免低效,一旦某個(gè)塊下載完成,它就其它peers發(fā)送“取消(cancel)”消息。 “塊(piece)”類型的消息,包

13、含一個(gè)索引號、開始位置和實(shí)際的塊數(shù)據(jù)。它和“請求(request)”消息是相關(guān)的。當(dāng)傳輸速度很慢或“阻塞”“通暢”類信息快速連續(xù)發(fā)出或兩者同時(shí)發(fā)生,可能會下載到一個(gè)不需要的塊。片段選擇算法Seed維護(hù)兩個(gè)列表,一個(gè)是存放未被請求的片段標(biāo)記的列表List1,在片段還未分配之前,所有的片段標(biāo)記都存放到列表List1中;另一個(gè)是存放已被請求的片段標(biāo)記的列表List2。當(dāng)?shù)谝粋€(gè)Peer來請求第一個(gè)片段時(shí),Seed從List1中隨機(jī)選擇一個(gè)片段發(fā)送給該P(yáng)eer,然后把該片段標(biāo)記從List1中刪除,寫入List2中。再有Peer來請求第一個(gè)片段時(shí),Seed從List1中剩余的片段中又隨機(jī)選擇一個(gè)發(fā)送出去,

14、然后修改List1與List2的內(nèi)容。以此類推,若片段有n個(gè),那么當(dāng)有n個(gè)Peers來請求片段時(shí),Seed就已經(jīng)把所有片段都分發(fā)到了P2P網(wǎng)絡(luò)上。阻塞算法阻塞算法是一種臨時(shí)的拒絕上傳策略,一個(gè)好的阻塞算法應(yīng)該利用所有可用的資源,為所有Peers提供一致可靠的下載速率,并適當(dāng)懲罰那些只下載而不上傳的Peers。Peer對那些向它提供上傳服務(wù)的Peers給予同樣的回報(bào),目的是希望在任何時(shí)候都有若干個(gè)連接正在進(jìn)行著雙向傳輸。從技術(shù)層面上說,每個(gè)Peer一直與固定數(shù)量的其它 Peers 保持疏通(通常是4個(gè)),為了判斷哪些Peers應(yīng)該保持疏通,系統(tǒng)每隔10秒計(jì)算一次哪個(gè)Peer需要被阻塞,然后將這種

15、狀態(tài)保持到下一個(gè)10秒。10秒已經(jīng)足夠使得TCP來調(diào)整它的傳輸性能到最大。另外有可能存在空閑的連接比當(dāng)前正使用的連接更好的情況,為了發(fā)現(xiàn)這種情況,在任何時(shí)候,每個(gè)Peer都擁有一個(gè)稱為“optimistic unchoking”的連接,這個(gè)連接總是保持疏通狀態(tài),而不管它的下載速率是怎樣。系統(tǒng)每隔30秒重新計(jì)算一次哪個(gè)連接應(yīng)該是“optimistic unchoking”。30秒足以讓上載能力達(dá)到最大,下載能力也相應(yīng)的達(dá)到最大。某些情況下,一個(gè)Peer可能被它所有的Peers都阻塞了,這種情況下,它將會保持較低的下載速率直到通過“optimistic unchoking”找到更好的Peers。為了減輕這種問題,如果一段時(shí)間過后,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論