`

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
分享到:
评论

相关推荐

    Flash P2P 游戏入门

    《Flash P2P游戏入门:理解RTMFP与构建P2P游戏的策略》 在数字娱乐领域,尤其是在在线游戏产业中,P2P技术(Peer-to-Peer,点对点)的应用为游戏开发带来了革命性的变化。Flash,作为曾经主导网络动画、交互式网页...

    P2P_SDK_3.1.4.33_1.zip TUTK IOTC官方sdk

    3. **安全加密**:采用安全协议保障数据传输的安全性,防止数据被窃取或篡改。 4. **设备管理**:提供设备注册、上线、下线等管理功能,方便用户管理和监控设备状态。 5. **实时监控**:支持实时视频预览、录像回放...

    有关P2P与流媒体,可供入门与提高用

    它通过特定的实时传输协议,比如RTP(Real-time Transport Protocol)和RTSP(Real-Time Streaming Protocol),实现数据的边下载边播放,降低了启动延迟,减少了对系统缓存容量的需求。流媒体技术主要分为单播、多...

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

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

    P2P之TCP打洞(翻译)

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

    JXTA-Java-P2P网络编程技术书后源码

    1. **第三章:JXTA入门** 在这一章中,你将学习到JXTA的基本概念和架构。包括JXTA的四个主要组件:广告(Advertisements)、管道(Pipes)、端点(Endpoints)和协议栈(Protocol Stack)。广告是描述服务或资源的...

    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 ...

    Web RTC完美入门教程(康林)

    WebRTC完美入门教程由康林编写,主要介绍了网页实时通信(Web Real-Time Communication)技术。这是一种在浏览器中实现点对点实时通信的技术,可以支持语音、视频通话等功能。WebRTC技术在国内资料较少,因此本教程...

    HelloJxta.rar_jxta_p2p jxta

    总结来说,“HelloJxta.rar”是一个理想的入门级JXTA P2P编程示例,通过分析和实践其中的代码,开发者可以深入了解P2P网络的工作机制,以及如何利用JXTA构建实际的对等网络应用。同时,配合www.pudn.com.txt提供的...

    易语言源码易语言P2P聊天源码.rar

    2. **网络编程**:P2P聊天涉及到网络通信,因此会涵盖TCP/IP协议、套接字编程等概念。易语言提供了网络相关的函数,如建立连接、发送和接收数据等。 3. **多线程编程**:为了实现同时处理多个连接和并发通信,源码...

    网络编程从入门到精通源代码

    这些内容可能涉及Nginx、Apache等服务器的配置,或者P2P网络、WebSocket等现代网络技术的应用。 7. **实战项目**:通过实际的项目练习,如实现一个简单的聊天室、文件传输服务等,能更好地巩固所学知识,并提升解决...

    ActiveMQ实践入门指南

    1. **消息路由与分发**:ActiveMQ作为消息中间件,能够高效地将消息从生产者路由到消费者,支持复杂的订阅模型,如点对点(P2P)和发布/订阅(pub/sub)模式,以满足不同场景下的消息分发需求。 2. **异步通信**:在高...

    CC3200开发套件入门

    CC3200搭载Wi-Fi网络处理器子系统,支持802.11b/g/n标准,可以作为基站(STA)、访问点(AP)或进行Wi-Fi直接通信(P2P)。它包含完整的IPv4 TCP/IP堆栈,借助SimpleLink™驱动程序,简化了Wi-Fi和互联网协议的使用...

    J2EE快速入门J2EE快速入门

    它支持点对点(P2P)和发布/订阅(Pub/Sub)两种模式,提供异步通信的能力,有助于解耦应用程序的各个部分,提高系统的可扩展性和容错性。 **4. 数据库连接:JDBC与JNDI** JDBC(Java Database Connectivity)是...

    activeMQ入门到精通.txt

    根据提供的文件信息:“activeMQ入门到精通”,我们可以深入探讨ActiveMQ的相关知识点,包括其基本概念、安装配置步骤、核心功能特性以及应用场景等。 ### ActiveMQ简介 ActiveMQ是一款开源的消息中间件,它支持...

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

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

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

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

    易语言P2P交互源码-易语言

    易语言是中国本土开发的一款编程工具,以其直观的“汉字编程”理念,降低了编程的入门门槛。在P2P交互源码中,我们可以学习到如何利用易语言进行网络通信,实现数据的交换和共享。 P2P网络是一种去中心化的网络架构...

    Ubuntu桌面入门指南

    - **Pidgin**:一款多协议聊天客户端,支持MSN、AIM等多种IM服务。 - **XChat-GNOME**:一款IRC客户端,可加入IRC频道参与实时聊天。 - **使用XChat-Gnome加入#ubuntu**:加入Ubuntu官方IRC频道获取技术支持和...

    RTC网络技术入门.zip

    本资料“RTC网络技术入门”将带你深入理解RTC的基本概念、工作原理以及实现方法。 RTC技术的核心是实现实时、低延迟的数据传输,这在传统的HTTP等无状态协议中难以实现。RTC技术主要由以下几个关键部分组成: 1. *...

Global site tag (gtag.js) - Google Analytics