比特币网络的通信机制——P2P,C/S和B/S之间的区别与联系

最近在学习区块链网络通信路由方面的东西,涉及到一个比较重要的概念,就是P2P网络,在研究这块的时候,发现对P2P这个概念理解的不透,所以在梳理比特币区块链网络的架构的时候总是朦朦胧胧的感觉,专门总结一下这块,把P2P网络的概念彻底搞清楚,为了方便理解,在说明P2P的时候,顺便对C/S和B/S做了梳理,所以这篇博客主要是为了说明P2P,C/S和B/S三者之间的区别和联系。

P2P和C/S和B/S的区别

一、P2P模式

P2P是peer-to-peer的缩写,peer在英语里有"(地位、能力等)同等者"、"同事"和"伙伴"等意义。这样一来,P2P也就可以理解为"伙伴对伙伴"的意思,或称为对等联网。目前人们认为其在加强网络上人的交流、文件交换、分布计算等方面大有前途。

P2P的全称还可以是point to point ,即点对点下载的意思。它是下载术语,意思是在你自己下载的同时,自己的电脑还要继续做主机上传,这种下载方式,人越多速度越快,但缺点是对你的硬盘损伤比较大,因为硬盘在写的同时还要读,还有就是对你内存占用较多,影响整机速度!

简单的说,P2P直接将人们联系起来,让人们通过互联网直接交互。P2P使得网络上的沟通变得容易,更直接地共享和交互,真正地消除中间商。P2P就是人可以直接连接到其他用户的计算机、交换文件,而不是像过去那样连接到服务器去浏览与下载。P2P另一个重要特点是改变互联网现在的以大网站为中心的状态、重返"非中心化",并把权力交还给用户。 P2P看起来似乎很新,但是正如B2C、B2B是将现实世界中很平常的东西移植到互联网上一样,P2P并不是什么新东西。在现实生活中我们每天都按照P2P模式面对面地或者通过电话交流和沟通。

即使从网络看,P2P也不是新概念,P2P是互联网整体架构的基础互联网最基本的协议TCP/IP并没有客户机和服务器的概念,所有的设备都是通讯的平等的一端。在十年之前,所有的互联网上的系统都同时具有服务器和客户机的功能。当然,后来发展的那些架构在TCP/IP之上的软件的确采用了客户机/服务器的结构:浏览器和Web服务器,邮件客户端和邮件服务器。但是,对于服务器来说,它们之间仍然是对等联网的。以email为例,互联网上并没有一个巨大的、唯一的邮件服务器来处理所有的email,而是对等联网的邮件服务器相互协作把email传送到相应的服务器上去。另外用户之间email则一直是对等的联络渠道。

事实上,网络上现有的许多服务都可以归入P2P的行列。即时通讯系统譬如ICQ、AOL Instant Messenger、Yahoo Pager、微软的MSN Messenger以及国内的QQ是最流行的P2P应用。它们允许用户互相沟通和交换信息、交换文件。用户之间的信息交流不是直接的,需要有位于中心的服务器来协调。但这些系统并没有诸如搜索这种对于大量信息共享非常重要的功能,这个特征的缺乏可能正为什么即时通讯出现很久但是并没有能够产生如Napster这样的影响的原因之一。

下面试图用三句话来揭示P2P的影响:

  • 对等联网:是只读的网络的终结(Peer-to-peer is the end of the read-only Web)
  • 对等联网:使你重新参与互联网(Peer-to-peer allows you to participate in the Internet again)
  • 对等联网:使网络远离电视(Peer-to-peer steering the Internet away from TV)

如上文所言,P2P不是一个新思想,从某些角度看它甚至是整个最初创建互联网的最基本的思想。我们不妨花时间作一点回顾。现在在业界,比较认同的P2P计算应用系统的目标主要有以下几类:

  • 信息、服务的共享与管理
  • 协作
  • 构建充当基层架构的互联系统

P2P,即peer to peer

依中央化程度进行分类

纯P2P:

  • 节点同时作为客户端和服务器端。
  • 没有中心服务器。
  • 没有中心路由器。
  • 如Gnutella。

杂P2P:

  • 有一个中心服务器保存节点的信息并对请求这些信息的要求做出响应。
  • 节点负责发布这些信息(因为中心服务器并不保存文件),让中心服务器知道它们想共享什么文件,让需要它的节点下载其可共享的资源。
  • 路由终端使用地址,通过被一组索引引用来取得绝对地址。
  • 如最原始的Napster。

混合P2P:

  • 同时含有纯P2P和杂P2P的特点。
  • 如Skype。

依网路拓扑结构进行分类

结构P2P:

扫描二维码关注公众号,回复: 12474163 查看本文章
  • 点对点之间互有连结资讯,彼此形成特定规则拓扑结构。
  • 需要请求某资源时,依该拓扑结构规则寻找,若存在则一定找得到。
  • 如Chord、CAN。

无结构P2P:

  • 点对点之间互有连结资讯,彼此形成无规则网状拓扑结构。
  • 需要请求某资源点时,以广播方式寻找,通常会设TTL,即使存在也不一定找得到。
  • 如Gnutella。

松散结构P2P:

  • 点对点之间互有连结资讯,彼此形成无规则网状拓扑结构。
  • 需要请求某资源时,依现有资讯推测寻找,介於结构P2P和无结构P2P之间。
  • 如Freenet。

生机勃勃——窥探P2P的发展历程

如果说涉及此种特点便称之为信息技术中的P2P的诞生,那么它的历史这可就远了。P2P 本身的基本技术的存在时间和我们曾经熟悉的USENET、FidoNet 这两种非常成功的分布式对等网络技术几乎是一样的,甚至更长些。翻翻资料就可以知道,USENET 产生于 1979 年,FidoNet创建1984年,它们都是一个分散、分布的信息交换系统。在最初的 P2P 应用出现时,许多使用该技术的人们甚至不会使用计算机。然而正是这种网络技术为P2P的出现搭建了摇篮。

P2P正式步入发展的历史可以追溯到1997年7月,那几乎就是互联网在中国起步的阶段。在一段介绍此时P2P技术的时间表中这样写着:“Hotline Communications is founded, giving consumers software that lets them offer files for download from their own computers.”(1997年7月,Hotline Communications公司成立,并且研制了一种可以使其用户从别人电脑中直接下载东西的软件)

说到P2P,就不能不提BT,这个被人戏称为“变态”的词几乎在大多数人感觉中与P2P成了对等的一组概念,而它也将P2P技术发展到了近乎完美的地步。实际上BitTorrent(中文全称比特流,简称BT)原先是指是一个多点下载的P2P软件。它不像FTP那样只有一个发送源,BT有多个发送点,当你在下载时,同时也在上传,使大家都处在同步传送的状态。应该说,BT是当今P2P最为成功的一个应用。

如果解释一下的话,BT首先在上传端把一个文件分成了多个部分,客户端甲在服务器随机下载了第N部分,客户端乙在服务器随机下载了第M部分。这样甲的BT就会根据情况到乙的电脑上去拿乙已经下载好的第M部分,乙的BT就会根据情况去到甲的电脑上去拿甲已经下载好的第N部分。

有一句话可以作为BT最为形象的解释就是:“我为人人,人人为我”。而最初听到此概念时,有人对我说,别用BT,会坏你的硬盘的!大概指的就是前一句。现在看来,没有贡献怎么会有获取?这大概最可以概括BT下载传输的精髓。工具软件BTJoy,将这一技术以软件的形式完美起来,这个诞生仅有一年的软件已经迅速热遍了整个网络。对于BT下载的爱好者来说,120G的硬盘都可以被迅速塞满!我的同学在不长的时间里竟然用他的刻录机完成了一百来部的电视剧的保存,拿他的话来说,可以开一个小店面了!

除了BT下载,另外一种下载方式就是利用Usenet上的资源。有人把他理解成P2P,其实并不正确。这种下载方式在国内并不为人所知,但在国外非常流行。主要原因是Usenet上的资源大多数是英文的或者其他语言,所以要求用户具有一定的英文水平。Usenet上的资源可以说是全球性的,而且下载速度极快,IP匿名,因此在西方国家是最受欢迎的网络下载工具。在新浪上可以下载到Usenet的工具,是非常好用的一款Usenet软件。

P2P平台环境:

P2P平台由Internet、Intranet和Ad-hoc网构成,从拨号线到宽带都可支持P2P。当前结构多是个人家庭主机、单位桌面机和个人移动计算机。早期P2P系统多用家庭机进行内容共享,Napster,Gnutella Aimster 分布式计算多基于桌面机,Ad-hoc手持网络最近可用,专用于协同计算,如Endeavors, Technologies Magi。发展更大场景的单位桌面机支持内容共享、IDC与手持机资源聚合、NGI/Inernet2支持P2P系统和应用

P2P关键技术特性:

  • 非集中化:
    C/S模式的特点是集中化,这在访问权限和安全上容易管理,但不可避免导致:低效、瓶颈和资源浪费。尽管硬件性能和成本有了改进,但建立和维护集中化知识库成本高昂,需要人员智能化地建立,保持信息的相关更新。
  • 非集中化:
    强调用户端对数据和资源控制的所有权,每个节点都是平等的参与者,实现更困难(无全局服务器,看不到全局节点及其文件) 这也是当前混合模式存在的原因。

全非集中化文件系统(Gnutella Freenet) 发现网络是很困难的,新节点必须知道其他节点或由主机列表知道其他Peers的IP地址,这样,该节点通过和现行网络中至少一个Peer建立连接而加入网络从而能发现其他节点并缓存它们的IP地址在本地各种P2P系统按非集中化程度分类。

二、C/S模式

在网络连接模式中,除对等联网外,还有另一种形式的网络,即客户机/服务器模式,即Client/Server。在客户机/服务器网络中,服务器是网络的核心,而客户机是网络的基础,客户机依靠服务器获得所需要的网络资源,而服务器为客户机提供网络必需的资源。

这里客户和服务器都是指通信中所涉及的两个应用进程(软件)。使用计算机的人是计算机的“用户”(user)而不是“客户”(client)。但在许多国外文献中,也经常把运行客户程序的机器称为client(这种情况下也可把client译为“客户机”),把运行服务器程序的机器称为server。所以有时要根据上下文判断client与server是指软件还是硬件。

它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到 Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件。因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统,这也就是目前应用系统的发展方向。

C/S结构的优点

C/S结构的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。

缺点主要有以下几个:

  • 随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统具有扩展性。这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。
  • 客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。
  • 系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。
  • 对客户端的操作系统一般也会有限制。可能适应于Win98, 但不能用于win2000或Windows XP,或者不适用于微软新的操作系统,更不用说Linux、Unix等。

C/S架构软件的优势与劣势

  • 应用服务器运行数据负荷较轻。最简单的C/S体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序,二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,也称为应用服务器。一旦服务器程序被启动,就随时等待响应客户程序发来的请求,客户应用程序运行在用户自己的电脑上,对应于数据库服务器,可称为客户电脑,当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服务器程序根据预定的规则作出应答,送回结果,应用服务器运行数据负荷较轻。
  • 数据的储存管理功能较为透明。在数据库应用中,数据的储存管理功能,是由服务器程序和客户应用程序分别独立进行的,前台应用可以违反的规则,并且通常把那些不同的(不管是已知还是未知的)运行数据,在服务器程序中不集中实现,例如访问者的权限,编号可以重复、必须有客户才能建立定单这样的规则。所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序不是非常“瘦小”,麻烦的事情都交给了服务器和网络。在C/S体系的下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理。
  • C/S架构的劣势是高昂的维护成本且投资大。首先,采用C/S架构,要选择适当的数据库平台来实现数据库数据的真正“统一”,使分布于两地的数据同步完全交由数据库系统去管理,但逻辑上两地的操作者要直接访问同一个数据库才能有效实现,有这样一些问题,如果需要建立“实时”的数据同步,就必须在两地间建立实时的通讯连接,保持两地的数据库服务器在线运行,网络管理工作人员既要对服务器维护管理,又要对客户端维护和管理,这需要高昂的投资和复杂的技术支持,维护成本很高,维护任务量大。
  • 传统的C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,由于产品的更新换代十分快,代价高和低效率已经不适应工作需要。在JAVA这样的跨平台语言出现之后,B/S架构更是猛烈冲击C/S,并对其形成威胁和挑战。

C/S、B/S结构软件技术上的比较

C/S结构软件(即客户机/服务器模式)分为客户机和服务器两层,客户机不是毫无运算能力的输入、输出设备,而是具有了一定的数据处理和数据存储能力,通过把应用软件的计算和数据合理地分配在客户机和服务器两端,可以有效地降低网络通信量和服务器运算量。由于服务器连接个数和数据通信量的限制,这种结构的软件适于在用户数目不多的局域网内使用。国内目前的大部分ERP(财务)软件产品即属于此类结构。

B/S(浏览器/服务器模式)是随着Internet技术的兴起,对C/S结构的一种改进。在这种结构下,软件应用的业务逻辑完全在应用服务器端实现,用户表现完全在Web服务器实现,客户端只需要浏览器即可进行业务处理,是一种全新的软件系统构造技术。这种结构更成为当今应用软件的首选体系结构。e通管理系列产品即属于此类结构。

数据安全性比较

由于C/S结构软件的数据分布特性,客户端所发生的火灾、盗抢、地震、病毒、黑客等都成了可怕的数据杀手。另外,对于集团级的异地软件应用,C/S结构的软件必须在各地安装多个服务器,并在多个服务器之间进行数据同步。如此一来,每个数据点上的数据安全都影响了整个应用的数据安全。所以,对于集团级的大型应用来讲,C/S结构软件的安全性是令人无法接受的。对于B/S结构的软件来讲,由于其数据集中存放于总部的数据库服务器,客户端不保存任何业务数据和数据库连接信息,也无需进行什么数据同步,所以这些安全问题也就自然不存在了。

数据一致性比较

在C/S结构软件的解决方案里,对于异地经营的大型集团都采用各地安装区域级服务器,然后再进行数据同步的模式。这些服务器每天必须同步完毕之后,总部才可得到最终的数据。由于局部网络故障造成个别数据库不能同步不说,即使同步上来,各服务器也不是一个时点上的数据,数据永远无法一致,不能用于决策。对于B/S结构的软件来讲,其数据是集中存放的,客户端发生的每一笔业务单据都直接进入到中央数据库,不存在数据一致性的问题。

数据实时性比较

在集团级应用里,C/S结构不可能随时随地看到当前业务的发生情况,看到的都是事后数据;而B/S结构则不同,它可以实时看到当前发生的所有业务,方便了快速决策,有效地避免了企业损失。

数据溯源性比较

由于B/S结构的数据是集中存放的,所以总公司可以直接追溯到各级分支机构(分公司、门店)的原始业务单据,也就是说看到的结果可溯源。大部分C/S结构的软件则不同,为了减少数据通信量,仅仅上传中间报表数据,在总部不可能查到各分支机构(分公司、门店)的原始单据。

服务响应及时性比较

企业的业务流程、业务模式不是一成不变的,随着企业不断发展,必然会不断调整。软件供应商提供的软件也不是完美无缺的,所以,对已经部署的软件产品进行维护、升级是正常的。C/S结构软件,由于其应用是分布的,需要对每一个使用节点进行程序安装,所以,即使非常小的程序缺陷都需要很长的重新部署时间,重新部署时,为了保证各程序版本的一致性,必须暂停一切业务进行更新(即“休克更新”),其服务响应时间基本不可忍受。而B/S结构的软件不同,其应用都集中于总部服务器上,各应用结点并没有任何程序,一个地方更新则全部应用程序更新,可以做到快速服务响应。

网络应用限制比较

C/S结构软件仅适用于局域网内部用户或宽带用户(1兆以上);而我们的B/S结构软件可以适用于任何网络结构(包括33.6K拨号入网方式),特别适于宽带不能到达的地方,例如迪信通集团的某些分公司,仅靠电话上网即可正常使用软件系统。

总结

经过上述的分析,基本可以知道:这里所说的不管是P2P网络,还是C/S或者说是B/S的模式,都是针对具体软件进程,或者说是服务来说的,比如QQ是一款P2P的应用,email电子邮件是一种P2P服务。而在比特币区块链网络中,也是一样。有比特币钱包,比特币客户端,这就是P2P应用。是一种软件程序应用。要注意与TCP/IP协议栈的网络层的拓扑结构区分开!这里的P2P,C/S,B/S既然指的是应用进程或者说软件服务的模式,那么所属的层次就是在应用层,那么与P2P网络相关的通信协议,也就属于应用层协议。把这块区分开以后,那么在理解比特币区块链网络架构的时候,就要容易很多了!

猜你喜欢

转载自blog.csdn.net/loveCC_orange/article/details/113445447
今日推荐