📜  P2P(点对点)文件共享

📅  最后修改于: 2022-05-13 01:57:02.693000             🧑  作者: Mango

P2P(点对点)文件共享

介绍
在计算机网络中,P2P 是一种文件共享技术,允许用户访问的主要是多媒体文件,如视频、音乐、电子书、游戏等。这个网络中的个人用户称为Peer 。对等点通过建立 TCP 或 UDP 连接从其他对等点请求文件。

P2P 的工作原理(概述)
对等网络允许计算机硬件和软件在不需要服务器的情况下进行通信。与客户端-服务器架构不同,在 P2P 架构中没有用于处理请求的中央服务器。对等点直接相互交互,无需中央服务器。

现在,当一个对等点发出请求时,多个对等点可能拥有该请求对象的副本。现在的问题是如何获取所有这些对等方的 IP 地址。这是由 P2P 系统支持的底层架构决定的。通过这些方法之一,客户端对等点可以了解具有请求的对象/文件的所有对等点,并且文件传输直接在这两个对等点之间进行。

存在三种这样的架构:

  1. 集中目录
  2. 查询泛滥
  3. 利用异构性

1. 集中目录

  • 它有点类似于客户端-服务器架构,因为它维护一个巨大的中央服务器来提供目录服务。
  • 所有对等点都将它们的 IP 地址和它们可供共享的文件通知此中央服务器。
  • 服务器定期查询对等点以确保对等点是否仍然连接。
  • 所以基本上这个服务器维护一个庞大的数据库,关于哪个文件存在于哪个 IP 地址。

在职的

  • 现在,每当请求对等方进入时,它都会将其查询发送到服务器。
  • 由于服务器拥有其对等点的所有信息,因此它会将所有拥有请求文件的对等点的 IP 地址返回给对等点。
  • 现在文件传输发生在这两个对等点之间。

第一个使用这种方法的系统是Napster ,用于 Mp3 分发。

这种架构的主要问题是存在单点故障。如果服务器崩溃,整个 P2P 网络就会崩溃。此外,由于所有处理都将由单个服务器完成,因此必须维护和定期更新大量数据库。

2.查询泛滥

  • 与集中式方法不同,此方法利用分布式系统。
  • 在这种情况下,对等点应该连接到覆盖网络。这意味着如果存在从一个对等点到另一个对等点的连接/路径,它就是该覆盖网络的一部分。
  • 在这个覆盖网络中,对等点称为节点,对等点之间的连接称为节点之间的边,从而形成了类似图的结构。

在职的

  • 现在,当一个对等方请求某个文件时,该请求将发送到其所有相邻节点,即发送到连接到该节点的所有节点。如果这些节点没有所需的文件,它们会将查询传递给它们的邻居,依此类推。这称为查询泛洪。
  • 当找到具有请求文件的对等方时(称为查询命中),查询泛洪停止并将文件名和文件大小发送回客户端,从而遵循反向路径。
  • 如果有多个查询命中,则客户端从这些对等点之一中进行选择。

Gnutella是第一个去中心化的点对点网络。

这种方法也有一些缺点,例如,除非找到匹配项,否则必须将查询发送到所有相邻对等方。这增加了网络中的流量。

3. 利用异质性

  • 这种 P2P 架构利用了上述两个系统。
  • 它类似于 Gnutella 之类的分布式系统,因为没有用于查询处理的中央服务器。
  • 但与 Gnutella 不同的是,它并没有平等地对待所有的同行。具有更高带宽和网络连接的对等点具有更高的优先级,被称为组长/超级节点。其余的对等节点被分配给这些超级节点。
  • 这些超级节点是相互连接的,这些超级节点下的对等节点会通知各自的领导者他们的连接性、IP 地址和可共享的文件。

KaZaA技术就是这样一个利用 Napster 和 Gnutella 的例子。
因此,各个小组的领导者以及他们的孩子同龄人都来自类似 Napster 的结构。然后这些组长相互连接,形成类似 Gnutella 的结构。

在职的

  • 此结构可以通过两种方式处理查询。
  • 第一个是超级节点可以联系其他超级节点并将他们的数据库与自己的数据库合并。因此,这个超级节点现在拥有大量对等点的信息。
  • 另一种方法是,当查询进来时,它会被转发到相邻的超级节点,直到找到匹配项,就像在 Gnutella 中一样。因此存在查询泛洪,但范围有限,因为每个超级节点都有许多子节点。因此,这样的系统通过将其中一些指定为组长/超级节点和其他作为它们的子对等来利用对等的异质性。

参考资料——计算机网络:一种自上而下的方法 James F. Kurose