麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

對(duì)等點(diǎn)如何彼此定位實(shí)現(xiàn)交互功能

2019-11-18 13:17:59
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  要完成有用的工作,P2P 應(yīng)用程序中的對(duì)等點(diǎn)必須能夠彼此發(fā)現(xiàn)對(duì)方和與對(duì)方交互。軟件開(kāi)發(fā)人員 Todd Sundsted 在本文中繼續(xù)研究 P2P 計(jì)算,并描述了幾種完成這一任務(wù)(稱為發(fā)現(xiàn)(discovery))的方法,以及每種方法的優(yōu)勢(shì)和弱點(diǎn)。
  
  對(duì)等應(yīng)用程序是一種大規(guī)模但又是細(xì)粒度的應(yīng)用程序。每個(gè)對(duì)等點(diǎn)都可以進(jìn)入或退出 — 每個(gè)對(duì)等點(diǎn)都關(guān)注于自己的任務(wù)。在他們短暫的活動(dòng)期間,嘗試完成布置給它們的任務(wù)。這些任務(wù)中的大多數(shù)都要涉及與其它對(duì)等點(diǎn)交互。
  
  治理體系結(jié)構(gòu)(對(duì)等點(diǎn)在這種體系結(jié)構(gòu)下運(yùn)作)必須為構(gòu)成完整 P2P 應(yīng)用程序的對(duì)等點(diǎn)提供許多必要的服務(wù)。在我們的 P2P 計(jì)算“旅程”中,已經(jīng)講述了通信和安全性服務(wù)(請(qǐng)參閱參考資料);現(xiàn)在是時(shí)候來(lái)研究對(duì)等點(diǎn)發(fā)現(xiàn)服務(wù)了。
  
  對(duì)等點(diǎn)發(fā)現(xiàn)服務(wù)使 P2P 應(yīng)用程序中的對(duì)等點(diǎn)能夠彼此定位以便相互之間可以交互。實(shí)現(xiàn)對(duì)等點(diǎn)發(fā)現(xiàn)服務(wù)有多種方法。我們先從告訴對(duì)等點(diǎn)彼此之間的存在這種最簡(jiǎn)單的方法開(kāi)始:顯式點(diǎn)到點(diǎn)配置。
  
  顯式點(diǎn)到點(diǎn)配置
  顯式點(diǎn)到點(diǎn)配置與其說(shuō)是一種真正的發(fā)現(xiàn)機(jī)制,還不如說(shuō)是一種用來(lái)避免實(shí)現(xiàn)發(fā)現(xiàn)的機(jī)制。每個(gè)存在的對(duì)等點(diǎn)都知道“居住”在其 P2P 世界中的其它對(duì)等點(diǎn)。
  
  術(shù)語(yǔ)點(diǎn)到點(diǎn)(point-to-point)意味著,在 P2P 應(yīng)用程序中的每個(gè)對(duì)等點(diǎn)都知道需要不斷與之交互的每個(gè)對(duì)等點(diǎn),并與之相連。這種連線不必將每個(gè)對(duì)等點(diǎn)都連起來(lái) — 將每個(gè)對(duì)等點(diǎn)和其他各個(gè)對(duì)等點(diǎn)彼此相連,是不太可能的 — 但是,不這樣做(無(wú)論是有意與否)將會(huì)使某些對(duì)等點(diǎn)產(chǎn)生網(wǎng)絡(luò)盲點(diǎn)。
  
  我為本系列文章所構(gòu)建的簡(jiǎn)單的 P2P 應(yīng)用程序(請(qǐng)參閱參考資料)使用顯式點(diǎn)到點(diǎn)配置。每個(gè)對(duì)等點(diǎn)必須預(yù)先配置其它所有對(duì)等點(diǎn)的地址。假如您已經(jīng)下載并使用了那些代碼,則您無(wú)疑已經(jīng)經(jīng)歷了忍受這一需求所帶來(lái)的挫折 — 配置既單調(diào)乏味又輕易出錯(cuò),更不用提一般的麻煩了。
  
  一般而言,分布式應(yīng)用程序中節(jié)點(diǎn)的顯式點(diǎn)到點(diǎn)配置不能很好地?cái)U(kuò)展到具有較多節(jié)點(diǎn)的大型網(wǎng)絡(luò)。那就是為什么分布式計(jì)算應(yīng)用程序和技術(shù)總是(也有一些顯著的例外)包含命名和定位功能。這也解釋了為什么域名系統(tǒng)(DNS) — 一種分布式命名系統(tǒng),最終取代了用于機(jī)器命名的主機(jī)文件(hosts file)機(jī)制。維護(hù)主機(jī)文件是單調(diào)乏味、輕易出錯(cuò)的,并且一般來(lái)說(shuō),很難在大型網(wǎng)絡(luò)環(huán)境下運(yùn)轉(zhuǎn)。
  
  但是,顯式點(diǎn)到點(diǎn)配置并非一無(wú)是處。點(diǎn)到點(diǎn)尋址缺乏靈活性的特性也帶來(lái)了一定程度的安全性。通過(guò)對(duì)網(wǎng)絡(luò)中的每個(gè)對(duì)等點(diǎn)預(yù)先設(shè)置它所知道并且將要與之交互的對(duì)等點(diǎn)列表,使得網(wǎng)絡(luò)在外部攻擊面前表現(xiàn)得很穩(wěn)固。
  
  動(dòng)態(tài)發(fā)現(xiàn)模型
  與顯式點(diǎn)到點(diǎn)配置方法的靜態(tài)特性截然相反,目錄服務(wù)和網(wǎng)絡(luò)模型具有動(dòng)態(tài)特性。這些模型通常能更好地符合 P2P 應(yīng)用程序,它們傾向于該領(lǐng)域中動(dòng)態(tài)的一邊。
  
  在下面幾節(jié)中,我們將研究三種不同的機(jī)制,對(duì)等點(diǎn)通過(guò)這些機(jī)制動(dòng)態(tài)地定位其它對(duì)等點(diǎn)和了解它自身所屬的環(huán)境。
  
  目錄服務(wù)模型
  在目錄服務(wù)模型中,一臺(tái)或多臺(tái)有非凡用途的服務(wù)器為對(duì)等點(diǎn)提供目錄服務(wù)。為了使可擴(kuò)展性最大化,對(duì)應(yīng)用程序進(jìn)行了結(jié)構(gòu)化設(shè)計(jì),以便少量的目錄就可以為數(shù)量眾多的對(duì)等點(diǎn)服務(wù)。對(duì)等點(diǎn)向目錄服務(wù)注冊(cè)關(guān)于自身的信息(其名稱、地址、資源和元數(shù)據(jù)),并通過(guò)根據(jù)目錄服務(wù)器中信息的查詢,使用目錄服務(wù)來(lái)定位其它對(duì)等點(diǎn)。
  
  圖 1 說(shuō)明了一個(gè)使用目錄來(lái)向?qū)Φ赛c(diǎn)提供位置和命名服務(wù)的 P2P 體系結(jié)構(gòu)。目錄本身可以是對(duì)等點(diǎn)(盡管是很龐大的對(duì)等點(diǎn)),或者可以只擔(dān)當(dāng)目錄而不作它用。
  
  圖 1,目錄服務(wù)模型
  
 對(duì)等點(diǎn)如何彼此定位實(shí)現(xiàn)交互功能(圖一)

  目錄有兩種類型。這兩種類型因?yàn)槠淠夸浖惺街卫淼某潭炔煌新晕⒌牟顒e。
  
  P2P 領(lǐng)域中目錄模型的最佳示例是 Napster 和與 Napster 幾乎一模一樣的 OpenNap。在 Napster 模型中,采用集中式治理目錄。雖然,采用集中式治理的目錄遭到“本質(zhì)上是‘非 P2P’”的指責(zé),并且事實(shí)上促使了 Napster 被棄用,但它確實(shí)提供了一個(gè)重要的優(yōu)勢(shì):集中式治理使它輕易確保服務(wù)器硬件和配置能足以達(dá)到服務(wù)質(zhì)量目標(biāo)。
  
  假如我們先暫時(shí)將 P2P 放一放,可以發(fā)現(xiàn) DNS 是分散式目錄的一個(gè)優(yōu)秀示例。與因特網(wǎng)本身相似,DNS 設(shè)計(jì)為甚至在部分網(wǎng)絡(luò)受到嚴(yán)重破壞的情況下仍能工作。DNS 目錄采用層次化結(jié)構(gòu),根目錄代表頂級(jí)域(譬如“com”),它將子域查詢服務(wù)(如“etcee.com”這樣的域)的任務(wù)委派到下一層次的 DNS 服務(wù)器。
  
  在任意一種情況下,只有目錄位置必須配置到每個(gè)對(duì)等點(diǎn)中,這對(duì)于點(diǎn)到點(diǎn)模型有重要優(yōu)勢(shì)。為加入到 P2P,對(duì)等點(diǎn)將自己注冊(cè)到集中目錄服務(wù)器。回憶上面的圖。當(dāng)對(duì)等點(diǎn) A 希望與一個(gè)它不知道位置的對(duì)等點(diǎn)交互時(shí),對(duì)等點(diǎn) A 向目錄服務(wù)器發(fā)送請(qǐng)求。然后,目錄服務(wù)器向 A 返回那個(gè)對(duì)等點(diǎn)的位置。
  
  網(wǎng)絡(luò)模型
  圖 2 說(shuō)明了另一種 P2P 應(yīng)用程序。它由許多對(duì)等點(diǎn)組成,這些對(duì)等點(diǎn)在功能上很類似。沒(méi)有專門的目錄服務(wù)器。對(duì)等點(diǎn)必須使用它們所在的網(wǎng)絡(luò)來(lái)定位其它對(duì)等點(diǎn)。
  
  圖 2,網(wǎng)絡(luò)模型
  
對(duì)等點(diǎn)如何彼此定位實(shí)現(xiàn)交互功能(圖二)

  正如名稱所暗示的,網(wǎng)絡(luò)模型 P2P 應(yīng)用程序由一些(通常是動(dòng)態(tài)的)對(duì)等點(diǎn)組成。沒(méi)有一個(gè)對(duì)等點(diǎn)知道整個(gè)網(wǎng)絡(luò)的結(jié)構(gòu)或者組成網(wǎng)絡(luò)的每個(gè)對(duì)等點(diǎn)的身份。相反,對(duì)等點(diǎn)只知道直接與它們通信的對(duì)等點(diǎn) — 它們通過(guò)代理參與到大型網(wǎng)絡(luò)中。
  
  對(duì)等點(diǎn)必須合作完成任務(wù)。在許多環(huán)境中這種合作包括支持分布式查詢、分布式消息傳遞,甚至包括認(rèn)證和授權(quán)行為。因?yàn)樯婕巴ㄐ帕康亩嗌伲笪募鬏斶@樣需要大流量的網(wǎng)絡(luò)操作通常在對(duì)等點(diǎn)間直接發(fā)生 — 而不是通過(guò)對(duì)等點(diǎn)的網(wǎng)絡(luò)。
  
  思考上面圖 2 中的網(wǎng)絡(luò)。當(dāng)對(duì)等點(diǎn) A 希望知道網(wǎng)絡(luò)中另一個(gè)對(duì)等點(diǎn)的位置時(shí),它就發(fā)出一個(gè)查詢請(qǐng)求并傳遞給鄰居。這些鄰居嘗試滿足這個(gè)請(qǐng)求。假如這些鄰居不能完全滿足這個(gè)請(qǐng)求,就將請(qǐng)求傳遞給它們的鄰居,以此類推。
  
  要加入網(wǎng)絡(luò),一個(gè)對(duì)等點(diǎn)要找到愿意接受它為鄰居的另一個(gè)對(duì)等點(diǎn)。但是,當(dāng)對(duì)等點(diǎn)本身還不是網(wǎng)絡(luò)的一部分時(shí),它如何找到網(wǎng)絡(luò)中的另一個(gè)對(duì)等點(diǎn)呢?
  
  一個(gè)可能的解決方案是向這個(gè)對(duì)等點(diǎn)提供一個(gè)對(duì)等點(diǎn)列表,讓其檢查。對(duì)等點(diǎn)設(shè)法聯(lián)系列表上的對(duì)等點(diǎn)直到一個(gè)或多個(gè)對(duì)等點(diǎn)接受它為鄰居。這個(gè)解決方案聽(tīng)起來(lái)很象點(diǎn)到點(diǎn)模型,是不是?正如最初 Gnutella 用戶所證實(shí)的那樣,這個(gè)解決方案只是一定程度上有效。因?yàn)?P2P 網(wǎng)絡(luò)(尤其是 Gnutella)動(dòng)態(tài)性很強(qiáng),任何靜態(tài)列表都不太可能長(zhǎng)期有效。
  
  進(jìn)一步研究 Gnutella 這種環(huán)境中的解決方案是很有趣的。Gnutella 實(shí)現(xiàn)首先將這樣開(kāi)始:當(dāng)其它對(duì)等點(diǎn)通過(guò)網(wǎng)絡(luò)傳播發(fā)送請(qǐng)求時(shí),Gnutella 捕捉并持久地存儲(chǔ)這些對(duì)等點(diǎn)的位置。當(dāng)這些客戶機(jī)關(guān)閉后又重新啟動(dòng)時(shí),它試圖連接每個(gè)先前標(biāo)識(shí)的對(duì)等點(diǎn)直到找到一個(gè)或多個(gè)仍在運(yùn)行。
  
  這種方法,雖然自動(dòng)化程度很高,但是脆弱而且低效。后來(lái),通過(guò)添加對(duì)從中心緩存下載活動(dòng)對(duì)等點(diǎn)的列表的支持(請(qǐng)參閱參考資料以獲得示例),改進(jìn)了這種模式下的客戶機(jī)。
  
  這種模型的一個(gè)有趣的方面是,在支持對(duì)等點(diǎn)發(fā)現(xiàn)的過(guò)程中,組成網(wǎng)絡(luò)的對(duì)等點(diǎn)擔(dān)任了非常活躍的角色。正如我們即將看到的,活動(dòng)對(duì)等點(diǎn)的參與并不是必要條件。
  
  多播(multicast)模型
  除了網(wǎng)絡(luò)中的節(jié)點(diǎn)不必協(xié)助發(fā)現(xiàn)以外,多播模型和網(wǎng)絡(luò)模型很相似。這種模型利用網(wǎng)絡(luò)自身提供的特性來(lái)定位和確認(rèn)對(duì)等點(diǎn)和資源。這種技術(shù)的實(shí)現(xiàn)(Sun Microsystems 的 PRoject Jxta 是一個(gè)極佳的示例;有關(guān) Jxta的更多信息,請(qǐng)參閱參考資料)使用 ip 多播來(lái)實(shí)現(xiàn)查詢。
  
  不象單播(unicast) IP 數(shù)據(jù)報(bào) — 一臺(tái)主機(jī),最多只能向一臺(tái)主機(jī)發(fā)送數(shù)據(jù)報(bào),多播 IP 數(shù)據(jù)報(bào)可以同時(shí)發(fā)往多臺(tái)主機(jī)。更重要的是,發(fā)送方不必知道有多少接收方存在或者究竟有沒(méi)有接收方存在。發(fā)送主機(jī)只是封裝消息并將它發(fā)布到網(wǎng)絡(luò)上。所有調(diào)整到適當(dāng)頻道(非凡 IP 地址和端口號(hào)的組合)的客戶機(jī)將接收到該消息的一個(gè)副本。
  
  使用 IP 多播技術(shù)的發(fā)現(xiàn)通過(guò)讓對(duì)等點(diǎn)用多播定期公布自己的存在來(lái)工作。該消息包含對(duì)等點(diǎn)的 TCP/IP 主機(jī)名和端口號(hào)。對(duì)此消息感愛(ài)好的對(duì)等點(diǎn)檢測(cè)這個(gè)消息后,抽取出主機(jī)名和端口號(hào),并使用這個(gè)信息與新對(duì)等點(diǎn)建立正常的 TCP/IP 連接。
  
  這就是多播是如何在單個(gè)子網(wǎng)上工作的。眾多子網(wǎng)(組成整個(gè)網(wǎng)絡(luò))間的路由多播通信是完全不同的,并且是一個(gè)非常復(fù)雜的課題。這也是基于 IP 多播的發(fā)現(xiàn)的主要局限。沒(méi)有路由器的支持,基于 IP 多播的發(fā)現(xiàn)被局限在同一子網(wǎng)上的對(duì)等點(diǎn)之間。不幸的是,因特網(wǎng)對(duì)多播并不友好。通常,因特網(wǎng)(或大型內(nèi)部網(wǎng))上的發(fā)現(xiàn)由跨網(wǎng)絡(luò)邊界的非凡對(duì)等點(diǎn)將消息復(fù)制到另一個(gè)網(wǎng)絡(luò)中來(lái)實(shí)現(xiàn)。
  
  結(jié)束語(yǔ)
  P2P 應(yīng)用程序的對(duì)等點(diǎn)發(fā)現(xiàn)是一個(gè)有趣的話題。下個(gè)月,我們將研究使用 IP 多播來(lái)查找活動(dòng)對(duì)等點(diǎn)的對(duì)等點(diǎn)發(fā)現(xiàn)的實(shí)現(xiàn)。這個(gè)簡(jiǎn)單 P2P 應(yīng)用程序代碼的附加部分將消除一個(gè)最大的問(wèn)題 — 對(duì)等點(diǎn)的點(diǎn)到點(diǎn)配置。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产精品久久久久久久不卡 | 久久久久国产精品久久久久 | 亚洲va久久久噜噜噜久牛牛影视 | 免费久久久 | 国产电影精品久久 | 今井夏帆av一区二区 | 久久艹精品视频 | 国产成人精品一区二区仙踪林 | 国产成人77亚洲精品www | 九九热免费观看 | 91精品国产综合久久婷婷香蕉 | 在线 日本 制服 中文 欧美 | 亚洲网站在线观看 | 羞羞答答影院 | 欧美一页| 毛片一级免费看 | 国产一区二区三区在线免费观看 | 一级电影在线免费观看 | 激情大乳女做爰办公室韩国 | 爽妇网国产精品 | 成人性生活视频 | 正在播放91 | av在线更新| 4p一女两男做爰在线观看 | 国产精品视频一区二区三区四区五区 | 欧洲伊人网 | 色视频在线播放 | 91九色视频在线播放 | 免费观看黄视频 | 午夜视频在线观 | 成人不卡一区二区 | 久久久久久久久日本理论电影 | 黄色网址免费在线 | 9999免费视频 | 欧美日韩激情 | 毛片在线免费视频 | 久久av免费观看 | 日本欧美一区二区三区在线播 | 99在线精品视频免费观看20 | 国产资源在线观看视频 | 一区二区三区日韩电影 |