浅谈软件架构(四) linux
—— P2P 算法
----cnyinlinux 安全
本文将讨论一种特殊的软件架构——P2P网络。这与时下正流行的O2O有些神似,不过两者没有联系,也不是同类物种。O2O指的是互联网虚拟世界(Online)与显示世界(Offline)的协做模式。而P2P指的是同处在互联网世界中的两个节点(对等终端)之间的情仇爱恨。所以也有人称之为对等网络。 服务器
和今天热炒的“去中心化”有着不可割舍的关系。还有一个神奇的物种与它有着绝对关联关系——比特币。下面咱们来研讨下P2P网络的原理。 网络
P2P网络是Peer to Peer的简称,即节点到节点直通网络。处在网络上的节点相互之间直接创建联系,完成网络通讯任务。好比生活中普通人都时常能用到的P2P下载器,迅雷下载客户端就是一个典型的P2P的实现。举个例子来理解:假设你如今要在某网站下载一部电影,而你的室友电脑上正好有该资源,且迅雷客户端正在运行,这时候彻底不须要下载来自遥远服务器传来的数据,直接从你室友电脑局域网传输过来,即节省了网络资源也缩短了获取资源的时间。换句话说,全部的迅雷客户端共同构成了一个资源下载P2P网络。而迅雷就是P2P软件,也即Peer。如此原理工做的 架构
那么,你的迅雷是怎么知道旁边电脑有资源的呢?这就得从P2P的实现技术提及了。目前的P2P技术已经发展到第4代了,确切说是第3代的升级完善中,真正第4代的全新技术的P2P尚未开发出来。下面咱们逐代进行介绍。 负载均衡
第1代,中央控制网络体系结构。 性能
全网络的节点计算机都经过网络与中央控制服务器链接,全部的服务请求均发送给中央服务器,由中央服务器运算查找合适的节点(Peer)来肯定P2P链接。拿以前下载的例子来讲,你在迅雷客户端请求下载电影的时候,在向电影资源提供站点提交下载请求的同时,也将此信息发送给了迅雷中央服务器。迅雷中央服务器在全部在线的Peer中找出与你距离更近且拥有资源的节点,反馈此信息后你的迅雷客户端与该Peer创建P2P传输通道,这样一来你就能够下载该Peer的数据了。固然不是你要下载的全部资源都被附近的人下载过,因此并不是全部下载都能P2P化。在找不到合适的Peer的状况下,仍是老老实实从资源提供站点下载吧,不过这以后,你就会成为别人下载同一资源的合适Peer了。 网站
这种方式的P2P模式,好处是网络架设简单,软件设计方便实现,还能更充分的掌握Peer的运行情况和资源分布。对于中央控制器来讲,压力较大。须要实时运算不可胜数的客户端的请求。响应的速度就会受制于各Peer与中央控制节点间的网络情况,以及中央控制节点的运算能力。因此就有了更为离散化的P2P技术出现。 spa
第2代,分布分散网络体系结构,也即去中心化P2P网络。
近年流行的比特币网络,拒传就是去中心化纯P2P网络。读者可自行查阅相关信息。
http://en.wikipedia.org/wiki/Bitcoin 本文贴出维基百科的解释,敬请参考!
去中心化的P2P网络中,各Peer间的关系就像上图所示,没有中央控制节点,全部节点平等的处于网络中。也被称为“纯P2P网络”。 它没有集中的中央控制服务器,每一个Peer随机接入网络,并与本身相邻的一组邻居节点经过端到端链接构成一个逻辑覆盖的网络。对等节点之间的内容查询和内容共享都是直接经过相邻节点广播接力传递,同时每一个节点还会记录搜索轨迹,以防止搜索环路(死循环)的产生。纯P2P网络结构解决了网络结构中心化的问题,扩展性和容错性较好。因为没有一个对等节点知道整个网络的结构,网络中的搜索算法以泛洪(广播)的方式进行,控制信息的泛滥消耗了大量带宽并很快形成网络拥塞甚至网络的不稳定,从而致使整个网络的可用性较差,另外这类系统更容易受到垃圾信息甚至是病毒的恶意攻击。因而又有了更为可靠的技术来完善它。
第3代,混合网络模型。也即前两种模式的混合。
混合式网络结构综合了纯P2P去中心化和中央控制式P2P快速查找的优点。按节点能力不一样(计算能力、内存大小、链接带宽、网络滞留时间等)区分为普通节点和搜索节点两类。搜索节点与其临近的若干普通节点之间构成一个自治的簇,簇内采用基于中央控制式的P2P模式,而整个P2P网络中各个不一样的簇之间再经过纯 P2P的模式将搜索节点相连起来。能够在各个搜索节点之间再次选取性能最优的节点,或者另外引入一新的性能最优的节点做为索引节点来保存整个网络中能够利用的搜索节点信息,而且负责维护整个网络的结构。因为普通节点的文件搜索先在本地所属的簇内进行,只有查询结果不充分的时候,再经过搜索节点之间进行有限的泛洪。这样就极为有效地消除纯P2P结构中使用泛洪算法带来的网络拥塞、搜索迟缓等不利影响。同时,因为每一个簇中的搜索节点监控着全部普通节点的行为, 能确保一些恶意的攻击行为能在网络局部获得控制,在必定程度上提升整个网络的负载均衡。
第4代,智能P2P网络。
其实还处在发展中并未完善,不过从技术思想层面看已经超越以前的几代技术了。
大致分为如下3种模式:
(1)动态口选择之一。目前的P2P应用通常使用固定的端口,实际上可引入动态选择传输口,通常说口的数目在 1024~4000之间。甚至P2P流能够用原来用于HTTP(SMTP)的口80(25)来传输以便隐藏。这将使得识别跨运营商网络的P2P流量计算变得更困难。
(2)双向下载。该项技术能够多路并行下载和上载一个文件和/或多路并行下载一个文件的一部分。而目前传统的体系结构要求目标在彻底下载后才能开始上载。这将大大加快文件分发速度。
(3)智能结点弹性重叠网络。智能结点弹性重叠网络是系统应用P2P技术来调度已有的IP承载网资源的新技术,在路由器网络层上设置智能结点用各类链路对等链接,构成网络应用层的弹性重叠网。能够在保持互联网分布自治体系结构前提下、改善网络的安全性。智能结点能够在路由器之间交换数据,可以对数据分类(分辩病毒、垃圾邮件)保证安全。经过多个几何上分布的结点观察互联网,共享信息能够了解互联网蠕虫感染范围和性质。提供高性 能、可扩张、位置无关消息选路,以肯定最近的本地资源位置。改进内容分发。使用智能结点探测互联网路径踪影而且送回关于踪影的数据。解决目前互联网跨自治区路径选择方面存在的问题。减小丢包和时延,快速自动恢复等。
<<本文完结>>