P2P应用

  • P2P应用指的是P2P体系结构的网络应用,所谓的P2P体系结构就是在这样的网络中,没有固定的服务器,而绝大多数的交互都是使用对等方式通信(P2P)。
  • 具有集中目录服务器的P2P工作方式
    • 最早的P2P工作方式的是Napster软件。
    • P2P_数据
    • 用户X向Napster目录服务器查询(客户-服务器模式)谁有音乐mp3。
    • Napster目录服务器回答X,有三个地点由mp3文件,分别是主机A,B,C(给出这三个地址的IP地址。)于是用户X就得到了mp3文件的地址。
    • 用户X可以随机选择一个地址,也可以通过ping寻找最方便下载的一个,如图,我们假定用户X选择了主机A发送请求下载MP3文件的报文,现在X和A都适用的是P2P通信。X是临时的客户,对等方A就成了临时的服务器。
    • 对等A(现在就作为服务器)把mp3文件发送给X。
  • 集中式目录服务器最大的缺点是可靠性差,而且并不适合高并发情况下。更为严重的问题是可能会导致侵权问题,因此Mapster在2000年就倒闭了。

具有全分布式的P2P文件共享程序

  • 在第一代P2P文文件共享系统Napster倒闭后,出现了新的一代P2P文件文件共享程序,代表程序有Gnutella,这是一个采用全分布式定位内容的P2P文件共享程序。第二代与第一代最大的不同是不使用集中式的目录服务器进行查询,而是使用洪泛法在大量Gnutella用户之间进行查询,为了不使查询的通信量太大,Gnutella设计了一种有效范围的洪泛查询,这样就可以减少注入到互联网络的查询流量但是这种查询范围有限,因此这也影响到查询范围的准确性。
  • 为了使更多的用户之间使用P2P技术下载共享文件,最近几年又出了很多第三代P2P共享文件程序,例如电驴,比特洪流BT(Bit Torrent),它们一般采用的是分散定位和分散传输技术。
  • Bit Torrent把参与某个文件分发的所有对等方的集合称之为一个洪流,BT把对等方下载文件的数据单元称之为文件块(chunk),一个文件块的固定长度是不变的,例如典型的数值是256KB。当一个新的对等方假如某一个洪流时,一开始它并没有文件块,某个对等方获得了整个文件后,可以立即退出这个洪流(相当于自私的用户),也可以继续留在这个洪流中,为其他的对等方上传文件块(现代刚玉无私的用户)。加入或者退出某个洪流可以再任何时间内完成(即使在某一个文件阿hi没有下载完成的情况下)。也是完全自由的。
  • BT协议非常的复杂,下面只讨论其基本机制
    • P2P_服务器_02
      1. 每一个洪流都有一个基础设施结点,叫做追踪结点(tracker),当一个对等方加入洪流的时候,必须要向追踪器注册(登记),并周期性的通知追踪器自己仍然还在洪流中,追踪器因而就跟踪了洪流中的对等方。一个洪流中至少拥有几个甚至上千个对等方。
      2. 当一个新的对等方A加入到洪流中,追踪器就随机的从参与的对等方集合中选择若干个,并把这些对等方的IP地址告诉A,于是A就和这些对等方建立起了TCP连接。我们称与A建立起来的对等方称之为相邻对等方
      3. 在任何时候,每一个对等方只能拥有某文件的一个文件块子集,而不同的对等方所拥有的额文件块子集也不一定完全相同。对等方A将通过TCP连接周期性的向其他相邻对对等方索取他们拥有的文件块列表。根据收到的文件块列表,A就知道应当请求哪一个相邻文件对等方把哪些自己缺少的文件发送过来。
    • 哪些文件块是首先需要向其相邻对等方请求的?对于这个问题,A要使用的是最稀有的优先技术,如果A缺少的文件块在相邻对等方中的副本很少,那就是稀有的,因此,A首先要请求副本最少的文件块(即是最稀有的),否则,一旦拥有最稀有的文件块的对等方退出了洪流。就会影响A对所缺文件块的收集。
    • 在很多向A请求快的相邻文件方中,A应当向哪些相邻对等方发送请求的文件块?BT采用了更灵活的算法,其基本思想是凡当前有以最高数据率向A传送文件快的某相邻对等方,A就优先把所请求的文件块传送还给相邻的对等方,具体来说,A持续的测量从相邻对等方接受数据的速率,并确定速率最高的4个相邻的对等方。接着,A就把文件块发送给这4个相邻对等方,每隔10s,A还要重新计算数据率,然后可能修改这4个对等方,在BT术语中,这4个对等方,叫做已疏通或者无障碍的对等方。更重要的是,每隔30s,A要随机找一个另外的相邻对等方B,并向其发送文件块,这样A就有可能会成为B的前4位上传传文件块的提供者。这样的做法是,这些对等方相互之间就能够以令人满意的速率交换文件块。