纯P2P在私网中的应用

来源 :计算机时代 | 被引量 : 0次 | 上传用户:zhjie1977
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:随着网络的迅速发展,P2P技术逐渐显现它的优势。网络规模的膨胀,产生了很多规模庞大的私网,私网內部需要很方便的信息交换的方法。文章提出在私网中应用纯P2P技术来交换信息和传送文件,并针对以往纯P2P无法实现管理的问题提出了具体的解决方案。该方案可自动搜索在线用户,具有很快的收敛速度,用户不需要知道对方的IP地址即可与对方交流。
  关键词:P2P;纯P2P网络;广播;收敛算法
  
  引言
  
  P2P是peer-to-peer的缩写,peer在英语里有“(地位、能力等)同等者”、“同事”和“伙伴”等意义。因此,P2P可以理解为“伙伴对伙伴”的意思,或称为对等联网。目前人们认为它在加强网络上人的交流、文件交换、分布计算等方面大有前途。
  简单地说,P2P直接将人们联系起来,让人们通过互联网直接交互。P2P使得人们可以直接连接到其他用户的计算机上,互相交换文件,而不必像过去那样需要连接到服务器。P2P另一个重要特点是改变目前互联网以大网站为中心的状态、重返“非中心化”,并把权力交还给用户。但是正如B2C、B2B是将现实世界中很平常的东西移植到互联网上一样,P2P并不是什么新东西,在现实生活中我们每天都按照P2P模式面对面地或者通过电话交流和沟通。
  
  1、P2P技术体系结构与分类
  
  P2P技术有三种结构模式的体系结构,即以Napster为代表的集中目录式结构、以Gnutella为代表的纯P2P网络结构和混合式P2P网络结构。从P2P技术的分代来说,到目前为止P2P技术可分为四代:第一代P2P为中央控制网络体系结构,第二代P2P为分散分布网络体系结构,第三代P2P为混合网络体系结构,第四代P2P为目前发展中P2P技术。
  集中目录式结构由中央服务器管理P2P各节点,P2P节点向中央目录服务器注册关于自身的信息(名称、地址、资源和元数据),但所有内容存贮在各个节点中而并非服务器上,查询节点根据目录服务器中信息的查询以及网络流量和延迟等信息来选择与定位其它对等点并直接建立连接,而不必经过中央目录服务器。集中目录式结构的优点是提高了网络的可管理性,使得对共享资源的查找和更新非常方便;缺点是网络的稳定性不理想,服务器失效则该服务器下的对等节点全部失效。
  纯P2P网络结构也被称作广播式的P2P模型:它没有集中的中央目录服务器,每个用户随机接入网络,并与自己相邻的一组邻居节点通过端到端连接构成一个逻辑覆盖的网络。对等节点之间的内容查询和内容共享都是直接通过相邻节点广播接力传递,同时每个节点还会记录搜索轨迹,以防止搜索环路的产生。纯P2P网络结构解决了网络结构中心化的问题,扩展性和容错性较好。由于没有一个对等节点知道整个网络的结构,网络中的搜索算法以泛洪的方式进行,控制信息的泛滥消耗了大量带宽并很快造成网络拥塞甚至网络的不稳定,从而导致整个网络的可用性较差;另外这类系统更容易受到垃圾信息,甚至是病毒的恶意攻击。
  混合式网络结构综合了纯P2P去中心化和集中式P2P快速查找的优势。节点按能力不同(计算能力、内存大小、连接带宽、网络滞留时间等)区分为普通节点和搜索节点两类。搜索节点与其临近的若干普通节点之间构成一个自治簇,簇内采用基于集中目录式的P2P模式,而整个P2P网络中各个不同的簇之间再通过纯P2P的模式与搜索节点相连。在各个搜索节点之间可以再次选取性能最优的节点,或者另外引入一新的性能最优的节点作为索引节点来保存整个网络中可以利用的搜索节点信息,并且负责维护整个网络的结构。由于普通节点的文件搜索先在本地所属的簇内进行,只有查询结果不充分的时候,再通过搜索节点之间进行有限的泛洪,这样就极为有效地消除了纯P2P结构中使用泛洪算法带来的网络拥塞、搜索迟缓等问题。同时,由于每个簇中的搜索节点监控着所有普通节点的行为,这就能确保一些恶意的攻击行为在网络局部得到控制,在一定程度上改善了整个网络的负载平衡状况。
  应该说第四代P2P并没有形成真正的代,而是在原有技术的基础上作了改进,提出和应用了一些新技术措施。典型的有:动态接口选择、双向下载和智能结点弹性重叠网络等。
  
  2、在私网内构造纯P2P网络
  
  2.1设计目的
  随着互联网的迅速发展和网络规模的迅速扩大,采用IPv4协议的IP地址已经相当匮乏,为了节约有限的IP地址资源,同时节约网络成本和提高企业内部网络的安全性,越来越多的企业组建了自己的私网。实践证明:企业内部各主机之间交换信息要比内部与外部交换信息多得多。这就迫切需要一种能够方便地在内网中交换信息的解决方案。
  Client/Server是一种解决方案,但存在缺陷:构建服务器需要较大的成本,而现实中,组建私网的企业往往不愿意把资金消耗在这方面;通过局域网的共享等技术可以实现资源的交换,但其操作者需要具有一定的网络知识,而且往往需要事先确定对方的IP地址,使用起来很不方便。
  结合第二代P2P技术(纯P2P模式)特点,本文提出的在私网内构建纯P2P传输系统的方案,克服了第二代P2P技术无法实现管理的缺点,实现了不需要构建服务器,也不需要知道对方的IP地址,只需要一个能识别用户名字就可以与对方通信,并且可以查看整个网络提供的资源的功能。
  
  2.2算法设计
  为了缩小广播数据传输的范围,提高网络的运行效率,网络往往被划分为不同的虚拟局域网。一般情况下一个网段为一个广播域,可以通过子网掩码来确定。因此,本算法搜索在线用户也分为两个过程:在本网段内搜索和在本网段外搜索。
  (1)在本网段内搜索。用户输入自己的姓名后,按“回车”键或按“加入”按钮即可完成登录,程序在本网段内广播自己的信息(该信息中只包含“用户名”,是个很小的数据包),本网段内的在线用户收到该IP数据包后,提取出源IP地址和用户名(端口号事先已经约定为固定值),作为一条记录加入其在线用户列表,同时回送自己的用户名。如果收到广播数据包的在线用户的在线用户列表内有别的网段内的用户,则再次发送“HAVEOTHERS”消息数据包。刚上线的用户收到本网段内在线用户回送的用户名消息后,同样提取出源IP地址和用户名,作为一条记录加入其在线用户列表。其时,他可能收到不止一个“HAVEOTHERS”消息数据包,则选择第一个数据包,提取出其中的源IP地址保存,并回送“REQUESTEDLIST”消息数据包,收到“REQUESTEDLIST”消息数据包的用户,回送别的网段内在线用户记录(用户名和IP地址)。刚上线的用户收到回送回来的别的网段的用户信息后,将其加入在线用户列表,并且利用收到的别的网段的在线用户的IP地址向其发送自己已经上线的消息。为了能接收自己上线消息还没到达的网段内有新用户上线的消息,等到上线消息全部发送结束后,再次发送 自己用户列表中在线的用户数,对方收到后,与自己列表内的在线用户数进行比较,如果小于自己的,则把别的网段的用户信息发送给请求发起者,请求发起者收到后,把与自己列表中相同的记录丢弃,不同的加入,同时向新加入的记录发送自己已经上线的消息。如此往复,直到两端在线用户列表中的个数相等为止。到此,整个私网中在线用户的搜索也已经完毕(不用再进入下一过程)。
  刚上线的用户可能不止收到一个“HAVEOTHERS”消息数据包,但也可能收不到“HAVEOTHERS”消息数据包,因为别的网段中还没有用户上线或者他是本网段中第一个上线的。如果别的网段中还没有用户上线,那么,整个私网中在线用户的搜索也已就完毕(不用再进入下一过程)。如果他是本网段中第一个上线的,那么,就要进入第二个过程。
  (2)此时,他要搜索别的网段在线用户的情况。为此,他逐一向别的网段的每一个地址发送探测在线用户的消息数据包,一旦有别的网段的在线用户收到该上线的消息数据包后,立刻回应“IAMHERE”消息包,并把这个刚上线的用户的信息加入自己的在线用户列表,刚上线的用户只要一收到“IAMHERE”消息包,就立刻停止发送自己已经上线的消息包,同时从“IAMHERE”消息包中提取源IP地址,并向对方发送“REQUESTEDLIST”消息数据包,对方收到这个数据包后,就把自己的在线用户列表回送,刚上线的用户把收到的在线用户信息加入自己的在线用户列表。并逐一向列表中的成员发送自己已经上线的消息。如果刚上线收到对方回送的用户列表之前,有新上线的用户探测到该节点,则收到该用户列表数据包后,再转发给刚刚探测到该节点的新的上线用户。
  同样,刚上线的用户可能始终收不到“IAMHERE”消息包,那么可以确定他是整个私网中第一个上线的人。
  
  3、私网内管理的解决方案
  
  已有的P2P应用程序,虽然可以实现网络节点间的信息交换,但它们都依赖于服务器。只要服务器出了故障,则服务器管理下的所有P2P应用软件将无法工作。例如,目前国内流行的QQ聊天工具,它采用分层的服务器管理模式,如果某一个地区的服务器出现故障,则整个地区的QQ程序将不能工作。为此,本文提出如下的解决方案,既可以实现管理功能,也可以避免上述情况的发生。
  服务器出故障导致网络瘫痪的根本原因就是服务器的作用太大。因此,可以把网络服务器只作为参与聊天并起到监督作用的参与者节点。为实现私网内的管理功能,每个用户在登录时要输入关于自己的一项信息(根据应用的场合不同自己定义)和密码(要保证两者结合可以惟一确定这个用户),并把这两项信息连同用户名和本机IP地址一同作为上线消息数据包一起发送,当这个数据包到达服务器节点时,服务器提取这两项信息与数据库中确定的用户信息进行比较,如果完全相同,则像别的节点处理这个数据包一样进行处理。如果不同,则向这个刚上线的节点发送一条要求其退出的消息数据包。刚上线的节点接收到这个数据包后,自动退出。通过这种方法,就可以很好地对全网的用户进行管理,同时即使服务器出现故障,别的用户也只是感觉网络中有一个节点注销了,感觉不出是服务器的问题,而且可以与网络中的其他节点保持正常的通信。尽管这里也有一个小的安全隐患,如果一个非法用户,正好在服务器出现故障的时候登录系统,显然他是可以成功的,但这种几率是微乎其微的,只要服务器恢复正常,可以马上把这个非法的用户删除。
  此外,该服务器还可以通过与公网上的服务器通信,借助公网上的服务器穿透NAT或NAPT,实现与另一个私网内服务器的通信。
  
  4、结束语
  
  本文提出的在私网内构建纯P2P网络的算法,以及对服务器降级处理的办法,能够实现私网内部节点间的信息交换。算法可自动搜索在线用户,具有很快的收敛速度。对服务器降级处理解决了私网内节点的管理问题。
其他文献
摘要:LWAPP协议是适用于集中式WLAN的基础协议。文章在指出了当前无线网络的缺点和集中式WLAN是无线网络发展的新趋势,分析了LWAPP工作机制、原理,最后提出了这个协议的设计不足之处,以及解决这些不足的初步设计思想。  关键词:无线接入点;无线控制器;WLAN;LWAPP
期刊
摘要:应用Agent的智能特征,把Agent思想嵌入到网络协作学习系统中;分析了网上协作学习环境、协作学习区、学习环境的运作方式以及其特点。引入智能Agent的网络协作学习环境,实现了个性化教学,能充分调动学习者的主动性。  关键词:Agent技术;智能Agent;协作学习;学习者Agent;学习环境
期刊
摘要:描述了使用Ajax模式操作文档。并将其应用于基于Domino办公自动化系统实现任务管理的方法。将该方法应用于办公自动化系统,可以明显改善用户体验,提高系统的反应速度。  关键词:Ajax模式;Domino;Web应用;OA
期刊
摘要:Nutch是一个优秀的基于Java的开放源码搜索引擎,是以Lucene为基础实现的搜索引擎应用程序,其工作流程和现代商业搜索引擎工作原理一样:文本搜集、建立索引和查询。Nutch0.9较好地处理了英文分词,但对中文分词处理还不够完善。文章介绍了在Nutch0.9中实现索引及检索的二分法,提出了改进中文分词的方法。  关键词:Nutch0.9;二分法;索引;检索
期刊
摘要:移动学习的兴起为实现人类终身学习提供了可能。文章介绍了WLAN技术在移动学习领域的应用,利用嵌入式系统技术和无线网络技术,构建了一种移动学习终端的设计模型,为移动学习平台的开发提供参考。  关键词:WLAN:移动学习:智能终端:移动学习平台
期刊
摘要:IF是一个对异步实时系统建模和验证的开放环境,建立在具有丰富表达能力,基于时间自动机的中间语言IF符号集之上。文章描述了IF的组成,包括其体系结构,所使用的符号集;然后给出了IF对实时系统验证的方法,并运用此验证方法对一个实时系统实例进行了验证。  关键词:IF;异步实时系统;时间自动机;实时系统验证
期刊
摘要:阐述了组件技术的基本概念,讨论了组件式GIS的系统构成,进而介绍了Intergraph公司的G/Electric组件开发平台的特点和体系结构,并详细介绍了基于G/Electric组件开发平台开发GIS应用系统的设计思路。  关键词:地理信息系统;组件;组件对象模型;G/Electric    引言    地理信息系统(GIS)是在计算机软硬件支持下,以采集、存储、管理、检索、分析和描述空间物
期刊
摘要:智能公文交换系统是基于网络收发电子公文的系统,用户通过浏览器可以直接收发电子公文。用户在发出电子公文的同时提醒对方有未读公文,对方开机即可收到提示信息。论文给出了智能公文交换系统的设计思想、具体设计以及实现。该系统主要用于局域网中有固定IP的用户。  关键词:智能:Web:公文:Imail
期刊
摘要:介绍了Web使用挖掘的常用技术。针对Web服务器日志产生数据库的特点,在Web挖掘过程中使用二进制挖掘算法产生关联规则;通过二进制挖掘算法的实例,说明在Web使用挖掘中运用二进制挖掘算法能够提高挖掘效率。  关键词:Web使用挖掘;点击流;Web服务器日志;二进制挖掘算法;关联规则
期刊
摘要:图像采集是可视化远程医疗系统中不可或缺的组成部分,医疗专家可根据病人的清晰图像进行诊断。文章介绍了使用JMF技术建立可视化远程图像采集的具体步骤和方法。系统在小范围内进行了初步实验,结果表明,该系统能够采集远程病人图像数据,供医生进行诊断分析。系统软硬件成本低,实现方法与平台无关、简单易行。  关键词:JMF;图像捕捉;视频通信;远程医疗
期刊