亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種針對(duì)p2p網(wǎng)絡(luò)監(jiān)控基于一維鏈表的節(jié)點(diǎn)維護(hù)方法

文檔序號(hào):7812370閱讀:145來源:國(guó)知局
一種針對(duì)p2p網(wǎng)絡(luò)監(jiān)控基于一維鏈表的節(jié)點(diǎn)維護(hù)方法
【專利摘要】本發(fā)明公開了一種針對(duì)P2P網(wǎng)絡(luò)監(jiān)控基于一維鏈表的節(jié)點(diǎn)維護(hù)方法,其根據(jù)網(wǎng)絡(luò)監(jiān)控應(yīng)用的特殊需求,通過重復(fù)的查詢被監(jiān)控的資源以達(dá)到監(jiān)控網(wǎng)絡(luò)的目的,放棄傳統(tǒng)的K桶而使用一維鏈表存儲(chǔ)節(jié)點(diǎn)信息,通過P2P網(wǎng)絡(luò)的查詢功能對(duì)網(wǎng)絡(luò)進(jìn)行監(jiān)控,根據(jù)查詢的反饋信息,設(shè)置節(jié)點(diǎn)的優(yōu)先級(jí),根據(jù)節(jié)點(diǎn)優(yōu)先級(jí)對(duì)一維鏈表進(jìn)行動(dòng)態(tài)調(diào)整,使得一維鏈表以優(yōu)先級(jí)高低排列,以達(dá)到在下次查詢時(shí),能優(yōu)先查詢有響應(yīng)信息的節(jié)點(diǎn)的目的,從而避免每次查詢重復(fù)的從零開始,減少查詢的迭代次數(shù),大大減少了查詢時(shí)間,提高了監(jiān)控網(wǎng)絡(luò)的效率。
【專利說明】一種針對(duì)P2P網(wǎng)絡(luò)監(jiān)控基于一維鏈表的節(jié)點(diǎn)維護(hù)方法

【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于P2P網(wǎng)絡(luò)【技術(shù)領(lǐng)域】,具體涉及一種針對(duì)P2P網(wǎng)絡(luò)監(jiān)控基于一維鏈表的節(jié)點(diǎn)維護(hù)方法。

【背景技術(shù)】
[0002]隨著因特網(wǎng)的普及和數(shù)字化技術(shù)的快速發(fā)展,網(wǎng)上交易和傳播的電子書、音樂、電影等數(shù)字內(nèi)容越來越多。網(wǎng)絡(luò)出版和傳統(tǒng)紙制作品的數(shù)字化成為了發(fā)展的趨勢(shì)。然而,由于數(shù)字化信息很容易被復(fù)制、修改和非法傳播,網(wǎng)上傳播的數(shù)字內(nèi)容存在大量的盜版和侵權(quán)問題,最終用戶有意或無意地對(duì)數(shù)字內(nèi)容進(jìn)行任意的拷貝和粘貼,尤其是對(duì)熱門資源無所顧忌的二次傳播(如磁盤拷貝、網(wǎng)絡(luò)共享等),以驚人的速度消耗了潛在的用戶,給相關(guān)利益人造成了巨大的經(jīng)濟(jì)損失,阻礙他們使用互聯(lián)網(wǎng)擴(kuò)展?jié)撛谟脩舻目赡?,更為?yán)重的是極大的打擊了原創(chuàng)者的創(chuàng)作積極性。
[0003]與此同時(shí),P2P(Peer to Peer)網(wǎng)絡(luò)技術(shù)的出現(xiàn)為網(wǎng)絡(luò)用戶提供了獲取各類數(shù)字內(nèi)容更快的途徑,同時(shí)也極大的方便了用戶與他人共享自己的數(shù)字內(nèi)容。因此實(shí)現(xiàn)P2P網(wǎng)絡(luò)的版權(quán)資源的監(jiān)控顯得尤為重要。
[0004]在當(dāng)前的P2P網(wǎng)絡(luò)中,以第三代DHT(Distributed Hash Table,分布式哈希表,是一種分布式存儲(chǔ)方法)技術(shù)為主流,其已成功被應(yīng)用于文件共享、音視頻直播/點(diǎn)播,即時(shí)通訊、分布式存儲(chǔ)、網(wǎng)格計(jì)算、云存儲(chǔ)等眾多領(lǐng)域中。采用DHT技術(shù)的網(wǎng)絡(luò)協(xié)議主要有Chord、CAN、Pastry、KAD等。其中以KAD協(xié)議在文件共享領(lǐng)域中的應(yīng)用最為成功,目前并發(fā)用戶已超過數(shù)百萬,eMule/aMule、BitComet、uTorrent、Azureus> MainLine 等流行的文件共享客戶端均使用了 KAD協(xié)議實(shí)現(xiàn)資源的發(fā)布、查找和定位功能。
[0005]目前,P2P網(wǎng)絡(luò)的檢測(cè)技術(shù)主要有主動(dòng)監(jiān)測(cè)與被動(dòng)監(jiān)測(cè)兩種。P2P網(wǎng)絡(luò)主動(dòng)測(cè)量技術(shù)可以包括:(1)仿造客戶端構(gòu)造網(wǎng)絡(luò)爬蟲,使其成為P2P網(wǎng)絡(luò)的一員,再去爬取網(wǎng)絡(luò)中的其他節(jié)點(diǎn)的信息如IP、PORT以及網(wǎng)絡(luò)的拓?fù)涮匦?;⑵比較簡(jiǎn)單的方法是對(duì)P2P網(wǎng)絡(luò)采集的節(jié)點(diǎn)發(fā)送ping、hello、find_value等常用網(wǎng)絡(luò)命令,統(tǒng)計(jì)所有回復(fù)信息,記錄下來進(jìn)行離線分析;(3)借助第三方軟件幫助其在P2P網(wǎng)絡(luò)中探測(cè),得出其協(xié)議的特性,獲取節(jié)點(diǎn)的信息以及共享文件情況。被動(dòng)測(cè)量不同于主動(dòng)測(cè)量,測(cè)量節(jié)點(diǎn)需要一定的數(shù)量,且這些測(cè)量節(jié)點(diǎn)要部署在骨干網(wǎng)的路由器上或者是互聯(lián)網(wǎng)服務(wù)提供商網(wǎng)絡(luò)的一些關(guān)鍵出口,這樣獲取的流量信息才最為真實(shí),采用的是軟,硬件結(jié)合的方式來監(jiān)聽P2P網(wǎng)絡(luò)的流量信息。主要用來對(duì)網(wǎng)絡(luò)中的流量,被動(dòng)連接的時(shí)間長(zhǎng)短,被動(dòng)連接的節(jié)點(diǎn)數(shù)量等進(jìn)行測(cè)量。
[0006]當(dāng)前大部分采用的是主動(dòng)測(cè)量中的仿造客戶端構(gòu)造網(wǎng)絡(luò)爬蟲。在這些客戶端中,大多都使用k_bucket(K桶)的路由表存儲(chǔ)方式。采用k_bucket的路由存儲(chǔ)方式,對(duì)于每一次獨(dú)立的操作(發(fā)布、搜索),能更快的實(shí)現(xiàn)路由節(jié)點(diǎn)的查找、核對(duì)。其主要結(jié)構(gòu)與原理為:首先,每個(gè)客戶端都有一個(gè)節(jié)點(diǎn)ID(不同的網(wǎng)絡(luò)有不同的長(zhǎng)度,電驢網(wǎng)絡(luò)為128bit,BT網(wǎng)絡(luò)為160bit),通過XOR(異或運(yùn)算)定義節(jié)點(diǎn)間的遠(yuǎn)近;其次根據(jù)節(jié)點(diǎn)與本地節(jié)點(diǎn)ID的距離,存儲(chǔ)在路由表內(nèi)。路由表是一個(gè)相對(duì)直線,并且高度極度不平衡的樹(如圖1所示),將前綴與本地節(jié)點(diǎn)ID相同的節(jié)點(diǎn)存放在I的桶中,每個(gè)桶中存放K (5-8)個(gè)節(jié)點(diǎn),這樣查找時(shí),能通過距離,快速的從路由表中查找出距離近的節(jié)點(diǎn)。
[0007]K-bucket雖然在每次獨(dú)立的操作中表現(xiàn)出優(yōu)秀的效率,然而在網(wǎng)絡(luò)信息監(jiān)控領(lǐng)域,需要對(duì)關(guān)鍵信息進(jìn)行重復(fù)的操作以達(dá)到長(zhǎng)期監(jiān)控的目的,這種情況下,使用K-bucket的路由模式,查找節(jié)點(diǎn)過程不免顯得有點(diǎn)重復(fù)而導(dǎo)致效率低下。


【發(fā)明內(nèi)容】

[0008]針對(duì)現(xiàn)有技術(shù)所存在的上述技術(shù)問題,本發(fā)明提供了一種針對(duì)P2P網(wǎng)絡(luò)監(jiān)控基于一維鏈表的節(jié)點(diǎn)維護(hù)方法,應(yīng)用于監(jiān)控網(wǎng)絡(luò),能夠提高監(jiān)控效率,具有快速、準(zhǔn)確的性能優(yōu)勢(shì)。
[0009]一種針對(duì)P2P網(wǎng)絡(luò)監(jiān)控基于一維鏈表的節(jié)點(diǎn)維護(hù)方法,包括如下步驟:
[0010](I)當(dāng)用戶首次加入P2P網(wǎng)絡(luò)時(shí),在本地新建一張鏈表并將P2P網(wǎng)絡(luò)中長(zhǎng)期固定在線的若干節(jié)點(diǎn)加入至該鏈表中,所述的鏈表用于存儲(chǔ)節(jié)點(diǎn)信息;
[0011](2)用戶對(duì)P2P網(wǎng)絡(luò)進(jìn)行資源搜索時(shí),先從鏈表中提取出K個(gè)節(jié)點(diǎn),由這K個(gè)節(jié)點(diǎn)開始通過路由表進(jìn)行迭代查詢,直至收斂后得到若干個(gè)資源節(jié)點(diǎn),K為大于I的自然數(shù);
[0012]若用戶首次對(duì)P2P網(wǎng)絡(luò)進(jìn)行資源搜索,所述的K個(gè)節(jié)點(diǎn)為鏈表中節(jié)點(diǎn)ID與資源ID距離最近的K個(gè);用戶后續(xù)對(duì)P2P網(wǎng)絡(luò)進(jìn)行資源搜索時(shí),所述的K個(gè)節(jié)點(diǎn)為鏈表中最高優(yōu)先級(jí)節(jié)點(diǎn)中節(jié)點(diǎn)ID與資源ID距離最近的K個(gè);
[0013]迭代查詢過程中,用戶將查詢到對(duì)應(yīng)距離更近的新節(jié)點(diǎn)加入鏈表中;
[0014](3)用戶向各資源節(jié)點(diǎn)發(fā)起資源請(qǐng)求,根據(jù)響應(yīng)結(jié)果更新資源節(jié)點(diǎn)在鏈表中的節(jié)點(diǎn)信息,并根據(jù)優(yōu)先級(jí)對(duì)鏈表中的節(jié)點(diǎn)進(jìn)行排列。
[0015]所述的節(jié)點(diǎn)信息包括優(yōu)先級(jí)、響應(yīng)次數(shù)、未響應(yīng)次數(shù)、ID (身份標(biāo)識(shí)號(hào)碼)、IP地址、TCP通信端口、UDP通信端口以及客戶端應(yīng)用的版本號(hào)。
[0016]對(duì)于新加入鏈表的節(jié)點(diǎn),用戶將其優(yōu)先級(jí)置為I且響應(yīng)次數(shù)和未響應(yīng)次數(shù)均置為O0
[0017]所述的步驟⑵中利用XOR算法計(jì)算節(jié)點(diǎn)ID與資源ID的距離。
[0018]所述的資源ID為文件的Hash值或文件名關(guān)鍵詞的Hash值。
[0019]所述的步驟(2)中迭代查詢的具體過程如下:用戶向所述的K個(gè)節(jié)點(diǎn)發(fā)起詢問,對(duì)于這K個(gè)節(jié)點(diǎn)中的任一節(jié)點(diǎn)P,節(jié)點(diǎn)P接收到詢問后從自身路由表中提取出節(jié)點(diǎn)ID與資源ID距離最近的若干個(gè)節(jié)點(diǎn)介紹給用戶,用戶對(duì)節(jié)點(diǎn)P及其介紹的若干個(gè)節(jié)點(diǎn)進(jìn)行比較:
[0020]若節(jié)點(diǎn)P對(duì)應(yīng)的距離比節(jié)點(diǎn)P向用戶介紹的若干個(gè)節(jié)點(diǎn)對(duì)應(yīng)的距離均要近,則用戶將節(jié)點(diǎn)P作為資源節(jié)點(diǎn);
[0021]若節(jié)點(diǎn)P向用戶介紹的任一節(jié)點(diǎn)對(duì)應(yīng)的距離比節(jié)點(diǎn)P對(duì)應(yīng)的距離近,則用戶將該節(jié)點(diǎn)加入鏈表中并向該節(jié)點(diǎn)發(fā)起詢問,該節(jié)點(diǎn)根據(jù)上述方法再將其路由表中的節(jié)點(diǎn)介紹給用戶,依此迭代查詢直至用戶查詢不到對(duì)應(yīng)距離更近的節(jié)點(diǎn)。
[0022]用戶首次對(duì)P2P網(wǎng)絡(luò)進(jìn)行資源搜索時(shí),若節(jié)點(diǎn)P對(duì)應(yīng)的距離比節(jié)點(diǎn)P向用戶介紹的若干個(gè)節(jié)點(diǎn)對(duì)應(yīng)的距離均要近,則用戶將節(jié)點(diǎn)P的優(yōu)先級(jí)置為2。
[0023]所述的步驟(3)中用戶向各資源節(jié)點(diǎn)發(fā)起資源請(qǐng)求,若資源節(jié)點(diǎn)向用戶返回對(duì)應(yīng)的資源地址,則用戶在鏈表中根據(jù)其返回資源地址的數(shù)量相應(yīng)增加該資源節(jié)點(diǎn)的響應(yīng)次數(shù)且將其未響應(yīng)次數(shù)清零;若資源節(jié)點(diǎn)未返回對(duì)應(yīng)的資源地址且其優(yōu)先級(jí)大于2,則用戶在鏈表中將該資源節(jié)點(diǎn)的未響應(yīng)次數(shù)加I。
[0024]當(dāng)用戶鏈表中任一節(jié)點(diǎn)的響應(yīng)次數(shù)達(dá)到響應(yīng)閾值時(shí),則將該節(jié)點(diǎn)的優(yōu)先級(jí)加I并將其響應(yīng)次數(shù)清零;當(dāng)用戶鏈表中任一節(jié)點(diǎn)的未響應(yīng)次數(shù)達(dá)到未響應(yīng)閾值時(shí),則將該節(jié)點(diǎn)的優(yōu)先級(jí)減I并將其未響應(yīng)次數(shù)清零。
[0025]所述的鏈表中的節(jié)點(diǎn)按優(yōu)先級(jí)從高到低排列,優(yōu)先級(jí)同為I的節(jié)點(diǎn)按加入鏈表的先后排列,即最近加入鏈表的節(jié)點(diǎn)排最末;若節(jié)點(diǎn)的優(yōu)先級(jí)發(fā)生變化時(shí),將其移至新優(yōu)先級(jí)隊(duì)伍的最iu。
[0026]優(yōu)選地,用戶定期向鏈表中的節(jié)點(diǎn)打招呼,對(duì)于沒有回應(yīng)的節(jié)點(diǎn),將其從鏈表中移出;能夠確保鏈表中的節(jié)點(diǎn)全部有效。
[0027]本發(fā)明根據(jù)網(wǎng)絡(luò)監(jiān)控應(yīng)用的特殊需求,通過重復(fù)的查詢被監(jiān)控的資源以達(dá)到監(jiān)控網(wǎng)絡(luò)的目的,放棄傳統(tǒng)的K桶而使用一維鏈表存儲(chǔ)節(jié)點(diǎn)信息,通過P2P網(wǎng)絡(luò)的查詢功能對(duì)網(wǎng)絡(luò)進(jìn)行監(jiān)控,根據(jù)查詢的反饋信息,設(shè)置節(jié)點(diǎn)的優(yōu)先級(jí),根據(jù)節(jié)點(diǎn)優(yōu)先級(jí)對(duì)一維鏈表進(jìn)行動(dòng)態(tài)調(diào)整,使得一維鏈表以優(yōu)先級(jí)高低排列,以達(dá)到在下次查詢時(shí),能優(yōu)先查詢有響應(yīng)信息的節(jié)點(diǎn)的目的,從而避免每次查詢重復(fù)的從零開始,減少查詢的迭代次數(shù),大大減少了查詢時(shí)間,提高了監(jiān)控網(wǎng)絡(luò)的效率。

【專利附圖】

【附圖說明】
[0028]圖1為K-bucket模式的路由表樹結(jié)構(gòu)示意圖。
[0029]圖2為本發(fā)明方法的步驟流程示意圖。
[0030]圖3為本發(fā)明鏈表的更新流程示意圖。
[0031]圖4為本發(fā)明鏈表的指針結(jié)構(gòu)示意圖。

【具體實(shí)施方式】
[0032]為了更為具體地描述本發(fā)明,下面結(jié)合附圖及【具體實(shí)施方式】對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說明。
[0033]如圖2所示,本發(fā)明針對(duì)P2P網(wǎng)絡(luò)監(jiān)控基于一維鏈表的節(jié)點(diǎn)維護(hù)方法,包括如下步驟:
[0034](I)節(jié)點(diǎn)信息的存儲(chǔ);每個(gè)節(jié)點(diǎn)存儲(chǔ)pr1rity (優(yōu)先級(jí)),resNum(響應(yīng)次數(shù)),resOutTime (未響應(yīng)次數(shù))以及節(jié)點(diǎn)相關(guān)信息。這里的相關(guān)信息包括指節(jié)點(diǎn)的ID、節(jié)點(diǎn)的IP、節(jié)點(diǎn)的TCP通信端口、節(jié)點(diǎn)的UDP通信端口、節(jié)點(diǎn)版本信息等。
[0035]pr1rity表示節(jié)點(diǎn)在這個(gè)鏈表中的優(yōu)先級(jí),resNum表示查詢過程中得到響應(yīng)的次數(shù),節(jié)點(diǎn)的ID是一個(gè)由節(jié)點(diǎn)隨機(jī)生成用以標(biāo)識(shí)節(jié)點(diǎn)唯一性的數(shù)據(jù)。
[0036]關(guān)于節(jié)點(diǎn)的ID,用于識(shí)別節(jié)點(diǎn),是一個(gè)128bit的隨機(jī)數(shù)。
[0037]關(guān)于節(jié)點(diǎn)的IP,將正常的IP轉(zhuǎn)換成32bit的int數(shù)據(jù),存儲(chǔ)于節(jié)點(diǎn)信息。
[0038]關(guān)于節(jié)點(diǎn)的TCP通信端口,每個(gè)節(jié)點(diǎn)都會(huì)在一個(gè)TCP端口開啟偵聽,等待其他節(jié)點(diǎn)的連接。以short方式存儲(chǔ)于節(jié)點(diǎn)信息。
[0039]關(guān)于節(jié)點(diǎn)的UDP通信端口,每個(gè)節(jié)點(diǎn)通過UDP協(xié)議與其余節(jié)點(diǎn)進(jìn)行信息的交互。以short方式存儲(chǔ)于節(jié)點(diǎn)信息。
[0040]關(guān)于節(jié)點(diǎn)的版本信息,電驢的發(fā)展伴隨著協(xié)議的發(fā)展,不同的版本中協(xié)議有些許不同,因此需要確認(rèn)節(jié)點(diǎn)的版本,才能以正確的協(xié)議進(jìn)行解析。以u(píng)nsigned char存儲(chǔ)于節(jié)點(diǎn)信息中。
[0041](2)監(jiān)控系統(tǒng)啟動(dòng)時(shí),從 http://upd.emule-security.0rg/nodes.dat 上下載nodes, dat。解析nodes, dat文件,獲取文件中存儲(chǔ)的節(jié)點(diǎn)ID、IP、Port,將他們加入鏈表,并將其pr1rity設(shè)置為最低,resNum設(shè)置為O, resOutTime設(shè)置為O。
[0042]具體實(shí)施中,pr1rity分為5種級(jí)別,1_優(yōu)先級(jí)最低,2_—般的優(yōu)先級(jí),3_中等優(yōu)先級(jí),4-較高的優(yōu)先級(jí),5-最高優(yōu)先級(jí)。這里的最低是指將pr1rity設(shè)置為I。
[0043](3)通過握手操作,根據(jù)握手是否成功,決定是否將節(jié)點(diǎn)移出鏈表。
[0044]由于P2P網(wǎng)絡(luò)中的節(jié)點(diǎn)具有隨時(shí)加入隨機(jī)離開的特性,因此為了確保本地鏈表中存儲(chǔ)的節(jié)點(diǎn)具有有效性,需要定時(shí)對(duì)節(jié)點(diǎn)進(jìn)行握手,并將握手失敗的節(jié)點(diǎn)移出鏈表。本實(shí)施方式中,定時(shí)時(shí)間為2小時(shí)。
[0045](4)針對(duì)查詢ID查詢。此處的查詢ID有兩種情況。一種情況,是直接由文件的hash值作為查詢ID,可以通過這個(gè)查詢ID查詢?cè)撐募赑2P網(wǎng)絡(luò)中的分布。另一種情況,是由關(guān)鍵詞的hash作為查詢ID,主要用于查詢P2P網(wǎng)絡(luò)中與該關(guān)鍵詞相關(guān)的文件的信息(文件名、文件大小、文件類型)。
[0046]查詢分為兩個(gè)過程。第一步,先在鏈表中查找與查詢ID最近的K個(gè)節(jié)點(diǎn),然后向這些節(jié)點(diǎn)進(jìn)行詢問,查看是否存在與該查詢ID更近的節(jié)點(diǎn)。若存在,則對(duì)返回的更近的節(jié)點(diǎn)進(jìn)行第一步的操作,迭代查詢;若不存在更近的節(jié)點(diǎn),我們則認(rèn)為該節(jié)點(diǎn)是此次查詢的較佳節(jié)點(diǎn),則進(jìn)入第二步,向它詢問資源的具體情況。本實(shí)施方式中,K設(shè)為8。
[0047]關(guān)于更近,是指針對(duì)被詢問的節(jié)點(diǎn)ID與查詢ID的距離與被查詢節(jié)點(diǎn)路由表中的節(jié)點(diǎn)ID與查詢ID的距離的比較,若后者更小,則稱為更近。
[0048]關(guān)于距離的計(jì)算,P2P網(wǎng)絡(luò)是通過異或運(yùn)算來衡量?jī)蓚€(gè)ID值之間的距離。
[0049]關(guān)于迭代查詢過程。根據(jù)P2P網(wǎng)絡(luò)路由查詢的特點(diǎn),可以保證整個(gè)查詢過程的收斂速度為O(1gN),這里N為網(wǎng)絡(luò)全部節(jié)點(diǎn)的數(shù)量。即整個(gè)過程不會(huì)無限查找。
[0050](5)如圖3所示,根據(jù)查詢過程反饋的數(shù)據(jù),更新pr1rity與resNum、resOutTime,具體操作如下:
[0051]我們將初始加入鏈表的節(jié)點(diǎn)的pr1rity設(shè)置為I, resNum設(shè)置為O, resOutTime設(shè)置為O。在第一步的迭代過程中,將無法查找到更近節(jié)點(diǎn)信息的節(jié)點(diǎn)(即本次查詢的較佳節(jié)點(diǎn))的pr1rity設(shè)置為2,表示它們具有相對(duì)優(yōu)先的級(jí)別。這樣做是因?yàn)橄麓沃貜?fù)查詢的話,有很大的概率再次查詢到這些節(jié)點(diǎn)。
[0052]執(zhí)行第二步操作,針對(duì)沒有返回查詢的信息時(shí),若該節(jié)點(diǎn)的pr i or i ty> 2,則將其res0utTime+l,當(dāng) resOutTime 超過 RES_0UT_TIME 時(shí),則將其 pr1rity-Ι,將 resOutTime 置零,并調(diào)整鏈表。實(shí)際應(yīng)用中,RES_0UT_TIME設(shè)置為5。
[0053]針對(duì)有返回查詢的信息時(shí),將resOutTime置0,并根據(jù)返回的查詢結(jié)果數(shù)決定resNum增加的數(shù)值(具體操作時(shí),結(jié)果數(shù)為0_3時(shí),加I ;3_10,加2 ;>10,加3)。當(dāng)resNum累計(jì)到RES_NUM時(shí),pr1rity+Ι,并將resNum置零,并調(diào)整鏈表。實(shí)際應(yīng)用中,RES_NUM設(shè)置為50。
[0054](6)當(dāng)再次對(duì)已查詢的查詢ID進(jìn)行查詢操作時(shí),則不再遍歷整個(gè)鏈表,而是直接在最高優(yōu)先級(jí)的部分進(jìn)行最近節(jié)點(diǎn)的查找。具體操作如下:
[0055]假設(shè)當(dāng)前鏈表的節(jié)點(diǎn)的最高優(yōu)先級(jí)為al,若節(jié)點(diǎn)個(gè)數(shù)大于MK,則直接從這些節(jié)點(diǎn)中查找與查詢ID距離最近的節(jié)點(diǎn),然后重復(fù)步驟(4) (5);否則聯(lián)合次優(yōu)先級(jí)al-Ι的節(jié)點(diǎn),甚至al-2,使得節(jié)點(diǎn)個(gè)數(shù)大于MK,從這些節(jié)點(diǎn)中查找與查詢ID距離最近的節(jié)點(diǎn),然后重復(fù)步驟⑷(5)。本實(shí)施方式中,MK設(shè)為20。
[0056]優(yōu)先級(jí)越高,反映的是節(jié)點(diǎn)的存在被查詢的資源以及它存在與網(wǎng)絡(luò)中的穩(wěn)定性。因此這么做,可以減少步驟(4)中的迭代次數(shù),能更快的收斂到需要查找的資源節(jié)點(diǎn)。
[0057]針對(duì)鏈表的調(diào)整,我們采用5個(gè)額外的指針記錄鏈表中5個(gè)級(jí)別的pr1rity的起始節(jié)點(diǎn),如圖4所示。當(dāng)鏈表中有節(jié)點(diǎn)的pr1rity發(fā)生變化時(shí),直接將節(jié)點(diǎn)從鏈表中移出,然后直接插入到對(duì)應(yīng)級(jí)別的記錄指針上。這樣做,使得鏈表調(diào)整的代價(jià)為0(1)。
[0058]針對(duì)網(wǎng)絡(luò)信息監(jiān)控應(yīng)用,本實(shí)施方式相對(duì)于之前的K-bucket的路由存儲(chǔ)結(jié)構(gòu),它在單次獨(dú)立的操作(發(fā)布、搜索)中,并不體現(xiàn)其優(yōu)勢(shì),甚至可以說不如K-bucket結(jié)構(gòu);然而在若干次重復(fù)的操作中,其快速、準(zhǔn)確的性能優(yōu)勢(shì)將得到充分發(fā)揮。
【權(quán)利要求】
1.一種針對(duì)P2P網(wǎng)絡(luò)監(jiān)控基于一維鏈表的節(jié)點(diǎn)維護(hù)方法,包括如下步驟: (1)當(dāng)用戶首次加入P2P網(wǎng)絡(luò)時(shí),在本地新建一張鏈表并將P2P網(wǎng)絡(luò)中長(zhǎng)期固定在線的若干節(jié)點(diǎn)加入至該鏈表中,所述的鏈表用于存儲(chǔ)節(jié)點(diǎn)信息; (2)用戶對(duì)P2P網(wǎng)絡(luò)進(jìn)行資源搜索時(shí),先從鏈表中提取出K個(gè)節(jié)點(diǎn),由這K個(gè)節(jié)點(diǎn)開始通過路由表進(jìn)行迭代查詢,直至收斂后得到若干個(gè)資源節(jié)點(diǎn),K為大于I的自然數(shù); 若用戶首次對(duì)P2P網(wǎng)絡(luò)進(jìn)行資源搜索,所述的K個(gè)節(jié)點(diǎn)為鏈表中節(jié)點(diǎn)ID與資源ID距離最近的K個(gè);用戶后續(xù)對(duì)P2P網(wǎng)絡(luò)進(jìn)行資源搜索時(shí),所述的K個(gè)節(jié)點(diǎn)為鏈表中最高優(yōu)先級(jí)節(jié)點(diǎn)中節(jié)點(diǎn)ID與資源ID距離最近的K個(gè); 迭代查詢過程中,用戶將查詢到對(duì)應(yīng)距離更近的新節(jié)點(diǎn)加入鏈表中; (3)用戶向各資源節(jié)點(diǎn)發(fā)起資源請(qǐng)求,根據(jù)響應(yīng)結(jié)果更新資源節(jié)點(diǎn)在鏈表中的節(jié)點(diǎn)信息,并根據(jù)優(yōu)先級(jí)對(duì)鏈表中的節(jié)點(diǎn)進(jìn)行排列。
2.根據(jù)權(quán)利要求1所述的節(jié)點(diǎn)維護(hù)方法,其特征在于:所述的節(jié)點(diǎn)信息包括優(yōu)先級(jí)、響應(yīng)次數(shù)、未響應(yīng)次數(shù)、ID、IP地址、TCP通信端口、UDP通信端口以及客戶端應(yīng)用的版本號(hào);對(duì)于新加入鏈表的節(jié)點(diǎn),用戶將其優(yōu)先級(jí)置為I且響應(yīng)次數(shù)和未響應(yīng)次數(shù)均置為O。
3.根據(jù)權(quán)利要求1所述的節(jié)點(diǎn)維護(hù)方法,其特征在于:所述的步驟(2)中利用XOR算法計(jì)算節(jié)點(diǎn)ID與資源ID的距離。
4.根據(jù)權(quán)利要求1所述的節(jié)點(diǎn)維護(hù)方法,其特征在于:所述的資源ID為文件的Hash值或文件名關(guān)鍵詞的Hash值。
5.根據(jù)權(quán)利要求1所述的節(jié)點(diǎn)維護(hù)方法,其特征在于:所述的步驟(2)中迭代查詢的具體過程如下:用戶向所述的K個(gè)節(jié)點(diǎn)發(fā)起詢問,對(duì)于這K個(gè)節(jié)點(diǎn)中的任一節(jié)點(diǎn)P,節(jié)點(diǎn)P接收到詢問后從自身路由表中提取出節(jié)點(diǎn)ID與資源ID距離最近的若干個(gè)節(jié)點(diǎn)介紹給用戶,用戶對(duì)節(jié)點(diǎn)P及其介紹的若干個(gè)節(jié)點(diǎn)進(jìn)行比較: 若節(jié)點(diǎn)P對(duì)應(yīng)的距離比節(jié)點(diǎn)P向用戶介紹的若干個(gè)節(jié)點(diǎn)對(duì)應(yīng)的距離均要近,則用戶將節(jié)點(diǎn)P作為資源節(jié)點(diǎn); 若節(jié)點(diǎn)P向用戶介紹的任一節(jié)點(diǎn)對(duì)應(yīng)的距離比節(jié)點(diǎn)P對(duì)應(yīng)的距離近,則用戶將該節(jié)點(diǎn)加入鏈表中并向該節(jié)點(diǎn)發(fā)起詢問,該節(jié)點(diǎn)根據(jù)上述方法再將其路由表中的節(jié)點(diǎn)介紹給用戶,依此迭代查詢直至用戶查詢不到對(duì)應(yīng)距離更近的節(jié)點(diǎn)。
6.根據(jù)權(quán)利要求5所述的節(jié)點(diǎn)維護(hù)方法,其特征在于:用戶首次對(duì)P2P網(wǎng)絡(luò)進(jìn)行資源搜索時(shí),若節(jié)點(diǎn)P對(duì)應(yīng)的距離比節(jié)點(diǎn)P向用戶介紹的若干個(gè)節(jié)點(diǎn)對(duì)應(yīng)的距離均要近,則用戶將節(jié)點(diǎn)P的優(yōu)先級(jí)置為2。
7.根據(jù)權(quán)利要求2所述的節(jié)點(diǎn)維護(hù)方法,其特征在于:所述的步驟(3)中用戶向各資源節(jié)點(diǎn)發(fā)起資源請(qǐng)求,若資源節(jié)點(diǎn)向用戶返回對(duì)應(yīng)的資源地址,則用戶在鏈表中根據(jù)其返回資源地址的數(shù)量相應(yīng)增加該資源節(jié)點(diǎn)的響應(yīng)次數(shù)且將其未響應(yīng)次數(shù)清零;若資源節(jié)點(diǎn)未返回對(duì)應(yīng)的資源地址且其優(yōu)先級(jí)大于2,則用戶在鏈表中將該資源節(jié)點(diǎn)的未響應(yīng)次數(shù)加I。
8.根據(jù)權(quán)利要求7所述的節(jié)點(diǎn)維護(hù)方法,其特征在于:當(dāng)用戶鏈表中任一節(jié)點(diǎn)的響應(yīng)次數(shù)達(dá)到響應(yīng)閾值時(shí),則將該節(jié)點(diǎn)的優(yōu)先級(jí)加I并將其響應(yīng)次數(shù)清零;當(dāng)用戶鏈表中任一節(jié)點(diǎn)的未響應(yīng)次數(shù)達(dá)到未響應(yīng)閾值時(shí),則將該節(jié)點(diǎn)的優(yōu)先級(jí)減I并將其未響應(yīng)次數(shù)清零。
9.根據(jù)權(quán)利要求1所述的節(jié)點(diǎn)維護(hù)方法,其特征在于:所述的鏈表中的節(jié)點(diǎn)按優(yōu)先級(jí)從高到低排列,優(yōu)先級(jí)同為I的節(jié)點(diǎn)按加入鏈表的先后排列,即最近加入鏈表的節(jié)點(diǎn)排最末;若節(jié)點(diǎn)的優(yōu)先級(jí)發(fā)生變化時(shí),將其移至新優(yōu)先級(jí)隊(duì)伍的最前。
10.根據(jù)權(quán)利要求1所述的節(jié)點(diǎn)維護(hù)方法,其特征在于:用戶定期向鏈表中的節(jié)點(diǎn)打招呼,對(duì)于沒有回應(yīng)的節(jié)點(diǎn),將其從鏈表中移出。
【文檔編號(hào)】H04L12/26GK104168147SQ201410423858
【公開日】2014年11月26日 申請(qǐng)日期:2014年8月26日 優(yōu)先權(quán)日:2014年8月26日
【發(fā)明者】池張, 張華熊, 胡潔 申請(qǐng)人:浙江理工大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1