`

P2P协议入门

阅读更多

一.P2P定义

        P2P(Peer to Peer)对等计算机或对等网络。

        P2P的核心是数据存储在客户本地,通过存储信息(名称、地址、分块)的查询,让终端之间直接数据传递。P2P网络让网络上的数据流量分散化,同时管理点不仅没有服务容量的压力,而且只存储数据的索引与链接,不对数据本身负责,避免了版权与管理的麻烦。

        “我为人人,人人为我”的思想是基于P2P网络实现的,但不等于P2P。P2P网络实际上是一种“无中央政府的”、“部落式的”网络,加入的方式就是客户端的登录,多数不需要认证,离开更不受限制,别人“取”你的东西是自愿,你拿别人的资源也不用付费,“P2P世界是和谐的”。为了激励大家在获取的同时多奉献,,因为只有奉献的越多,可供共享的也越多,开发者在你下载的同时,利用文件分块的技术,把你刚拥有的部分马上给别人分享,当然这种共享不必再经过你的允许,并且根据你的表现积分,鼓励“好”人,奖励奉献,你帮了别人,别人就来帮你。由于很多P2P网络的协议是公开的,所以加入的方式也很宽泛,不同的P2P网络还可以互通,为信息的进一步共享提供了基础。

        自由、松散的P2P网络的最大问题是给政府的监管非常困难,面对的不是一个组织,而是每一个用户。一个用户加入P2P网络后,把自己计算机的处理能力、存储能力贡献给网络,具体谁在使用自己并不清楚。网络的设计者提供了一种集中大家资源的方式,也定义了规则,但具体的内容就要看具体的用户了。P2P是一种新技术,是一个与C/S、B/S并列的业务开发模式,技术是好的,但天生就是小人物反抗大公司的产物,所以有些人不太欢迎它。

 

二.我对P2P网络的理解

        P2P的应用从下载MP3被人们“认识”起,迅速风靡世界,目前运营上网络骨干流量的一半多都是P2P的流量,并且在文件共享、视频直播与点播、即时通(网上电话)、网络聊天、网络存储、网格计算等领域的应用发展神速。P2P的组网模式与开发模式已经成为互联网上最适合“自由者社区”的网络模式,随着网络的普及,互联网已经走过信息上网、信息搜索的阶段,而“社区型”信息搜索可能成为下一阶段的标志。

我个人理解的P2P发展的关键是P2P的业务模式,因为P2P真正体现了网状网络的优势,也从网络自身上解决了长期困扰人们的TCP/IP的服务保障问题,在“没有保障”的因特网上,实现了可以保障服务质量的应用,比如:SKYPE的通话、PPLive的视频直播。网络是信息化社会的传导神经,而这个神经上最适合的模式是P2P。

        P2P技术目前的主要难题还集中在信息的搜索上,搜索技术与P2P的网络结构有直接的关系,先学习一下网络结构是必要的。

 

三.P2P网络结构

1.集中式P2P网络:代表是Napster、QQ

        有一个中心服务器负责记录共享信息(索引信息)并应答对这些信息的查询。与C/S模式的差异是在C/S结构中,客户端之间没有数据流,通过中心服务器交换数据。而P2P登录与信息查询都与中心服务器连接,但查询到数据后,就与存放数据的客户端直接建立连接。

 

2.分布式非结构化P2P网络:代表是Gnutella

        采用了随机图的组织方式来形成松散的网络,没有中心服务器,采用洪泛式搜索(Flooding)和随机转发机制(TTL转发机制),每个节点功能相同,兼作服务器和客户机。

        节点的管理有些象路由的管理,信息在网络中象水的波纹一样传播,直到“能量”耗尽。



3.分布式结构化P2P网络:代表Pastry、Tapestry、Chord、CAN

        结构化是对网络解决的管理方式,是一种逻辑上可以结构化查询,而不是物理连接的变动,结构化是为了搜索算法的快捷,一般相当于折半查找。

        DHT(Distributed Hash Table分布式散列表)路由算法是通过分布式散列函数将输入的关键字唯一映射到某个节点上,然后通过特定路由算法和该节点建立连接。网络节点被分配唯一节点标识符(Node ID),资源对象通过散列运算产生唯一资源标识符(Object ID),且该资源存储在NID与之相等或相近的节点上,查询时,同样的方法定位到存储该资源的节点。

 

4.混合式(半分布式)P2P网络:第三代P2P,代表Skype

        在分布式模式基础上,将用户节点按能力进行分类,使某些节点担任特殊的任务。用户节点:可以从索引节点处得到相临的搜索节点地址。搜索节点:处理搜索请求,要有128k以上的速度,从子节点中搜索文件列表。索引节点:速度快、内存大的节点,保存可以利用的搜索节点信息、搜集状态信息,并维护网络结构。索引节点也可以同时是搜索节点。用户节点可以选择三个搜索节点为父节点,并提交它的共享列表。一个父节点可以维护500个孩子节点。

        首先索引节点的引入不直接连接有版权的资料,摆脱了版权问题。其次引入搜索节点,查询时,用户节点直接连接搜索节点,若搜索的结果不足100个,就向相临的搜索节点再发请求,若还不足,再继续扩散请求,直到所有的搜索节点都访问过。

 

附一:用P2P协议打造人工智能运行平台的讨论

1.用P2P协议打造分布式计算系统

        a.p2p是当今互联网中的一种分布式通讯协议,BT下载,P2P聊天工具都是p2p协议的应用。

        b.而p2p协议曾被用来构建PC机集群来进行大规模并行的蛋白质模拟运算。

        c.分布式系统不是人工智能所必须的,但却是一个很好的人工智能运行的平台

        d.DHT协议是P2P协议中的一种,也是最没有中心的一种P2P协调,很多eMULE就采用这次协议。

        采用DHT协议可以将数以千计的计算机联系起来成为一个分布式计算系统

        DHT没有事件通知,或者选择其他的框架如JXTA。其实C语言确实很不适合做分布式,做服务器编程还可以,GO语言,java,python做分布式比较好。

2.做这个有几个先决条件:

        a.相关的人工智能系统必须有个分布式的架构,不然的话得不到什么好处。

        b.要使用DHT来分布数据的话,那些的数据必须使用hashtable的形式。有些现有的人智系统可能需要改变架构才能用上这个技术。

        c.DHT 貌似没有支持事件通知(event notification)的功能,所以会需要使用其它的p2p协议来满足这类分布式系统的通讯需求。

这种协议多半是支持多语言的,所以该不会被局限在C语言。

 

附二:P2P及DHT网络简单介绍

        P2P在思想上可以说是internet思想/精神/哲学非常集中的体现,共同的参与,透明的开放,平等的分享(让我想起之前学习过的,现在正在疯狂热炒的云计算的"中央集权"制度)。基于P2P技术的应用有很多,包括文件分享,即时通信,协同处理,流媒体通信等等。通过这些应用的接触,分析和理解,P2P其本质是一种新的网络传播技术,这种新的传播技术打破了传统的C/S架构,逐步地去中心化,扁平化,这或许在一定程度上应证了"世界是平的"趋势。P2P文件分享的应用(BTs/eMules等)是P2P技术最集中的体现,P2P文件分享网络的发展大致有以下几个阶段,包含tracker服务器的网络,无任何服务器的纯DHT网络,混合型P2P网络。DHT网络发展即有"思想/文化"上的"发展",也有一定的商业上的需求(版权管理)。

        DHT全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法,一类可由键值来唯一标示的信息按照某种约定/协议被分散地存储在多个节点上,这样也可以有效地避免"中央集权式"的服务器(比如:tracker)的单一故障而带来的整个网络瘫痪。实现DHT的技术/算法有很多种,常用的有:Chord, Pastry, Kademlia等。BT及BT的衍生派(Mainline, Btspilits, Btcomet, uTorrent…),eMule及eMule各类Mods(verycd, easy emules, xtreme…)等P2P文件分享软件都是基于Kademlia算法来实现DHT网络的,BT采用Python的Kademlia实现叫作khashmir。eMule采用C++的Kademlia实现干脆就叫作Kad,当然它们之间有些差别,但基础都是Kademlia。

 

文章来源:

http://www.2cto.com/net/201306/221922.html

http://tieba.baidu.com/p/3047618339

http://blog.csdn.net/mergerly/article/details/7989281

  • 大小: 12.2 KB
分享到:
评论

相关推荐

    p2p-indexing-and-search:使用Hypercore协议进行P2P索引和搜索入门

    入门每个人都应该首先阅读的方向,然后再做 ,以确保正确设置。不熟悉Hypercore? 提供了一些背景知识,并向您介绍了创建仅附加日志(Hypercore)并与对等共享的基础知识。是否想使用Hypercores构建数据结构? 如果...

    P2P之TCP打洞(翻译)

    防火墙和网络地址转换(NAT)设备变得越来越流行了,它们给使用P2P 协议建立连 接造成了明显的问题。适当的进行配置,这些中间箱阻止从局域网以外发起的TCP 连接请 求。这篇文章提出一种新颖的机制用于在两台...

    P2P网络技术原理与C++开发案例 源代码和第五章电子书 Peercast(王浩聪注释版)

    6.1.5 Windows Peer-to-Peer Networking平台开发入门 139 6.2 JXTA 161 6.2.1 JXTA简介 161 6.2.2 JXTA的平台结构 162 6.2.3 JXTA的基本概念 163 6.2.4 JXTA的网络架构 166 6.2.5 JXTA开发环境 171 ...

    区块链入门–准备搭建自己的区块链

    文章目录区块链技术简述技术名词区块链的类型 三种区块链特点区块链平台应用场景区块链技术组成部分P2P网络协议P2P网络实现密码学-Hash密码学-加解密算法账本结构共识算法(分布式一致性算法)Hyperleger Fabric简介...

    kachery-p2p:使用kachery的对等内容可寻址文件共享

    当前版本: kachery-p2p 0.6.8当前协议版本: kachery-p2p 0.6.1p Kachery-p2p是一个点对点,内容可寻址的文件存储和分发框架,可以在最小的基础架构要求下运行,并提供命令行和程序接口来进行文件分发。 简而言之...

    axecore-p2p:到AX p2p网络的接口

    AXEcore P2P axecore-p2p添加了对Axecore的Ax协议支持。 有关更多信息,请参见。入门npm install @axerunners/axecore-p2p 为了连接到Ax网络,您需要知道网络中至少一个节点的IP地址,或者使用通过DNS种子发现对等...

    ESFramework系列Demo源码

    本demo是一个简单的IM程序,展示了Rapid引擎最基础的功能:信息类型定义、协议定义、信息发送与处理、信息同步调用、好友上下线通知、断线重连等。 2.ESFramework之文件传送Demo 本demo是在1.ESFramework之入门Demo...

    libp2p-rpc:使用协议缓冲区的带有rpc的libp2p节点

    libp2p-rpc libp2p-rpc提供基于构建的对等RPC。 它涵盖了构建对等2对等应用程序所需的所有工作,从对等发现到协议握手...入门 在.proto文件中定义您的RPC协议。 签出以获取更多信息。 syntax = "proto3"; service Pro

    Remoting入门程序

    Remoting能够开发P2P(qq) C/S 有点:可配置 安全,比webservice速度快 Remoting调用成千上万个对象,只需要调用一个url. 有自己的安全机制 远程对象/本地对象 远程对象申明实在另外一台机子上。本地对象运行在...

    godx:DxChain协议的Go实现

    DxChain是用于数据存储的基于区块链的P2P网络。 核心功能是用户可以作为存储客户端将数据上传到网络,也可以作为存储主机为网络中的其他对等方提供数据存储服务。 此外,DxChain还包含其他区块链支持的功能,例如...

    C#学习文档实例讲解

    7.1 简单的3D设计入门 154 7.2 DirectX基础知识 160 7.2.1 左手坐标系与右手坐标系 160 7.2.2 设备 160 7.2.3 顶点与顶点缓冲 161 7.2.4 Mesh对象 162 7.2.5 法线 162 7.2.6 纹理与纹理映射 162 7.2.7 世界矩阵、...

    近场通讯P2P、NFC读卡器、模拟卡上位机源码+STM32源码-电路方案

    4、NFC-LIST的stm32源码(也就是可以寻各种协议的卡,并显示卡UID等信息) 演示视频有 读写卡和P2P的,地址如下: 读写卡:https://v.youku.com/v_show/id_XNjQ0NDU3OTc2.html?firsttime=0 P2P(点对点):...

    P2PChat:一个简单的客户端程序,支持基于课程定义的协议的对等连接和通信,并具有Python支持的朴素GUI

    一个简单的客户端程序,支持基于课程定义的协议的对等连接和通信,以及Python支持的朴素GUI。 先决条件 目前,该程序仅在使用Python 3.5.2的Ubuntu 1604上进行过测试 入门 安装python虚拟环境 pip3 install ...

    ROS机器人操作系统入门 Tutorials CN版 20150726

    Computation Graph Level(计算图)就是用ROS的P2P(peer-to-peer网络传输协议)网络集中处理所有的数据。基本的Computation Graph的概念包括Node, Master, Parameter Sever,messages, services, topics, 和bags...

    vc++ 开发实例源码包

    目前的协议有如下一些特点: 1) 客户向服务器发送请求, 每个请求的长度不定. 请求的长度在第一个INT中指定. 2) 每个服务器通常会向多种客户提供服务, 例如, TS要同时向CP, NP提供服务, CP要向NP和其他CP提供服务, ...

    C#网络核心编程(Word版电子书+PPT+源代码+习题解答)

    7.1 简单的3D设计入门 154 7.2 DirectX基础知识 160 7.2.1 左手坐标系与右手坐标系 160 7.2.2 设备 160 7.2.3 顶点与顶点缓冲 161 7.2.4 Mesh对象 162 7.2.5 法线 162 7.2.6 纹理与纹理映射 162 7.2.7 世界矩阵、...

    WINDOWS网络与通信程序设计(分卷3)

    ·讲述Windows网络程序设计的入门教程,展示了各种WindowsI/O方法,详细说明了高性能可伸缩性服务器的开发过程,并给出详尽的实例代码。 ·将编程方法、网络协议和应用实例有机结合起来,详细介绍了Internet广播和IP...

    WINDOWS网络与通信程序设计(分卷2)

    ·讲述Windows网络程序设计的入门教程,展示了各种WindowsI/O方法,详细说明了高性能可伸缩性服务器的开发过程,并给出详尽的实例代码。 ·将编程方法、网络协议和应用实例有机结合起来,详细介绍了Internet广播和IP...

    WINDOWS网络与通信程序设计(分卷4)

    ·讲述Windows网络程序设计的入门教程,展示了各种WindowsI/O方法,详细说明了高性能可伸缩性服务器的开发过程,并给出详尽的实例代码。 ·将编程方法、网络协议和应用实例有机结合起来,详细介绍了Internet广播和IP...

Global site tag (gtag.js) - Google Analytics