什么是P2P和它的应用

P2P(对等网络)技术通过非中心化方式解决HTTP和FTP下载的带宽压力问题。P2P允许用户之间直接分享文件,缓解服务器压力。其工作原理包括依赖tracker的元数据集中和基于分布式哈希算法的全部分散两种模式。P2P网络有DHT、树形和网状三种结构。应用实例如BitTorrent,通过种子(torrent)文件找到其他peer进行文件交换。离线下载如迅雷利用服务器或P2P技术提高下载效率。P2P技术目前广泛应用在分布式科学计算、文件共享和流媒体直播等领域。

HTTP 协议和 FTP 协议,都有一个缺点:

就是难以解决单一服务器的带宽压力, 因为它们都是使用传统的客户端——服务器连接的方式。
一种创新的、被称为 P2P 的协议解决了这个问题。P2P全称peer-to-peer。p2p的资源不集中存储在某些设备上,而是分散地存储在许多设备上。这些设备我们称之为 peer。没有服务器的概念,客户端终端设备互相存储。

 

HTTP下载和FTP下载

我们使用Web浏览器时,http协议和ftp协议之间的差异,几乎不会对使用的方便性和下载的时间产生影响。不过,它们却是不同的结构。

HTTP下载

HTTP是为了将全球各地的Web服务器的内容,发送给不特定的众多用户,而制订的协议。可以把HTTP看作是向不特定的用户“发放”文件的协议。
HTTP协议用于从服务器读取内容。如:Web浏览器下载Web服务器中的HTML文件及图像文件等,并临时保存在个人电脑硬盘及内存中以供显示。使用HTTP下载内容:只要指定文件,任何人都可以进行下载。

FTP下载

FTP即文件传输协议,FTP是为了在特定主机之间“传输”文件而开发的协议。所以,在FTP通信的起始阶段,必须运行使用:“用户ID和密码”确认通信对方的认证程序。FTP 采用两个 TCP 连接,来传输一个文件。

控制连接:服务器以被动的方式,打开用于 FTP 的端口 21,客户端则主动发起连接。该连接将命令从客户端传给服务器,并传回服务器的应答。常用的命令有:list——获取文件目录;reter——取一个文件;store——存一个文件。
 

FTP 的两种工作模式:

FTP 有两种工作模式,分别是主动模式(PORT)和被动模式(PASV),这些都是站在 FTP 服务器的角度来说的。

P2P定义

使用 HTTP 或 FTP技术,都是集中下载的方式。

P2P 采取非中心化下载的方式。

P2P (Peer-to-peer) 允许一组用户互相连接,并直接从用户硬盘上获取文件的网络。它是一个运行于个人电脑上的应用,通过网络在用户间分享文件。P2P网络通过连接个人电脑分享文件而不是通过中央服务器。

P2P是一种分布式网络,网络的参与者共享他们所拥有的一部分硬件资源(处理能力、存储能力、网络连接能力、打印机等),这些共享资源需要由网络提供,并能被其它对等节点(peer)直接访问,而无需经过中间实体。在此,网络中的参与者既是资源(服务和内容)提供者(server),又是资源(服务和内容)获取者(client)


数据连接:每个文件在客户端与服务器之间传输时,就会创建一个数据连接。

P2P 也是有两种,一种是依赖于 tracker 的,也即元数据集中,文件数据分散;

另一种是基于分布式的哈希算法,元数据和文件数据全部分散。

 

P2P技术原理

对等网络(P2P)技术

P2P技术相对于客户机-服务器(C/S)模式来说,是一种网络信息交换方式。在C/S模式中,数据的分发采用专门的服务器,多个客户端都从此服务器获取数据。

这种模式的优点是:数据的一致性容易控制,系统也容易管理。但是此种模式的缺点是:因为服务器的个数只有一个(即便有多个也非常有限),系统容易出现单一失效点;单一服务器面对众多的客户端,由于CPU能力、内存大小、网络带宽的限制,可同时服务的客户端非常有限,可扩展性差。P2P技术正是为了解决这些问题而提出来的一种对等网络结构。在P2P网络中,每个节点既可以从其他节点得到服务,也可以向其他节点提供服务。这样,庞大的终端资源被利用起来,一举解决了C/S模式中的两个弊端。
 

P2P网络的组织结构

P2P网络有3种比较流行的组织结构,被应用在不同的P2P应用中。
  (1)DHT结构
  分布式哈希表(DHT)是一种功能强大的工具,它的提出引起了学术界一股研究DHT的热潮。虽然DHT具有各种各样的实现方式,但是它们具有共同的特征,即都是一个环行拓扑结构,在这个结构里每个节点具有一个唯一的节点标识(ID),节点ID是一个128位的哈希值。每个节点都在路由表里保存了其他前驱、后继节点的ID。通过这些路由信息,可以方便地找到其他节点。这种结构多用于文件共享和作为底层结构用于流媒体传输。
  (2)树形结构
  P2P网络树形结构。在这种结构中,所有的节点都被组织在一棵树中,树根只有子节点,树叶只有父节点,其他节点既有子节点也有父节点。信息的流向沿着树枝流动。最初的树形结构多用于P2P流媒体直播。
  (3)网状结构
  网状结构,又叫无结构。顾名思义,这种结构中,所有的节点无规则地连在一起,没有稳定的关系,没有父子关系。网状结构为P2P提供了最大的容忍性、动态适应性,在流媒体直播和点播应用中取得了极大的成功。当网络变得很大时,常常会引入超级节点的概念,超级节点可以和任何一种以上结构结合起来组成新的结构。

 

实例

例如:
BitTorrent
想要下载一个文件,你只要得到已经存有文件的 peer,并和这些 peer 建立点对点的连接,而不需要到中心服务器上,即可以就近从peer下载文件。

一旦下载了文件,你也就成为 peer 中的一员,你附近的机器,也可能会选择从你的机器下载文件,所以当你使用 P2P 软件的时候,例如 BitTorrent,就会看到,既有下载流量,也有上传的流量,这就是你的peer也加入了这个 P2P 的网络,从别人那里下载的同时也提供给其他人下载。

这种方式,参与的人越多,下载速度越快。

种子(torrent)文件

当你想下载一个文件的时候,怎么知道哪些 peer 有这个文件呢? 这就用到种子啦,即torrent 文件。torrent 文件由两部分组成,分别是:announce(tracker URL)和文件信息。(tracker谷歌翻译为跟踪器)

文件信息里面有这些内容:

info 区:这里指定的是该种子有几个文件、文件有多长、目录结构,以及目录和文件的名字
Name 字段:指定顶层目录名字
每个段的大小:BitTorrent(简称 BT)协议把一个文件分成很多个小段,然后分段下载
段哈希值:将整个种子中,每个段的 SHA-1 哈希值拼在一起


工作过程:

下载时,BT 客户端首先解析.torrent 文件,得到 tracker 地址,然后连接 tracker 服务器。
tracker 服务器回应下载者的请求,将其他下载者(包括发布者)的 IP 提供给下载者。
下载者再连接其他下载者,根据.torrent 文件,两者分别告知对方自己拥有的块,然后彼此交换没有的数据。
此时不需要其他服务器参与,并分散了单个线路上的数据流量,因此减轻了服务器的负担。

这个过程也可以看出,这种方式特别依赖 tracker。tracker 是需要收集下载者信息的服务器,并将此信息提供给其他下载者,使下载者们相互连接起来,传输数据。

虽然下载的过程是非中心化的,但是加入这个 P2P 网络的时候,都需要借助 tracker 中心服务器,这个服务器是用来登记有哪些用户在请求哪些资源。

所以,这种工作方式有一个弊端,一旦 tracker 服务器出现故障或者线路遭到屏蔽,BT 工具就无法正常工作了。

去中心化网络(DHT)

为了彻底去中心化,后来就有了一种叫作DHT(Distributed Hash Table)的去中心化网络。

每个加入这个 DHT 网络的人,都要负责存储这个网络里的资源信息和其他成员的联系信息,相当于所有人一起构成了一个庞大的分布式存储数据库。

有一种著名的 DHT 协议,叫Kademlia 协议。这个和区块链的概念一样,很抽象。

任何一个 BitTorrent 启动之后,它都有两个角色。一个是peer,监听一个 TCP 端口,用来上传和下载文件,这个角色表明,我这里有某个文件。另一个角色DHT node,监听一个 UDP 的端口,通过这个角色,这个节点加入了一个 DHT 的网络。

 

迅雷离线下载的原理

离线下载即利用服务器“替”网友的电脑下载。具有高速、不用挂机的优点而颇受欢迎。如果用户要下载一些大资源,往往要长时间挂机,不仅浪费时间而且消耗大量的带宽。 离线下载其实就是下载工具的服务器代替用户先行下载,多用于冷门资源。比如,用户的正常下载最大速度能达到200KB/S,但是某个资源是冷门资源,下载速度只能达到10KB/S,用户就得下很久,如果用户使用离线下载技术,就可以让服务商的服务器代替用户下载,用户就可以关掉下载工具或者机器,节约时间和电费。等到离线下好了,用户再从下载工具的服务器上以200KB/S(理论上会员等级越高越快,但最高速度仍然受限制于你的本身宽带)的速度下到自己的电脑上。即使对于热门资源,离线下载也能省去许多挂机等待的时间,最重要的是能够腾出电脑宽带做其他的事情。 

操作过程:(1)用户通过客户端或Web界面提交一个下载请求。 (2)公司服务器端接受请求,服务器首先查询用户提交的下载链接是否被下载过;如果没有,开启多线程实施下载(或用迅雷自己特有的P2P方式);如果有,直接把已下载的数据文件(或只是文件的链接)放入用户服务器端的在线空间。 (3)下载完成后,用户在线登录到在线空间,取回下载的文件。其间也可以采用迅雷自己的P2P方式,从已下载或正在下载相同文件的用户那里取得数据。 (4)离线下载多针对冷门资源,或资源少的文件。待服务器端替用户下载完成后,用户还需要利用下载软件从服务器下载文件。相比直接下载,增加了下载资源速度,节约了时间。

简单来说,就是如果要下载的资源已经存在于迅雷的服务器中,那么直接用P2P的方式从迅雷的服务器中取回。如果下载的资源尚未下载,那么可以将下载任务交由服务器代为完成(委托模式),由于服务器的带宽性能等远胜于普通用户,所以下载效率更高,最重要的是服务器是一直在线的。

 

P2P技术应用现状

由于能够极大地缓解传统架构中服务器端压力过大、单点失效的问题,又能充分利用终端的剩余资源,所以P2P技术被广泛应用于计算机网络的各个领域,如分布式科学计算、文件共享、流媒体直播与点播、语音通信及在线游戏支撑平台等方面。
  (1)分布式科学计算
 许多计算机的CPU资源并不是时刻保持峰值运转的,甚至很多时候计算机处于“空闲”状态,比如使用者暂时离开等情况。而P2P技术可以使得众多终端的CPU资源联合起来,服务于一个共同的计算。这种计算一般是计算量巨大、数据极多、耗时很长的科学计算。在每次计算过程中,任务(包括逻辑与数据等)被划分成多个片,被分配到参与科学计算的P2P节点机器上。在不影响原有计算机使用的前提下,人们利用分散的CPU资源完成计算任务,并将结果返回给一个或多个服务器,将众多结果进行整合,以得到最终结果。
  (2)文件共享
“BT”是BitTorrent的简称,是一种依赖P2P方式将文件在大量互联网用户之间进行共享与传输的协议,对应的客户端软件有BitTorrent、BitComet和BitSpirit等。由于其实现简单、使用方便,在中国用户之间被广泛使用。BitTorrent中的节点在共享一个文件时,首先将文件分片并将文件和分片信息保存在一个流(Torrent)类型文件中,这种节点被形象地称作“种子”节点。其他用户在下载该文件时根据Torrent文件的信息,将文件的部分分片下载下来,然后在其他下载该文件的节点之间共享自己已经下载的分片,互通有无,从而实现文件的快速分发。由于每个节点在下载文件的同时也在为其他用户上传该文件的分片,所以不会随着用户数的增加而降低下载速度,反而下载的人越多速度越快。
BitTorrent是一种无结构的网络协议。

  (3)流媒体直播
曾经人们以为P2P做文件共享最合适,但现在大家发现P2P模式是如此适合于流媒体直播,以至于研究热点在很短的时间内迅速转移到P2P的流媒体上来。中国还涌现了很多成功的P2P流媒体直播商业产品,如PPLive、PPStream、沸点和TVAnts等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值