文章目录前言一、P2P原理二、文件分发一、客户端/服务器vsp2p2、BitTorrent协议三、索引技术一、集中式索引二、洪泛式搜索(Query flooding ) 3、分层覆盖网络总结

前言:以下是本文的正文内容

另一方面,P2P原理P2P技术属于覆盖层网络(Overlay Network )的范畴,是针对客户/服务器(C/S )模式的网络信息交换方式

P2P又称“对等网络”(Peer-to-peer,简称P2P ),是在对等网络(peer )之间分配任务和工作负载的分布式APP应用体系结构,是对等计算模式

在P2P网络环境中,相互连接的多台计算机是对等的,每台计算机具有相同的功能,不具有相同的功能,因此每个节点作为服务器,为其他节点提供服务,也作为客户端,其他节点

在C/S模式下,数据分发使用专用服务,多个客户端从该服务中检索数据

优点:数据一致性易于控制,系统管理方便

缺点:由于只有一个服务器(即使有多个也非常有限),系统容易出现单个故障点,单个服务器面临大量客户机,由于CPU能力、内存大小和网络带宽限制,同时提供服务

P2P技术是为解决这些问题而提出的对等网络结构,其中,在P2P网络中,每个节点可以从其他节点接收服务,也可以向其他节点提供服务,并且可以利用大量的终端资源,并且在C/S模型中

特点:

1 .没有服务器

2 .任何终端系统之间的直接通信

3 .节点逐步接入互联网

4 .节点可能更改IP地址

二、文件分发P2P文件分发中,每个对等方能够向任何其他对等方重新分发他已经接收到的该文件的任何部分,从而从分发过程中协助该服务器,P2P文件分发协议BitTorrent

1 .客户端/服务器vs P2P假设us:服务器上传带宽、ui:节点I上传带宽、di:节点I下载带宽、文件大小:F

从一个服务器向n个节点分发一个文件需要多长时间?

C/S模式:

服务器串行发送n个副本需要NF/us,客户端I需要F/di时间下载

所以,分发n个f所需的时间:

P2P模式

服务器必须发送副本,所需时间为F/us,客户端I需要F/di时间下载,需要下载总NF位,最快可能的上传速度为usui(I=1…n )

所以,分发n个f所需的时间:

客户端上传速度=u、F/u=1小时、us=10u、dmin us

两种模式下的时间

在客户端-服务器系统中,分发时间随对等方的数量而线性增加

在P2P系统中,分发时间呈线性增长,趋于常数。 如果f表示分发的文件的位数,而u表示所有对等点都具有相同的上载速度,则此常量为F/u。

2 .字节协议Bt (字节)是P2P的实现

对等方加入洪流时,将向跟踪器注册自己,获取节点列表,并周期性地通知跟踪器自己在洪流中

Tracker(追踪器):Tracker 是指运行于服务器上的一个服务程序,也称 Tracker服务器

tracker角色:跟踪参与种子的节点,并跟踪同时下载或上传同一文件的人数

当客户端连接到跟踪器服务器时,将获取正在下载和上传的用户的信息列表(通常是IP地址、端口、客户端ID等信息),BT客户端根据该信息自动连接到其他用户,然后单击

种子(种子) :交换同一文件的文件块的节点组

chunk (文件块)洪流中的对等方下载同等长度的文件块。 典型的长度为256KB,文件被划分为256KB的chunk

33558 www.Sina.com/:成功创建TCP连接的对等端

示例:

假设新的对等fdwt加入种子。 跟踪器从参与对等体的集合中随机选择对等体的子集,并将对等体的IP地址发送到fdwt。 fdwt有一个IP地址列表。邻近对等方

在任意时刻,不同节点具有文件不同的chunk集合、fdwt与列表上的所有对等方创建TCP连接,成为邻近对等方,向节点发送请求获取(最稀有的块、优先级最高的chunk、fdwt )

节点同时发送chunk: tit-for-tat,fdwt向四个邻居发送chunk,并每10秒重新评估top 4,同时发送chunk以满足4个最快速度

每30秒随机选择其他节点,Alie随机选择新伙伴发送chunk,新选择节点可能加入top 4

>总之,大致过程:节点先加入torrent,若没有chunk,但是后面会逐渐积累,然后,向tracker注册以获得节点清单,与某些节点(“邻居”)建立连接,下载的同时,节点需要向其他节点上传chunk

注:节点可能加入或离开,一旦节点获得完整的文件,它可能(自私地)离开或(无私地)留下

三、索引技术

P2P系统的索引:信息到节点位置(IP地址+端口号)的映射

P2P应用中一个重要部分是信息索引,即信息到主机位置的映射,在这些应用程序中,对等方动态地更新和搜索索引

BitTorrent协议只是一个文件分发协议,并没有提供任何索引和搜索文件的功能为了能够在对等方区域中组织和搜索索引,所以需要搜索方法

1.集中式索引

提供了一个集中式索引,由一台大型服务器来提供索引服务,索引服务器从每个活动的对等方收集IP地址和可供共享的文件名称(内容),从而建立一个集中式的动态索引,将每个文件拷贝映射到一个IP地址集合

(1)节点加入时,通知中央服务器:IP地址和 内容

(2) fdwt查找“Hey Jude”

(3) fdwt从Bob处请求文件

内容和文件传输是分布式的,但是内容定位是高度集中式的,
这是一种P2P和CS混合体系结构,文件分发是P2P,搜索是C/S
缺点:

①、单点故障:索引服务器崩溃导致P2P应用崩溃
②、性能瓶颈和基础设施费用
③、侵犯版权,容易被关闭

2.洪泛式查询(Query flooding)

在查询洪泛中,索引全面地分布在对等方的区域中,每个对等方索引可供共享的文件而不索引其他文件

完全分布式架构,每个节点对它共享的文件进行索引,且只对它共享的文件进行索引

对等方形成了一个抽象的逻辑网络:覆盖网络,节点X与Y之间如果有TCP连接,
那么构成一个边,所有的活动节点和边构成覆盖网络

注:
1.边是虚拟链路,该链路可能有下面的许多物理链路组成
2.节点一般邻居数少于10个

大致过程:
(1)查询消息通过已有的TCP连接发送

(2)节点转发查询消息

(3)如果查询命中,则利用反向路径发回查询节点

对等方通过已经存在的TCP连接,向覆盖网络中的相邻对等方发送查询报文,相邻对等方向他们的相邻对等方发送查询报文

当一个对等方接收到一条查询报文时,会检查该关键词是否与可供共享的任意文件相匹配,如果存在一个匹配,会回复一条“查询命中”报文,该报文包含了匹配文件名和文件长度。

该“查询命中”报文遵循“查询”报文的方向路径,因而使用预先存在的TCP连接。扩展性差,会产生大量流量,因此使用了范围受限查询洪泛

3.层次式覆盖网络

这是介于集中式索引和洪泛查询之间的方法

在层次覆盖设计中,不是所有对等方都是对等的,与因特网高速连接并具有高可用性的对等方被指派为超级节点

一个新的对等方与超级节点之一创建一个TCP连接,然后新对等方将其可供共享的文件告诉超级节点,而超级节点维护一个索引,包括其子对等方正在共享的所有文件的标识符、有关文件的元数据和保持这些文件的子对等方的IP地址,即每个超级节点成为一个小型的索引

超级节点之间相互建立TCP连接,从而形成一个覆盖网络,超级对等方可以向其相邻超级对等方转发查询,这里的查询是范围受限查询洪泛

超级节和踪子节之间采用集中式索引,超级节点之间采用洪泛式查询

Skype应用:


总结

提示:这里对文章进行总结: