【计网】2.5 P2P简述

【计网】2.5 P2P简述
本文基于《计算机网络——自顶向下方法》一书

2.5 P2P文件分发

在前文提到过,P2P是一种**”互相帮助“的网络。在一个P2P网络中,主机A请求下载文件B,则会有多台已经存储了文件B的主机向主机A传输文件B的数据,而主机A也可以向其他请求下载文件B的主机传输它已经下载好的那一部分的数据。这种多对多的网络中的主机称之为对等方**,因为在P2P中,一个主机既是接收数据的客户机,又是发送数据的服务器。

目前最流行的P2P文件分发协议是BitTorrent。在P2P中,每一个对等方可以给其他对等方发送他已经接收到的文件的任何一部分,从而协助中心服务器,分散服务器的带宽压力。

1.P2P体系结构的扩展性

我们通过客户-服务器体系结构和P2P体系结构的比较来说名P2P的扩展性。

做个简单的假设,一共有N个主机要请求文件A,那如果是客户-服务器体系结构,则仅有服务器向其他客户机传输文件B的信息。那么传输所需的时间是随着请求数量N的上升而线性上升的,因为N上升了,每个主机分到的带宽就少了。但是如果是P2P体系结构,那N个请求的主机也是N个对等方,他们可以向彼此发送彼此下载好的文件A的部分,从而分担了服务器的压力。也就是说,P2P体系结构的整体传输带宽会随着网络的扩展而得到上升,这就是P2P的扩展性。

2.BitTorrent

BitTorrent是一种用于文件分发的流行P2P协议。用BitTorrent的术语来讲,参与一个特定文件分发的所有对等方的集合称之为一个洪流。在一个洪流中的对等方彼此下载等长度的文件块,一般为256KB。一个对等方刚加入洪流中时,他自身没有数据块,随着时间的流逝,他积攒的数据块越来越多。当他在下载块的时候,也为其他对等方上传了多个块。该对等方获得了所有块,也就是文件下载完毕的时候,他可以选择离开洪流,也可以选择无私地留在洪流中,单纯是为其他对等方贡献数据块。

BitTorrent中的一个重要基础设施为追踪器,每一个洪流都会有一个追踪器。当一个对等方加入某个洪流时,他向追踪器注册自己,并且周期性地通知追踪器它仍在洪流中。通过这种方式,追踪器可以跟踪参与到洪流中的对等方。一个给定的洪流可能拥有成百上千的对等方。

当一个对等方A加入了洪流时,追踪器会随机从参与对等方的集合中选择一个子集,并且把该集合中的对等方的IP地址发给A。然后A持有了对等方IP的列表后,会试着和列表上的所有对等方创建并行的TCP连接。我们称与A成功创建TCP连接的对等方为邻近对等方。邻近对等方们有着一部分的该文件数据块,而A会周期性地询问每个临近对等方他们所具有的块,临近对等方会传回他们拥有的块列表。通过这些表,A可以知道谁拥有它没有的块,从而向该对等方发送请求。

A应该向谁发出请求呢?在这个问题上BT使用了一种称为最稀缺优先的技术。该技术要在A没有的块中找到他邻居最稀缺的块,也就是该块不仅A没有,而且拥有该块的临近对等方也最少。A会优先请求这种块,这样子是为了快速扩展稀缺的块,均衡每个块在洪流中的数量。

上一篇:计算机网络 -- 应用层


下一篇:计算机网络 -- 应用层