P2P技术揭秘(一):P2P技术概述

为了更好的理解区块链的底层设计,我觉得有必要完整的学习一下P2P网络的技术,为此专门找了《P2P技术揭秘——P2P网络技术原理与典型系统开发》这本书来读。这篇博客就是记录学习过程中的一些笔记。

P2P技术概述

P2P在数学上的严格定义

  • 有某网络N,是架构在Internet上的网络,满足Internet网络的所有基本特征;
  • N网络中,存在两种基本的行为模式,一种行为定义为P,是生产资源(提供资源的行为),另一种行为定义为C,是消费资源(接受资源)的行为;
  • 组成N网络的所有网络节点(Peer)之间是对等的关系,且同时具备行为P和行为C
  • N网络中,各Peer之间以无中介的、对等的方式进行双向交换,以执行PC的功能;
  • N网络依赖Peer的存在而存在,且Peer可以自由地加入或退出;
  • 当有Peer加入或退出时,N仍保持组织、结构等特性不发生改变。

满足以上6个条件的网络N,就可以说是P2P网络。在这个网络汇总,实现了资源的生产和消费的对等平衡,实现了信息和服务在一个个人或对等设备与另一个个人与对等设备间的双向流动。一个完整的P2P网络模型如图所示:

P2P_network_structure

P2P发展实例

  1. P2P文件共享系统——eMule(基于eDonkey的网络协议)

  2. P2P下载技术——迅雷

    迅雷的技术主要分成两个部分:

    • 一部分是对现有Internet下载资源的搜索和整合,将现有Internet上的下载资源进行校验,将相同检验值的统一资源定位(URL)信息进行聚合。当用户单击某个下载链接时,迅雷服务器按照一定的策略返回该URL信息所在聚合的子集,并将该用户的信息返回给迅雷服务器。
    • 另一部分是迅雷客户端通过多资源多线程下载所需要的文件,提高下载速率。
  3. P2P文件传输技术——BT

    BT协议是一个网络文件传输协议,它能够实现点对点文件分享的功能。

    BT中,BT种子文件信息是根据对目标文件的计算生成的,计算结果根据BT协议内的B编码规则进行编码。它的主要原理是需要把提供下载的源文件虚拟分成大小相等的块,块大小必须为2k的整数次方,并把每个块的索引信息和Hash验证码写入.torrent文件中,所以.torrent文件简单地说就是被下载的源文件的“索引”信息。

  4. P2P视频分发技术——PPLive

    PPLive是一款用于互联网上大规模视频直播的免费软件,是基于P2P技术的流媒体发布和传输方面的典型代表,也是P2P技术在视频直播、点播应用上的成功范例。

  5. P2P网络语音通信技术——Skype

P2P的技术特点及存在的问题

  1. P2P的网络虚拟性
  2. P2P的拓扑动态性
  3. P2P的网络健壮性
  4. P2P的负载均衡
  5. P2P在应用中的高性价比
  6. P2P是处于应用层的网络

P2P发展带来的问题

  1. 知识产权问题
  2. 黑客和病毒入侵问题
  3. 敏感信息的泄漏问题
  4. 带宽问题

P2P网络拓扑结构

根据拓扑结构的关系可以将P2P网络拓扑结构分为4种形式:

  • 集中式拓扑(也称中心化拓扑)
  • 全分布式结构化拓扑(也称DHT网络)
  • 全分布式非结构化拓扑
  • 混合式拓扑

集中式的P2P网络拓扑

集中式P2P网络模型结构图如下:

centeralized_topology

全分布式结构化P2P网络拓扑

全分布式结构化拓扑的P2P网络主要是采用分布式散列表技术来组织网络中的节点。分布式散列表的全称是Distributed Hash Table,简写为DHT

结构化P2P网络中,每个节点都有固定的地址,整个网络具有相对稳定而规则的拓扑结构。依赖拓扑结构可以给网络的每个节点制定一个逻辑地址,并把地址和节点的位置对应起来。

全分布式非结构化的P2P网络

这种结构的覆盖网络一般采用基于完全随机图的组织方式,节点度数服从Power-law规律(幂次法则),从而能够较快发现目的节点。

非结构化网络中,节点没有制定的逻辑地址,采用随机算法或者启发策略加入网络,网络拓扑随着节点的变迁和网络通信的进行而发生演变。

混合式P2P网络结构

混合式P2P网络模型结构图如下:

partially_decentralized_topology

P2P网络的搜索技术

什么是P2P搜索

P2P网络的根本思想就在于对等和共享。在P2P系统中,资源是分散在各个节点之上的,并且节点频繁地加入或退出都相当自由,几乎没有规律可循。这些都使得P2P系统及整个P2P系统的资源都处于不断的变化之中,那么如何找到并定位这些节点和资源,就是P2P需要解决的一个重要问题。

所谓P2P搜索技术,就是一种P2P资源的发现和定位技术,通过搜索算法来发现、查找P2P网络中,在时间和空间上都处于动态的变化的节点信息和资源存储信息,以最大限度、最快速度、尽可能多且准确的发现节点上的资源。

相比于Web搜索,Web搜索是面向全网的,凡是加入到Internet中的主机节点理论上都适用于Web搜索,P2P搜索则是面向P2P网络架构的。

P2P网络搜索技术

  1. 集中式P2P网络采用目录索引机制。
  2. 结构化P2P网络
    1. 基于DHT的搜索实现
    2. Chord网络搜索技术
    3. Pastry网络搜索技术
    4. CANTapestry
  3. 非结构化P2P网络的搜索方法(盲目搜索和启发式搜索)
    1. Flooding搜索算法
    2. 迭代递增搜索
    3. 启发式泛洪搜索
    4. Random Walk搜索方法