【正文】
uperNode SNAPT A 外網(wǎng)IP:內(nèi)網(wǎng)IP: NAPT B外網(wǎng)IP:內(nèi)網(wǎng)IP:Node A:4000Node B:5000首先,節(jié)點A登錄P2P網(wǎng)絡,它的內(nèi)網(wǎng)地址是192.168.0.2,使用端口4000與NAPT A建立會話,NAPT的外網(wǎng)IP地址是219.144.35.24,當節(jié)點A想與超節(jié)點S進行通信時,NAPTA為它們的會話分配端口40000,那么超節(jié)點S收到的節(jié)點A的地址是219.144.35.24:40000,這個地址就是節(jié)點A的外網(wǎng)地址。相同的,節(jié)點B通過NAPT B與超節(jié)點S連接,它的外網(wǎng)地址是202.114.175.85:50000。當節(jié)點A和節(jié)點B的外部網(wǎng)絡地址確定后,它們就可以從超節(jié)點那里獲得對方的網(wǎng)絡地址,建立起連接。但連接的建立并不那么順利,當節(jié)點A試圖給節(jié)點B發(fā)送消息或數(shù)據(jù)時,首先要通過NAPT B,由于防火墻或其他安全設置的存在,NAPT B會認為這是一個不合法的數(shù)據(jù),將其丟棄。那么如何才能建立起連接呢,這需要超節(jié)點S再做一次服務,超節(jié)點收到了A想向B連接的消息,它會向節(jié)點B發(fā)送一個命令,告訴B節(jié)點A將與它連接,這一過程稱之為打洞,這樣NAPT B就會認為從節(jié)點A傳過來的消息是合法的,節(jié)點A發(fā)送到節(jié)點B的信息就會收到了。這里舉的一個例子是兩個內(nèi)網(wǎng)節(jié)點在同一超節(jié)點管理的聚簇中,若兩個節(jié)點處于不同的超節(jié)點管轄范圍內(nèi)時原理是一樣的,只不過中間多了個超節(jié)點的消息轉(zhuǎn)發(fā)過程。在程序的實現(xiàn)上將“打洞”過程分為客戶端和服務器端??蛻舳丝谶\行在內(nèi)網(wǎng)節(jié)點上,服務器端運行在超節(jié)點上。服務器端主要是通過開辟一個線程接收節(jié)點的入網(wǎng)和退網(wǎng)消息,轉(zhuǎn)發(fā)節(jié)點的連接請求??蛻舳酥饕窃谟脩暨x擇資源下載源后向此節(jié)點發(fā)送打洞請求消息和開啟線程監(jiān)聽是否有打洞消息或發(fā)送了打洞請求消息后是否成功。(三)節(jié)點間文件傳輸?shù)膶崿F(xiàn)斷點續(xù)傳[4][11]在實際網(wǎng)絡的傳輸過程中,總會因為各種原因讓文件的下載被終止,如果因為終止而使已經(jīng)下載的資源被廢棄,會造成大量的浪費,使用斷點續(xù)傳技術(shù)能很好地解決這一問題。斷點續(xù)傳的思想其實比較簡單,在下載文件的同時生成一個臨時文件,文件中記載如下幾個信息:(1)文件名,包括擴展名;(2)文件的大??;(3)文件保存的地址;(4)文件的分塊情況,包括塊的大小,每一塊已經(jīng)下載的百分比,每一塊下載的源節(jié)點地址(為了方便下次繼續(xù)下載,節(jié)省了搜索時間,若連接不上則重新搜索);(5)總的下載的百分比;(6)文件下載已用時等。一旦文件停止下載,臨時文件保存上述信息,下次重新下載時先讀取文件的相關信息,獲取文件塊的偏移量,從偏移量處繼續(xù)下載。當文件總的下載百分比為100%時,文件自行刪除。多線程下載[4]在平時下載過程中我們常會有多線程的設罱,如果要使用多線程下載,比如要分5個線程同時下載,我們可以把需下載的文件分成5個文件塊。分成5個文件塊,并不是把文件的內(nèi)容分別存放到5個不同的緩沖區(qū)里。而是生成5個不同的文件偏移量。在系統(tǒng)中,文件大小的劃分除了最后一塊,前面的均是相同大小的,程序根據(jù)文件劃分的情況分別建立線程連接下載源,每個線程為下載的數(shù)據(jù)建立緩沖區(qū),當緩沖區(qū)滿時將所收到的數(shù)據(jù)寫入文件相應的偏移位置。使用多線程進行下載還要注意網(wǎng)絡并發(fā)控制的問題。網(wǎng)絡并發(fā)是指在網(wǎng)絡通信過程中服務器或者客戶端同時出現(xiàn)多個網(wǎng)絡事件或者請求等待響應和處理的過程。網(wǎng)絡并發(fā)控制則是對該現(xiàn)象所采取的對應的措施,避免網(wǎng)絡事件無法及時響應和處理,同時保證網(wǎng)絡數(shù)據(jù)的安全性和一致性。六、總結(jié)通過對P2P應用技術(shù)的深入研究, 闡述了P2P技術(shù)的基本概念、特點以及發(fā)展現(xiàn)狀;根據(jù)P2P技術(shù)的應用現(xiàn)狀,并結(jié)合所讀文獻,剖析了P2P文件共享系統(tǒng)涉及到的相關理論知識,包括網(wǎng)絡模型、資源的共享和搜索、文件下載等。列出目前比較常用的4種資源定位與搜索方法:Chord、CAN、Tapestry和Pastry,剖析并比較了幾種方法的網(wǎng)絡結(jié)構(gòu)和路由策略;完成了P2P文件共享系統(tǒng)的詳細設計,包括網(wǎng)絡結(jié)構(gòu)的組織、文件定位與搜索、節(jié)點間連接的建立和系統(tǒng)內(nèi)數(shù)據(jù)的傳輸。網(wǎng)絡結(jié)構(gòu)的組織包括區(qū)域的劃分和超節(jié)點的選擇。文件定位與搜索采用改進的Chord和洪泛相結(jié)合的方法,在聚簇內(nèi)使用Chord算法,超節(jié)點之間采用改進的洪泛方法。節(jié)點間連接的建立主要涉及到了處于內(nèi)網(wǎng)的節(jié)點間信息的交互,主要使用UDP打洞的方式。數(shù)據(jù)傳輸部分包括文件的斷點續(xù)傳、文件的分塊和多線程下載??偟膩碚f,本文基本描述了P2P技術(shù)在文件共享系統(tǒng)中的應用,為今后網(wǎng)絡教學平臺的設計提供了有效的技術(shù)支持。參考文獻[1]羅杰文.PeertoPeer(P2P)綜述[Z].中科院計算機研究所.2005(11):6566[2]K Kant,R lyer,V Tewari.A Framework for Classifying PeertoPeer Technologies.Proc.of 2ndIEEE/ACM International Symposium on ClusterComputing and the Grid(CCGRID.02),IEEE Sooety Press,May 2002,368376[3]MorHarcholalter,TOM Leighton,Daniel Lwdn.Resource discovery in distributed netorks[C].1 8 Annual ACMSIG ACT/SIGOPS Symposium on Principles of Distributed ComputingAtlanta.May 1 999,229238[4]KDT.點對點文件傳輸軟件橫向比較[J].計算機與網(wǎng)絡,2003(21)[5]互聯(lián)網(wǎng)實驗室.P2P的現(xiàn)狀及發(fā)展趨勢[Z].2004.8[6]程黎艷.P2P網(wǎng)絡模型研究[J].軟件導刊,2008,7(3):3941[7]賴坤鋒.基于DHT的P2P復雜搜索機制的設計與實現(xiàn)[D]:[碩士學位論文].成都:電子科[8]B.Yang and H.GarciaMolina.Designing a Superpeer Network[R].Technical report,stanforduniversity,2002.[9]萬仲保,王寶榮,蔡俊.典型DHT拓撲結(jié)構(gòu)的研究[J].華東交通大學學報,2008,25(1):57—60[10]Stoica I,Morris R,Karger D,et a1.Chord:A scalable PeertoPeer lookup service forInternet applications[A].Proceedings of ACM SIGCOMM’01[C].San Diego,CA,USA,2001[11]Maymounkov P,Mazieres D.A peertopeer information system based on the XOR metric[C].New York:ACM press,2002:53—65[12]Rainasamy S,F(xiàn)rancis P,Handley M,et a1.A scalable contentaddressable network[A].Proceedings of ACM SIGCOMM’01[C].USA,2001[13]莊雷,潘春建,邦永強等.Gnutella網(wǎng)絡的連接管理[J].軟件學報,2005,16(1):158164[14]James F.Kurose Keith W.Ross Computer Networking A TOPDOWN APPROACH FEATURING THE INTERNET[C].Pearson Education,2005.[15]李敏,徐林.BT通信中數(shù)據(jù)下載的分析和實現(xiàn)[J].計算機與信息技術(shù),2008(12):81—83[16]劉云,馬義忠.Chord算法性能及優(yōu)化策略分析[J].計算機工程與設計,2008,29(21):54545456[17]郭良敏,楊壽保,郭磊濤.P2P網(wǎng)絡中基于區(qū)域劃分的超節(jié)點選取機制[J]小型微型計算機系統(tǒng),2008,29(2):208231[18]龐傲楓,李克清.P2P通信之NAT穿透方法研究[J].網(wǎng)絡通訊與安全,2007(8):389420致謝論文能夠順利完成,需要感謝曹曉軍老師,在他的細心指導和引領下,我深刻的了解了有關論文方面的知識,才得以將此篇論文完成。同時也感謝我的同學和家人,在我遇到困難時,對我的大力支持和鼓勵,感謝這幾年來傳授我們知識和培養(yǎng)我們能力的老師們,感謝蘭州商學院信息工程學院的各位老師對我的學習、生活上的指導和幫助。33