专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »p2p技术 » 如何组建对等网:对等点如何彼此定位 »正文

如何组建对等网:对等点如何彼此定位

来源: 发布时间:星期三, 2008年12月17日 浏览:21次 评论:0
要完成有用工作P2P 应用对等点必须能够彼此发现对方和和对方交互软件Software开发人员 Todd Sundsted 在本文中继续研究 P2P 计算并描述了几种完成这任务(称为发现(discovery))思路方法以及每种思路方法优势和弱点
对等应用种大规模但又是细粒度应用每个对等点都可以进入或退出 — 每个对等点都关注于自己任务在他们短暂活动期间尝试完成布置给它们任务这些任务中大多数都要涉及和其它对等点交互

管理体系结构(对等点在这种体系结构下运作)必须为构成完整 P2P 应用对等点提供许多必要服务在我们 P2P 计算“旅程”中已经讲述了通信和安全性服务(请参阅参考资料);现在是时候来研究对等点发现服务了

对等点发现服务使 P2P 应用对等点能够彼此定位以便相互的间可以交互实现对等点发现服务有多种思路方法我们先从告诉对等点彼此的间存在这种最简单思路方法开始:显式点到点配置

显式点到点配置
显式点到点配置和其说是种真正发现机制还不如说是种用来避免实现发现机制每个存在对等点都知道“居住”在其 P2P 世界中其它对等点

术语点到点(po-to-po)意味着在 P2P 应用每个对等点都知道需要不断和的交互每个对等点并和的相连这种连线不必将每个对等点都连起来 — 将每个对等点和其他各个对等点彼此相连是不太可能 — 但是不这样做(无论是有意和否)将会使某些对等点产生网络盲点

我为本系列文章所构建简单 P2P 应用(请参阅参考资料)使用显式点到点配置每个对等点必须预先配置其它所有对等点地址如果您已经下载并使用了那些代码则您无疑已经经历了忍受这需求所带来挫折 — 配置既单调乏味又容易出错更不用提麻烦了

般而言分布式应用中节点显式点到点配置不能很好地扩展到具有较多节点大型网络那就是为什么分布式计算应用和技术总是(也有些显著例外)包含命名和定位功能这也解释了为什么域名系统(DNS) — 种分布式命名系统最终取代了用于机器命名主机文件(hosts file)机制维护主机文件是单调乏味、容易出错并且般来说很难在大型网络环境下运转

但是显式点到点配置并非无是处点到点寻址缺乏灵活性特性也带来了定程度安全性通过对网络中每个对等点预先设置它所知道并且将要和的交互对等点列表使得网络在外部攻击面前表现得很稳固

动态发现模型
和显式点到点配置思路方法静态特性截然相反目录服务和网络模型具有动态特性这些模型通常能更好地符合 P2P 应用它们倾向于该领域中动态

在下面几节中我们将研究 3种区别机制对等点通过这些机制动态地定位其它对等点和了解它自身所属环境

目录服务模型
在目录服务模型中台或多台有特殊用途服务器为对等点提供目录服务为了使可扩展性最大化对应用进行了结构化设计以便少量目录就可以为数量众多对等点服务对等点向目录服务注册有关自身信息(其名称、地址、资源和元数据)并通过根据目录服务器中信息查询使用目录服务来定位其它对等点

图 1 介绍说明了个使用目录来向对等点提供位置和命名服务 P2P 体系结构目录本身可以是对等点(尽管是很庞大对等点)或者可以只担当目录而不作它用

图 1目录服务模型



目录有两种类型这两种类型其目录集中式管理程度区别而有略微差别

P2P 领域中目录模型最佳举例是 Napster 和和 Napster 几乎 OpenNap在 Napster 模型中采用集中式管理目录虽然采用集中式管理目录遭到“本质上是‘非 P2P’”指责并且事实上促使了 Napster 被弃用但它确实提供了个重要优势:集中式管理使它容易确保服务器硬件和配置能足以达到服务质量目标

如果我们先暂时将 P2P 放可以发现 DNS 是分散式目录个优秀举例和因特网本身相似DNS 设计为甚至在部分网络受到严重破坏情况下仍能工作DNS 目录采用层次化结构根目录代表顶级域(譬如“com”)它将子域查询服务(如“etcee.com”这样域)任务委派到下层次 DNS 服务器

在任意种情况下只有目录位置必须配置到每个对等点中这对于点到点模型有重要优势为加入到 P2P对等点将自己注册到集中目录服务器回忆上面当对等点 A 希望和个它不知道位置对等点交互时对等点 A 向目录服务器发送请求然后目录服务器向 A 返回那个对等点位置

网络模型
图 2 介绍说明了另种 P2P 应用它由许多对等点组成这些对等点在功能上很类似没有专门目录服务器对等点必须使用它们所在网络来定位其它对等点

图 2网络模型



正如名称所暗示网络模型 P2P 应用些(通常是动态)对等点组成没有个对等点知道整个网络结构或者组成网络每个对等点身份相反对等点只知道直接和它们通信对等点 — 它们通过代理参和到大型网络中

对等点必须合作完成任务在许多环境中这种合作包括支持分布式查询、分布式消息传递甚至包括认证和授权行为涉及通信量多少象文件传输这样需要大流量网络操作通常在对等点间直接发生 — 而不是通过对等点网络

研究上面图 2 中网络当对等点 A 希望知道网络中另个对等点位置时它就发出个查询请求并传递给邻居这些邻居尝试满足这个请求如果这些邻居不能完全满足这个请求就将请求传递给它们邻居以此类推

要加入网络个对等点要找到愿意接受它为邻居个对等点但是当对等点本身还不是网络部分时它如何找到网络中个对等点呢?

个可能解决方案是向这个对等点提供个对等点列表让其检查对等点设法联系列表上对等点直到个或多个对等点接受它为邻居这个解决方案听起来很象点到点模型是不是?正如最初 Gnutella 用户所证明那样这个解决方案只是定程度上有效 P2P 网络(尤其是 Gnutella)动态性很强任何静态列表都不太可能长期有效

步研究 Gnutella 这种环境中解决方案是很有趣Gnutella 实现首先将这样开始:当其它对等点通过网络传播发送请求时Gnutella 捕获并持久地存储这些对等点位置当这些客户机关闭后又重新启动时它试图连接每个先前标识对等点直到找到个或多个仍在运行

这种思路方法虽然自动化程度很高但是脆弱而且低效后来通过添加对从中央缓存Cache下载活动对等点列表支持(请参阅参考资料以获得举例)改进了这种模式下客户机

这种模型个有趣方面是在支持对等点发现过程中组成网络对等点担任了非常活跃角色正如我们即将看到活动对等点参和并不是必要条件

多播(multicast)模型
除了网络中节点不必协助发现以外多播模型和网络模型很相似这种模型利用网络自身提供特性来定位和确认对等点和资源这种技术实现(Sun Microsystems Project Jxta 是个极佳举例;有关 Jxta更多信息请参阅参考资料)使用 IP 多播来实现查询

不象单播(unicast) IP 数据报 — 台主机最多只能向台主机发送数据报多播 IP 数据报可以同时发往多台主机更重要发送方不必知道有多少接收方存在或者究竟有没有接收方存在发送主机只是封装消息并将它发布到网络上所有调整到适当频道(特殊 IP 地址和端口号组合)客户机将接收到该消息个副本

使用 IP 多播技术发现通过让对等点用多播定期宣布自己存在来工作该消息包含对等点 TCP/IP 主机名和端口号对此消息感兴趣对等点检测这个消息后抽取出主机名和端口号并使用这个信息和新对等点建立正常 TCP/IP 连接

这就是多播是如何在单个子网上工作众多子网(组成整个网络)间路由多播通信是完全区别并且是个非常复杂课题这也是基于 IP 多播发现主要局限没有路由器支持基于 IP 多播发现被局限在同子网上对等点的间不幸因特网对多播并不友好通常因特网(或大型内部网)上发现由跨网络边界特殊对等点将消息复制到另个网络中来实现

结束语
P2P 应用对等点发现是个有趣话题下个月我们将研究使用 IP 多播来查找活动对等点对等点发现实现这个简单 P2P 应用代码附加部分将消除个最大问题 — 对等点点到点配置
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: