一、P2P应用_原理与文件分发
1、纯P2P架构
2、文件分发:客户机/服务器架构
3、文件分发:P2P架构
P2P和CS架构对比:
对于文件分发这类应用来说,P2P架构有着非常好的可扩展性,即当节点数目增大的时候,它所用的时间增长得很缓慢。这也是为什么文件分发或下载服务(应用)广泛使用P2P架构。
4、BitTorrent(BT)协议
P2P文件分发的典型例子就是BT协议
BT协议的原理:
1)首先,交换同一个文件的文件块的节点会形成一个“节点组(torrent)”,这个节点组是动态变化的;对于每个torrent,我们有一台机器(tracker),它负责跟踪有哪些节点参与了这个torrent(就是互相构成了文件共享的动态组织),torrent内的节点互相之间交换的是一个个的文件块(chunk)
2)这是有一个用户Alice进来,她向tracker查询现在这个torrent有哪些节点,获取到节点列表,然后她会和其他人建立TCP连接,她就可以从别人那里获得这些文件块。同时她也会去共享
具体细节如下:
思考:
二、P2P应用_索引技术
本节我们来探讨P2P应用当中的一项关键技术——索引技术。在这一块我们将探讨不同的技术方案
1、P2P:搜索信息
我们在P2P应用中,经常需要搜索信息。即:我们既要形成索引,又要利用索引定位。
既然索引对于P2P应用过如此重要,那么应该怎么设计索引呢?有如下两种方案:
2、方案一:集中式索引
(1)集中式索引的原理
(2)集中式索引的缺点
虽然内容及文件的传输是分布式的,但内容的定位和检索是高度集中式的,那么就会面临如下问题:
单点失效问题:如果采用一个集中式的目录服务器,那么当这个服务器挂掉的时候,整个P2P系统就无法使用了
性能瓶颈:报告、查找都要经过这个目录服务器,服务器压力山大。。。
版权问题:不利于打击盗版,别人可能会以传播盗版为由举报你
3、方案二:分布式索引——洪泛式查询(Query flooding)
分布式索引没有服务器,没有所谓特殊的节点,每个节点负责对自己共享的文件提供索引服务,并且只索引自己的文件。
那么我怎么查询想要的东西呢?比如我想搜指环王,那我就只能全网搜索了,可是又没人持有这种全局的目录啊。。。
这里就引入了一个新概念——覆盖网络(Overlay network)
就是我把我的查询消息发给所有和我建立连接的节点,然后这些节点再转发我的查询消息,直到某个节点有我要的资源,再利用反向路径给我发回来。
洪泛查询的缺点:
查询消息会像洪水一样在网络里泛滥,会给网络带来很大的负担。洪泛式查询会大量消耗网络带宽,导致网络拥塞。
4、方案三:层次式覆盖网络
案例应用: