国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于對(duì)等網(wǎng)絡(luò)的阿瑞斯協(xié)議分析系統(tǒng)的實(shí)現(xiàn)方法

      文檔序號(hào):7749732閱讀:183來(lái)源:國(guó)知局
      專利名稱:一種基于對(duì)等網(wǎng)絡(luò)的阿瑞斯協(xié)議分析系統(tǒng)的實(shí)現(xiàn)方法
      技術(shù)領(lǐng)域
      本發(fā)明是一種針對(duì)阿瑞斯(ARES)特定網(wǎng)絡(luò)服務(wù)的協(xié)議分析系統(tǒng),主要用來(lái)解決 阿瑞斯網(wǎng)絡(luò)報(bào)文的協(xié)議分析問題,進(jìn)而服務(wù)于P2P緩存系統(tǒng),屬于對(duì)等網(wǎng)絡(luò)領(lǐng)域。
      背景技術(shù)
      近些年P(guān)2P應(yīng)用的飛速發(fā)展,雖然豐富了互聯(lián)網(wǎng)的內(nèi)容,但其流量的爆發(fā)式增長(zhǎng) 和不加限制的帶寬占用,使得P2P流量成為網(wǎng)絡(luò)的主要負(fù)擔(dān),甚至引起網(wǎng)絡(luò)擁塞,影響和降 低其它業(yè)務(wù)的性能。據(jù)相關(guān)統(tǒng)計(jì),迄今為止,P2P業(yè)務(wù)共占所有寬帶數(shù)據(jù)吞吐量的80%以 上,其中P2P業(yè)務(wù)中阿瑞斯網(wǎng)絡(luò)服務(wù)占很大比例。阿瑞斯的發(fā)展始于2002年,原本在Gnutella網(wǎng)絡(luò)上運(yùn)營(yíng)。阿瑞斯開始是一個(gè) Gnutella客戶端,2002年底經(jīng)過(guò)改寫,成為目前的阿瑞斯網(wǎng)絡(luò)。目前的阿瑞斯網(wǎng)絡(luò)采用混 合架構(gòu),包含葉子(對(duì)等體)和超級(jí)結(jié)點(diǎn)。和BitTorrent類似,阿瑞斯支持同步下載和從 一個(gè)對(duì)等體到多個(gè)對(duì)等體的上載。阿瑞斯同時(shí)支持直接超鏈接至P2P網(wǎng)絡(luò)文件的能力。阿 瑞斯目前支持超過(guò)300,000用戶,是流行的音樂文件網(wǎng)絡(luò)。阿瑞斯網(wǎng)絡(luò)是一種基于超級(jí)節(jié)點(diǎn)的兩層覆蓋網(wǎng)絡(luò)。在超級(jí)節(jié)點(diǎn)層,通過(guò)DHT技術(shù) 完成跨越搜索。阿瑞斯采用TCP通訊方式,連接多個(gè)知名超級(jí)節(jié)點(diǎn),還會(huì)通過(guò)UDP來(lái)驗(yàn)證知 名超級(jí)節(jié)點(diǎn)的狀態(tài)和同步信息,并且可以進(jìn)入聊天室和其他用戶在線聊天(TCP方式,無(wú)固 定端口)。阿瑞斯支持S0CK4、S0CK5代理以及使用多重代理超級(jí)節(jié)點(diǎn)。鑒于復(fù)雜的阿瑞斯網(wǎng)絡(luò)服務(wù),通過(guò)部署P2P緩存系統(tǒng),基礎(chǔ)網(wǎng)絡(luò)運(yùn)營(yíng)商可以利用 有限的投入支撐增長(zhǎng)的P2P業(yè)務(wù)需求,從而解決當(dāng)前P2P技術(shù)帶來(lái)的帶寬沖擊。另外,P2P 緩存系統(tǒng)的使用還可以改善P2P應(yīng)用的用戶體驗(yàn),從而吸引更多P2P客戶,并可能為基礎(chǔ)網(wǎng) 絡(luò)運(yùn)營(yíng)商帶來(lái)更多客戶。也就是說(shuō),P2P緩存系統(tǒng)的部署不僅可能緩和P2P技術(shù)和基礎(chǔ)網(wǎng) 絡(luò)運(yùn)營(yíng)商的矛盾,而且可能引導(dǎo)二者協(xié)同發(fā)展,創(chuàng)造出雙贏局面。

      發(fā)明內(nèi)容
      技術(shù)問題本發(fā)明的目的是對(duì)阿瑞斯的特定網(wǎng)絡(luò)報(bào)文進(jìn)行分析,進(jìn)而服務(wù)于P2P 緩存系統(tǒng)的部署。本發(fā)明相比以往的方案,該方案具有新穎性、靈活性、易擴(kuò)展性和易操作 性,具有很好的市場(chǎng)前景。技術(shù)方案本發(fā)明是集中的、可管的、可控的。其主要目的是對(duì)阿瑞斯網(wǎng)絡(luò)的報(bào)文 進(jìn)行識(shí)別、提取、緩存、發(fā)送和構(gòu)造,以完成協(xié)議分析模塊的核心功能。根據(jù)哈希搜索請(qǐng)求以及一些交互報(bào)文的應(yīng)用層特征字,將報(bào)文識(shí)別,然后對(duì)哈希 搜索請(qǐng)求報(bào)文進(jìn)行分析、提取{源地址、下載資源ID}信息,并把其發(fā)送到索引服務(wù)器,等待 索引服務(wù)器返回資源節(jié)點(diǎn)列表信息,最后根據(jù)返回的信息,構(gòu)造哈希搜索返回結(jié)果報(bào)文。協(xié)議分析邏輯功能主要由以下幾個(gè)部分組成報(bào)文識(shí)別功能、提取信息功能、緩存 報(bào)文功能、發(fā)送信息功能及構(gòu)造報(bào)文功能的邏輯模塊。該協(xié)議分析系統(tǒng)實(shí)現(xiàn)方法包括的步驟為
      步驟1).進(jìn)行需求分析,對(duì)協(xié)議分析系統(tǒng)需要完成的功能進(jìn)行分析,并生成需求 分析文檔;步驟2).按照步驟1的分析文檔設(shè)計(jì)模塊,對(duì)各模塊的功能進(jìn)行詳細(xì)分析,生成各 個(gè)模塊之間的邏輯關(guān)系和功能說(shuō)明文檔;步驟3).按照步驟2的文檔,設(shè)計(jì)與實(shí)現(xiàn)協(xié)議分析系統(tǒng)的識(shí)別報(bào)文模塊,在協(xié)議分 析系統(tǒng)中識(shí)別效率,影響著整個(gè)系統(tǒng)的工作效率,報(bào)文識(shí)別模塊根據(jù)報(bào)文長(zhǎng)度以及固定位 特征字來(lái)協(xié)議識(shí)別對(duì)等網(wǎng)絡(luò)阿瑞斯的網(wǎng)絡(luò)服務(wù)中的哈希搜索請(qǐng)求報(bào)文以及一些相關(guān)交互 報(bào)文;步驟4).按照步驟2的文檔,設(shè)計(jì)與實(shí)現(xiàn)協(xié)議分析系統(tǒng)對(duì)識(shí)別后的哈希搜索請(qǐng)求 報(bào)文提取相關(guān)信息,并使用套接字通信完成發(fā)送報(bào)文功能模塊的實(shí)現(xiàn)方式;提取報(bào)文模塊 是提取哈希搜索請(qǐng)求報(bào)文中的{源地址、下載資源號(hào)}信息,進(jìn)而由源地址和下載資源號(hào)生 成哈希值,哈希值是用來(lái)標(biāo)識(shí)不同用戶的不同文件資源;發(fā)送報(bào)文模塊將提取的下載資源 號(hào)和生成的哈希值發(fā)送給索引服務(wù)器,并等待索引服務(wù)器返回查詢結(jié)果;步驟5).按照步驟2的文檔,設(shè)計(jì)與實(shí)現(xiàn)協(xié)議分析系統(tǒng)的緩存報(bào)文功能,緩存識(shí)別 模塊根據(jù)提取報(bào)文模塊生成的哈希值將相應(yīng)的哈希搜索請(qǐng)求報(bào)文存進(jìn)分離鏈接散列表,而 將索引服務(wù)器返回的報(bào)文存進(jìn)先進(jìn)先出隊(duì)列里;步驟6).按照步驟2的文檔,設(shè)計(jì)與實(shí)現(xiàn)協(xié)議分析系統(tǒng)的構(gòu)造報(bào)文功能,構(gòu)造報(bào) 文模塊讀取緩存于先進(jìn)先出隊(duì)列中的索引服務(wù)器返回的報(bào)文,根據(jù)返回的報(bào)文內(nèi)容判斷索 引服務(wù)器查詢是否成功,如果索引服務(wù)器查詢成功,說(shuō)明內(nèi)網(wǎng)有相關(guān)的下載資源并返回了 內(nèi)網(wǎng)中的資源列表,進(jìn)而根據(jù)索引服務(wù)器返回報(bào)文中的哈希值讀取出分離鏈接散列表中相 應(yīng)的哈希搜索請(qǐng)求報(bào)文,結(jié)合哈希搜索請(qǐng)求報(bào)文頭部和索引服務(wù)器返回的內(nèi)網(wǎng)資源列表, 構(gòu)造出哈希搜索返回結(jié)果報(bào)文,將構(gòu)造的哈希搜索返回結(jié)果報(bào)文發(fā)送給對(duì)等網(wǎng)絡(luò)阿瑞斯的 客戶端,阿瑞斯客戶端就可以根據(jù)構(gòu)造的哈希搜索返回結(jié)果報(bào)文里的資源地址進(jìn)行內(nèi)網(wǎng)下 載;如果索引服務(wù)器查詢失敗,說(shuō)明內(nèi)網(wǎng)中沒有相關(guān)的下載資源,讀取出分離鏈接散列表中 相應(yīng)的哈希搜索請(qǐng)求報(bào)文并將其放行到外網(wǎng),讓其去外網(wǎng)進(jìn)行資源下載。有益效果本發(fā)明提取一個(gè)針對(duì)阿瑞斯特定網(wǎng)絡(luò)服務(wù)的協(xié)議分析系統(tǒng)的實(shí)現(xiàn)方 法,相比以往的方法有一些顯著的優(yōu)點(diǎn)識(shí)別效率高本發(fā)明在網(wǎng)絡(luò)層進(jìn)行報(bào)文識(shí)別,縮短報(bào)文識(shí)別路徑,同時(shí)本發(fā)明只識(shí) 別上行流量,對(duì)下行流量不進(jìn)行處理,減輕CPU的處理壓力,提高報(bào)文的識(shí)別效率。報(bào)文的 識(shí)別準(zhǔn)確率達(dá)到100%,不會(huì)出現(xiàn)漏判、誤判等情況,而傳統(tǒng)的在路由器上進(jìn)行識(shí)別的方式 一般僅能達(dá)到90% 95%的識(shí)別命中率。模塊化設(shè)計(jì)整個(gè)協(xié)議分析系統(tǒng)的按照功能模塊進(jìn)行劃分,報(bào)文識(shí)別功能采用深 層掃描DPI技術(shù),根據(jù)阿瑞斯報(bào)文的特征字來(lái)協(xié)議識(shí)別相關(guān)報(bào)文。提取信息功能則是提取 哈希搜索請(qǐng)求報(bào)文的{源地址IP、下載資源ID}并將相關(guān)信息通過(guò)發(fā)送報(bào)文模塊發(fā)送給索 引服務(wù)器。緩存報(bào)文功能使用緩存隊(duì)列,將識(shí)別出來(lái)的報(bào)文放進(jìn)該緩存隊(duì)列里。構(gòu)造報(bào)文 功能則根據(jù)索引服務(wù)器返回的節(jié)點(diǎn)列表信息,構(gòu)造哈希搜索返回報(bào)文。良好的系統(tǒng)擴(kuò)展性由于系統(tǒng)模塊之間采用的是獨(dú)立模塊化,功能并行層次化設(shè) 計(jì),系統(tǒng)模塊之間的通信機(jī)制完全采用層次化的結(jié)構(gòu),因此可以方便地添加新的功能,也可 以很容易地升級(jí)現(xiàn)有的功能,所以該系統(tǒng)擁有良好的可擴(kuò)展性。
      高度的可靠性和穩(wěn)定性通過(guò)對(duì)阿瑞斯協(xié)議分析系統(tǒng)的單元測(cè)試,集成測(cè)試以及 整個(gè)P2P緩存系統(tǒng)的系統(tǒng)測(cè)試表明該協(xié)議分析系統(tǒng)運(yùn)行狀況良好,占用系統(tǒng)資源少,擁有 良好的容錯(cuò)機(jī)制以及災(zāi)難恢復(fù)能力。


      圖1是阿瑞斯協(xié)議分析系統(tǒng)的物理組網(wǎng)圖,圖2是阿瑞斯協(xié)議分析系統(tǒng)的時(shí)序圖,圖3是報(bào)文識(shí)別模塊的流程圖,圖4是緩存報(bào)文模塊的分離鏈接散列表結(jié)構(gòu)圖,圖5是發(fā)送報(bào)文模塊的原理圖,圖6是構(gòu)造報(bào)文模塊的流程圖。
      具體實(shí)施例方式體系結(jié)構(gòu)報(bào)文識(shí)別功能基于應(yīng)用層數(shù)據(jù)檢測(cè)的P2P流量識(shí)別技術(shù)是通過(guò)協(xié)議分析與還原 技術(shù),提取P2P應(yīng)用層數(shù)據(jù)(即P2P載荷),通過(guò)分析P2P載荷所包含的協(xié)議特征值,來(lái)判斷 是否屬于P2P應(yīng)用。因此,這類方法也叫做深層數(shù)據(jù)包檢測(cè)技術(shù)(DPI)。在深層數(shù)據(jù)包檢測(cè) 技術(shù)中,通過(guò)對(duì)具體的P2P協(xié)議及其對(duì)應(yīng)的P2P系統(tǒng)的載荷進(jìn)行特征提取,建立特征庫(kù)。對(duì) 于流經(jīng)的實(shí)時(shí)網(wǎng)絡(luò)流,采用模式匹配算法,判斷其中是否包含特征庫(kù)中的特征串。如果特征 匹配成功,該網(wǎng)絡(luò)流就是P2P數(shù)據(jù)。本發(fā)明的報(bào)文識(shí)別部分即采用DPI掃描技術(shù),根據(jù)固定 位特征字來(lái)協(xié)議識(shí)別阿瑞斯特定網(wǎng)絡(luò)服務(wù)中的哈希搜索報(bào)文以及一些相關(guān)交互報(bào)文。提取信息功能提取阿瑞斯網(wǎng)絡(luò)服務(wù)的哈希搜索報(bào)文中的{源地址IP、下載資源 ID}信息,同時(shí)將提取的信息進(jìn)行哈希取值,此值作為緩存報(bào)文功能里分離鏈接散列表的 hashkey 值。緩存報(bào)文功能將識(shí)別到的哈希搜索報(bào)文緩存到分離鏈接法散列表,理想的散列 表數(shù)據(jù)結(jié)構(gòu)只不過(guò)是一個(gè)包含一些項(xiàng)的具有固定大小的數(shù)組,把表的大小記作TableSize, 將每個(gè)鍵映射到從0到TableSize-1這個(gè)范圍中的某個(gè)數(shù),并且將其放到適當(dāng)?shù)膯卧?。?想情況下應(yīng)該運(yùn)算簡(jiǎn)單并且應(yīng)該保證任何兩個(gè)不同的鍵映射到不同的單元,而實(shí)際情況因 為單元的數(shù)目是有限的,而鍵實(shí)際上是用不完的。當(dāng)一個(gè)鍵在插入時(shí)與一個(gè)已經(jīng)插入的元 素散列到相同的值,就產(chǎn)生了沖突,這個(gè)沖突需要解決。本發(fā)明采用分離鏈接法解決這種沖 突,進(jìn)而減少緩存哈希搜索報(bào)文的沖突。本發(fā)明使用先進(jìn)先出隊(duì)列儲(chǔ)存索引服務(wù)器返回的報(bào)文。發(fā)送報(bào)文功能將提取的哈希搜索請(qǐng)求報(bào)文的{哈希值、下載資源ID}信息發(fā) 給索引服務(wù)器。本發(fā)明使用socket套接字處理發(fā)送報(bào)文的問題,內(nèi)核與用戶間通訊使用 Net 1 ink。Net 1 ink用于在內(nèi)核模塊與在用戶地址空間中的進(jìn)程之間傳遞消息,它包含了用 于用戶進(jìn)程的基于標(biāo)準(zhǔn)套接字的接口和用于內(nèi)核模塊的一個(gè)內(nèi)部核心API。Net link是一種特殊的socket,它是Linux所特有的,類似于BSD中的AF_R0UTE但 又遠(yuǎn)比它的功能強(qiáng)大,目前在最新的Linux內(nèi)核(2.6. 14)中使用Netlink進(jìn)行應(yīng)用與內(nèi)核 通信的應(yīng)用很多,包括路由daemon (NETLINK_R0UTE),1-wire子系統(tǒng)(NETLINK_W1),用戶態(tài) socket 協(xié)議(NETLINK_USERSOCK),防火墻(NETLINK_FIREWALL),socket 監(jiān)視(NETLINK_ INET_DIAG),netfilter 日志(NETLINK_NFL0G),ipsec 安全策略(NETLINK_XFRM),SELinux 事件通知(NETLINK_SELINUX),iSCSI 子系統(tǒng)(NETLINK_ISCSI),IPv6 防火墻(NETLINK_IP6_ Fff), DECnet 路由信息(NETLINK_DNRTMSG),內(nèi)核事件向用戶態(tài)通知(NETLINK_KOBJECT_ UEVENT),通用 Netlink(NETLINK_GENERIC)。構(gòu)造報(bào)文功能根據(jù)緩存于先進(jìn)先出隊(duì)列的索引服務(wù)器返回的擁有資源節(jié)點(diǎn)列 表信息的報(bào)文與緩存于分離鏈接散列表中的哈希搜索請(qǐng)求報(bào)文,構(gòu)造哈希搜索返回結(jié)果報(bào) 文。報(bào)文構(gòu)造成功后,按照原路返回給阿瑞斯客戶端。方法流程該部分詳細(xì)說(shuō)明發(fā)明內(nèi)容各個(gè)部分的設(shè)計(jì)與實(shí)現(xiàn)報(bào)文識(shí)別功能實(shí)現(xiàn)利用Linux netfilter里的TCP/IP協(xié)議棧的關(guān)鍵數(shù)據(jù)結(jié)構(gòu) Socket Buffer (sk_buff),來(lái)操作流經(jīng)的數(shù)據(jù)。如果是報(bào)文分片的,或是無(wú)連接數(shù),則返回 無(wú)操作。當(dāng)一個(gè)報(bào)文流經(jīng)第一個(gè)鉤子函數(shù)NF_IP_PRE_ROUTING,會(huì)被送到內(nèi)存的控制結(jié)構(gòu) sk_buff中暫時(shí)存儲(chǔ)。在這個(gè)控制結(jié)構(gòu)里,有個(gè)指向網(wǎng)絡(luò)報(bào)文的指針(如skb->nh),首先識(shí) 別報(bào)文是否為TCP報(bào)文,再根據(jù)sk_bufT結(jié)構(gòu)提供的網(wǎng)絡(luò)層和傳輸層頭部的大小,skb->nh 加上之前兩者的頭部長(zhǎng)度,指針就指向了應(yīng)用層數(shù)據(jù)的頭部(如Appdata指針)。sk_buff 里還提供數(shù)據(jù)包的總長(zhǎng)度,通過(guò)減去網(wǎng)絡(luò)層和傳輸層頭部的大小,就能得到應(yīng)用層數(shù)據(jù)的 長(zhǎng)度。上述準(zhǔn)備工作完成后,就可以通過(guò)Appdata指針來(lái)比對(duì)需要識(shí)別的ares報(bào)文,也就 是通過(guò)對(duì)報(bào)文長(zhǎng)度和固定位進(jìn)行匹配來(lái)確定。sk_buff里存儲(chǔ)的是網(wǎng)絡(luò)字節(jié)序,所以比對(duì)時(shí) 需要用到_constant_htons()或_constant_htonl ()來(lái)統(tǒng)一網(wǎng)絡(luò)字節(jié)序和主機(jī)字節(jié)序。本發(fā)明需要剖析阿瑞斯特定網(wǎng)絡(luò)服務(wù)中的哈希搜索報(bào)文,判斷是否為阿瑞斯的上 行TCP數(shù)據(jù)包中的哈希搜索請(qǐng)求報(bào)文數(shù)據(jù)包,不是阿瑞斯包則放行數(shù)據(jù)包。提取信息功能實(shí)現(xiàn)提取哈希搜索請(qǐng)求報(bào)文的{源地址、下載資源ID}信息。通過(guò) 本發(fā)明的報(bào)文識(shí)別功能,識(shí)別出阿瑞斯的哈希搜索請(qǐng)求報(bào)文后,提取出網(wǎng)絡(luò)層的源地址,同 時(shí)對(duì)報(bào)文應(yīng)用層數(shù)據(jù)進(jìn)行信息處理,根據(jù)應(yīng)用層的數(shù)據(jù)結(jié)構(gòu),可以通過(guò)指針偏移提取出下 載資源ID。緩存報(bào)文功能實(shí)現(xiàn)本發(fā)明設(shè)計(jì)緩存隊(duì)列,用來(lái)存放識(shí)別出的哈希搜索請(qǐng)求報(bào)文 和索引服務(wù)器返回的報(bào)文。在此發(fā)明中,緩存的使用方式是分離鏈接散列表和先進(jìn)先出的 兩種隊(duì)列。協(xié)議模塊將識(shí)別出來(lái)的哈希搜索請(qǐng)求報(bào)文存進(jìn)分離鏈接散列表中,而將索引服 務(wù)器返回的報(bào)文存進(jìn)先進(jìn)先出隊(duì)列里。本發(fā)明設(shè)計(jì)一個(gè)分離鏈接散列表結(jié)構(gòu)和Queue隊(duì)列。分離鏈接散列表結(jié)構(gòu)主要使 用在哈希搜索請(qǐng)求報(bào)文的存儲(chǔ),由于需要針對(duì)哈希搜索請(qǐng)求報(bào)文進(jìn)行索引,所以使用普通 的線性表結(jié)構(gòu)顯然效率比較低下,而使用基于散列表結(jié)構(gòu)的分離鏈接散列表可以大大增強(qiáng) 它的搜索命中率。只需要給出hash值,再計(jì)算一下所在分離鏈接散列表中線性表鏈的位 置,即可以減小搜索范圍,至于散列表的長(zhǎng)度可以根據(jù)實(shí)際需要來(lái)進(jìn)行取值,當(dāng)節(jié)點(diǎn)數(shù)比較 多時(shí),選用的hash長(zhǎng)度應(yīng)該足夠長(zhǎng),減小每條鏈的長(zhǎng)度,當(dāng)然也不可以過(guò)多,過(guò)多會(huì)占用過(guò) 多的內(nèi)存,從而影響內(nèi)存使用效率。Queue隊(duì)列實(shí)現(xiàn)為靜態(tài)存儲(chǔ)的環(huán)形隊(duì)列,不必每次分配 內(nèi)存,而是一次性分配好一大塊內(nèi)存,環(huán)形地使用,將索引服務(wù)器返回的報(bào)文放進(jìn)Queue隊(duì)列里。發(fā)送報(bào)文功能實(shí)現(xiàn)本發(fā)明中,內(nèi)核與用戶之間通訊使用Netlink。內(nèi)核模塊提取 出哈希搜索報(bào)文的{哈希值,下載資源ID},然后通過(guò)Netlink套接字將提取出的信息傳送 到用戶態(tài)。用戶態(tài)通過(guò)Socket套接字,將用戶態(tài)接受的信息發(fā)送給索引服務(wù)器,等待索引 服務(wù)器返回的信息,再通過(guò)用戶態(tài)傳回給內(nèi)核態(tài)進(jìn)行處理。Netlink套接字的通信依據(jù)是一個(gè)對(duì)應(yīng)于進(jìn)程的標(biāo)識(shí),一般定為該進(jìn)程的ID。當(dāng) 通信的一端處于中斷過(guò)程時(shí),該標(biāo)識(shí)為0。當(dāng)使用Netlink套接字進(jìn)行通信,通信的雙方都 是用戶態(tài)進(jìn)程,則使用方法類似于消息隊(duì)列。但通信雙方有一端是中斷過(guò)程,使用方法則不 同。Netlink套接字的最大特點(diǎn)是對(duì)中斷過(guò)程的支持,它在內(nèi)核空間接收用戶空間數(shù)據(jù)時(shí) 不再需要用戶自行啟動(dòng)一個(gè)內(nèi)核線程,而是通過(guò)另一個(gè)軟中斷調(diào)用用戶事先指定的接收函 數(shù)。當(dāng)Netlink套接字用于內(nèi)核空間與用戶空間的通信時(shí),在用戶空間的創(chuàng)建方法和 一般套接字使用類似,但內(nèi)核空間的創(chuàng)建方法則不同。Netlink套接字實(shí)現(xiàn)此類通信時(shí)創(chuàng)建 的過(guò)程如下步驟一內(nèi)核態(tài)使用netlink_kernel_Create ()創(chuàng)建套接字,并指明接收函數(shù);步驟二 用戶空間進(jìn)程創(chuàng)建套接字,并將進(jìn)程ID發(fā)送至內(nèi)核空間;步驟三內(nèi)核態(tài)接收函數(shù)收到用戶空間進(jìn)程ID ;步驟四用戶空間與內(nèi)核空間可以通信。構(gòu)造報(bào)文功能實(shí)現(xiàn)索引服務(wù)器進(jìn)行檢索,如果有該ID資源,則向協(xié)議分析系統(tǒng) 返回構(gòu)造哈希搜索返回結(jié)果報(bào)文所需的資源節(jié)點(diǎn)列表信息,協(xié)議分析模塊在內(nèi)核中構(gòu)造哈 希搜索返回結(jié)果報(bào)文,傳給阿瑞斯客戶端。構(gòu)造報(bào)文的過(guò)程如下步驟一讀取出當(dāng)前數(shù)據(jù)包的skb結(jié)構(gòu)體oldskb ;步驟二 檢查該數(shù)據(jù)包IP首部的frag_ofT成員,判斷是否是分片包。對(duì)于IP分 片,調(diào)用ip_defrag把它與已經(jīng)收到的IP分片重組,并等待后來(lái)的IP分片,直至形成一個(gè) 完整的IP數(shù)據(jù)包;步驟三檢查TCP校驗(yàn)和是否正確,若不正確則丟棄該數(shù)據(jù)包;步驟四對(duì)截獲的當(dāng)前數(shù)據(jù)包的skb結(jié)構(gòu)體,調(diào)用Skb_COpy_eXpand()函數(shù)重新拷 貝一個(gè)nskb,包括skb結(jié)構(gòu)體和數(shù)據(jù)部分;步驟五更新nskb引用的路由項(xiàng),將當(dāng)前數(shù)據(jù)包的源IP當(dāng)做路由的目的IP,同時(shí) 由數(shù)據(jù)包的目的IP得到去往該源IP的路由;步驟六清除nskb中鏈接跟蹤相關(guān)的內(nèi)容,交換源地址和目的地址的IP和端口, 重新設(shè)置TCP頭部的長(zhǎng)度,TCP數(shù)據(jù)部分改為索引服務(wù)器返回的資源節(jié)點(diǎn)列表信息,并修改 IP頭部中記錄的數(shù)據(jù)包的總長(zhǎng)度;步驟七重新設(shè)置TCP的序列號(hào)和確認(rèn)號(hào),序列號(hào)為原skb中的確認(rèn)號(hào),確認(rèn)號(hào)為 原skb中的序列號(hào)與原TCP數(shù)據(jù)部分長(zhǎng)度的和;步驟八重新計(jì)算TCP校驗(yàn)和,修改IP包的TTL,重新計(jì)算IP數(shù)據(jù)包頭部校驗(yàn)和;步驟九使nskb和oldskb的鏈接記錄關(guān)聯(lián),讓新數(shù)據(jù)包經(jīng)過(guò)NetfiIter的NF_IP_ L0CAL_0UT點(diǎn),然后查路由,最后經(jīng)由NF_IP_P0ST_R0UTING點(diǎn)將數(shù)據(jù)包發(fā)送出去。為方便描述,假定如下網(wǎng)絡(luò)環(huán)境主機(jī)A上安裝阿瑞斯軟件客戶端,在網(wǎng)橋系路上部署阿瑞斯協(xié)議分析系統(tǒng)。主機(jī)A上所有報(bào)文流經(jīng)網(wǎng)橋,從而網(wǎng)橋上的阿瑞斯協(xié)議分析系 統(tǒng)要對(duì)報(bào)文進(jìn)行識(shí)別工作。
      具體實(shí)施方式
      如下1、主機(jī)A打開阿瑞斯客戶端,主機(jī)A連接Internet ;2、阿瑞斯客戶端進(jìn)行搜索并下載,網(wǎng)橋截獲到報(bào)文交由協(xié)議分析系統(tǒng)進(jìn)行分析和 處理,識(shí)別是否是阿瑞斯報(bào)文,以判斷是否進(jìn)行下一步的處理;3、如果是阿瑞斯哈希搜索請(qǐng)求報(bào)文,則提取哈希搜索請(qǐng)求報(bào)文的源地址和下載資 源ID,進(jìn)而由源地址和下載資源ID生成哈希值,哈希值是用來(lái)標(biāo)識(shí)不同用戶的不同文件資 源,協(xié)議分析系統(tǒng)根據(jù)哈希搜索請(qǐng)求報(bào)文的哈希值存儲(chǔ)于分離鏈接散列表里;4、網(wǎng)橋通過(guò)協(xié)議分析系統(tǒng)的發(fā)送報(bào)文功能將哈希值和下載資源ID發(fā)送給索引服 務(wù)器,并等待索引服務(wù)器的返回報(bào)文;5、網(wǎng)橋接收到索引服務(wù)器發(fā)送的資源列表信息以后,將其緩存于先進(jìn)先出的 Queue隊(duì)列中;6、協(xié)議分析系統(tǒng)讀取緩存于Queue隊(duì)列中的報(bào)文,根據(jù)報(bào)文內(nèi)容判斷是否查詢成 功,如果索引服務(wù)器查詢失敗,說(shuō)明內(nèi)網(wǎng)中沒有相關(guān)的下載資源,則通知分離鏈接散列表放 行相應(yīng)的哈希搜索請(qǐng)求報(bào)文;如果索引服務(wù)器查詢成功,說(shuō)明內(nèi)網(wǎng)中有相關(guān)的下載資源,則 根據(jù)索引服務(wù)器返回報(bào)文里的哈希值從分離鏈接散列表中讀取出哈希搜索請(qǐng)求報(bào)文,并結(jié) 合哈希搜索請(qǐng)求報(bào)文的頭部和索引服務(wù)器返回報(bào)文里的資源列表信息構(gòu)造出哈希搜索返 回結(jié)果報(bào)文,協(xié)議分析系統(tǒng)將構(gòu)造的哈希搜索返回結(jié)果報(bào)文返回給阿瑞斯用戶,阿瑞斯客 戶端就可以根據(jù)構(gòu)造的哈希搜索返回結(jié)果報(bào)文里的資源地址進(jìn)行內(nèi)網(wǎng)下載;7、內(nèi)網(wǎng)中無(wú)請(qǐng)求資源的時(shí)候,將哈希搜索請(qǐng)求發(fā)給外網(wǎng)節(jié)點(diǎn)進(jìn)行搜索。8、外網(wǎng)節(jié)點(diǎn)返回哈希搜索結(jié)果報(bào)文返回給阿瑞斯客戶端。
      權(quán)利要求
      一種基于對(duì)等網(wǎng)絡(luò)的阿瑞斯協(xié)議分析系統(tǒng)的實(shí)現(xiàn)方法,其特征在于該協(xié)議分析系統(tǒng)實(shí)現(xiàn)方法包括的步驟為步驟1).進(jìn)行需求分析,對(duì)協(xié)議分析系統(tǒng)需要完成的功能進(jìn)行分析,并生成需求分析文檔;步驟2).按照步驟1的分析文檔設(shè)計(jì)模塊,對(duì)各模塊的功能進(jìn)行詳細(xì)分析,生成各個(gè)模塊之間的邏輯關(guān)系和功能說(shuō)明文檔;步驟3).按照步驟2的文檔,設(shè)計(jì)與實(shí)現(xiàn)協(xié)議分析系統(tǒng)的識(shí)別報(bào)文模塊,在協(xié)議分析系統(tǒng)中識(shí)別效率,影響著整個(gè)系統(tǒng)的工作效率,報(bào)文識(shí)別模塊根據(jù)報(bào)文長(zhǎng)度以及固定位特征字來(lái)協(xié)議識(shí)別對(duì)等網(wǎng)絡(luò)阿瑞斯的網(wǎng)絡(luò)服務(wù)中的哈希搜索請(qǐng)求報(bào)文以及一些相關(guān)交互報(bào)文;步驟4).按照步驟2的文檔,設(shè)計(jì)與實(shí)現(xiàn)協(xié)議分析系統(tǒng)對(duì)識(shí)別后的哈希搜索請(qǐng)求報(bào)文提取相關(guān)信息,并使用套接字通信完成發(fā)送報(bào)文功能模塊的實(shí)現(xiàn)方式;提取報(bào)文模塊是提取哈希搜索請(qǐng)求報(bào)文中的{源地址、下載資源號(hào)}信息,進(jìn)而由源地址和下載資源號(hào)生成哈希值,哈希值是用來(lái)標(biāo)識(shí)不同用戶的不同文件資源;發(fā)送報(bào)文模塊將提取的下載資源號(hào)和生成的哈希值發(fā)送給索引服務(wù)器,并等待索引服務(wù)器返回查詢結(jié)果;步驟5).按照步驟2的文檔,設(shè)計(jì)與實(shí)現(xiàn)協(xié)議分析系統(tǒng)的緩存報(bào)文功能,緩存識(shí)別模塊根據(jù)提取報(bào)文模塊生成的哈希值將相應(yīng)的哈希搜索請(qǐng)求報(bào)文存進(jìn)分離鏈接散列表,而將索引服務(wù)器返回的報(bào)文存進(jìn)先進(jìn)先出隊(duì)列里;步驟6).按照步驟2的文檔,設(shè)計(jì)與實(shí)現(xiàn)協(xié)議分析系統(tǒng)的構(gòu)造報(bào)文功能,構(gòu)造報(bào)文模塊讀取緩存于先進(jìn)先出隊(duì)列中的索引服務(wù)器返回的報(bào)文,根據(jù)返回的報(bào)文內(nèi)容判斷索引服務(wù)器查詢是否成功,如果索引服務(wù)器查詢成功,說(shuō)明內(nèi)網(wǎng)有相關(guān)的下載資源并返回了內(nèi)網(wǎng)中的資源列表,進(jìn)而根據(jù)索引服務(wù)器返回報(bào)文中的哈希值讀取出分離鏈接散列表中相應(yīng)的哈希搜索請(qǐng)求報(bào)文,結(jié)合哈希搜索請(qǐng)求報(bào)文頭部和索引服務(wù)器返回的內(nèi)網(wǎng)資源列表,構(gòu)造出哈希搜索返回結(jié)果報(bào)文,將構(gòu)造的哈希搜索返回結(jié)果報(bào)文發(fā)送給對(duì)等網(wǎng)絡(luò)阿瑞斯的客戶端,阿瑞斯客戶端就可以根據(jù)構(gòu)造的哈希搜索返回結(jié)果報(bào)文里的資源地址進(jìn)行內(nèi)網(wǎng)下載;如果索引服務(wù)器查詢失敗,說(shuō)明內(nèi)網(wǎng)中沒有相關(guān)的下載資源,讀取出分離鏈接散列表中相應(yīng)的哈希搜索請(qǐng)求報(bào)文并將其放行到外網(wǎng),讓其去外網(wǎng)進(jìn)行資源下載。
      全文摘要
      本發(fā)明的目的是提供一種基于對(duì)等網(wǎng)絡(luò)阿瑞斯協(xié)議分析系統(tǒng)及其實(shí)現(xiàn)方法。目前P2P流量成為網(wǎng)絡(luò)負(fù)擔(dān)的問題,可以通過(guò)部署P2P緩存服務(wù)器得到解決,緩存服務(wù)器架構(gòu)中的協(xié)議識(shí)別系統(tǒng),避免了以往協(xié)議分析系統(tǒng)所存在的功耗高,不穩(wěn)定性以及識(shí)別效率低等問題。根據(jù)哈希搜索以及一些交互報(bào)文的應(yīng)用層報(bào)文的大小以及報(bào)文特征字,對(duì)報(bào)文進(jìn)行高效的識(shí)別,然后對(duì)哈希搜索請(qǐng)求報(bào)文進(jìn)行分析并提取{源地址、下載資源號(hào)}信息,將其發(fā)送到索引服務(wù)器,同時(shí)將相應(yīng)哈希搜索請(qǐng)求報(bào)文復(fù)制后緩存于隊(duì)列里,進(jìn)而等待索引服務(wù)器的返回節(jié)點(diǎn)列表信息,最后根據(jù)索引服務(wù)器返回的信息,構(gòu)造哈希搜索返回結(jié)果報(bào)文給對(duì)等網(wǎng)絡(luò)阿瑞斯客戶端。
      文檔編號(hào)H04L29/06GK101854391SQ201010182468
      公開日2010年10月6日 申請(qǐng)日期2010年5月25日 優(yōu)先權(quán)日2010年5月25日
      發(fā)明者徐鶴, 李致遠(yuǎn), 王汝傳, 蔣崢崢, 趙丹, 邵星, 韓志杰 申請(qǐng)人:南京郵電大學(xué)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1