P2P应用
P2P结构的特点
- 没有服务器
- 任意端系统间直接通信
- 有很大的动态性和随机性
*节点阶段性接入Internet
*节点可能更换IP地址
文件分发
C/S架构与P2P架构在文件分发上的性能对比
说明:1)由于核心网络的带宽充足,因此性能瓶颈主要在服务器接入核心网络和客户端接入核心网络。
2)服务器只向Internet上传,每个节点可能下载或上传文件。
3)图中节点表示上传,下载的方向标错了
C/S架构:
服务器串行地发送N个副本,所需时间为:NF/us;——这个时间随N线性增长
客户机i的下载时间为:F/di;
完成分发总时间:max{NF/us ;F/min(di)};
P2P:
服务器必须发送一个副本给Internet,时间为:F/us;
客户机i的下载时间为:F/di;
总共需要下载NF比特
最快的可能上传速率(服务器和所有节点同时上传):us+∑ui;
上传N个副本的总时间为:NF/(us+∑ui);
完成分发总时间:max{F/us ;F/min(di);NF/(us+∑ui)};
BitTorrent协议
peer:节点
chunk:交换文件块
torrent:交换(或共享)同一个文件的文件块的节点所形成的节点组
tracker:跟踪参与torrent的节点
1)当Alice新加入网络时,向tracker查询,获取torrent节点列表,与其他节点建立TCP连接,进而可以与他们交换文件块
2)文件被划为256KB的chunk
3)节点加入torrent时
- 没有chunk,但会逐渐积累
- 向tracker注册以获得节点清单,与某些节点(“邻居”)建立连接
4)下载的同时,节点还需向其他节点上传chunk
5)节点动态地加入和离开,且在获得完整文件后可以选择离开或留下
6)获取chunk
- 给定任意时刻,不同的节点持有文件的不同chunk集合
- 节点定期查询每个邻居所持有地chunk列表
- 节点发送请求,请求获取缺失的chunk(稀缺优先原则,例:你所需要的一些chunk只有3个节点能够提供,而另一些chunk有100个chunk可以提供,那么优先获取提供节点少的chunk,以防节点全部离开后无法获得)
7)发送chunk(一报还一报原则)
- Alice向4个邻居发送chunk:正向它发送的chunk,速率最快地4个(每10s重新评估top4)
- 每30s随机选择一个其他节点,向他发送chunk(新加入的节点可能进入top4s)
8)特点:上传速率高,则能够找到更好的交易伙伴,从而更快的获取文件
9)BT的危害:
- 损害硬盘
- 助长病毒传播
- 侵犯版权
索引技术
1:索引:信息到节点位置(IP地址+端口号)的映射
2:文件共享(如电驴)
- 利用索引动态跟踪节点所共享的文件的位置
- 节点需要告诉索引它拥有哪些文件
- 节点搜索索引,从而获知能够得到哪些文件
3:即时消息(如QQ)
- 索引负责将用户名映射到位置
- 当用户开启IM应用时,需要通知索引它的位置
- 节点检索索引,确定用户地IP地址
集中式索引
搜索过程:
- 节点加入时,通知中央服务器(IP地址+内容)
- Alice查找“Hey Jude”
- Alice从Bob处请求文件
注:集中式索引内容和文件的传输是分布式的,但内容定位是高度集中的
缺点:
- 单点失效问题(当集中式目录服务器崩溃时,整个p2p系统就崩了)
- 性能瓶颈(报到,查找等都须通过中央目录服务器,会成为他的瓶颈)
- 版权问题
洪范式查询(信息传输到网络中的每一个节点)
1.完全分布式架构
2.每个节点对它共享的文件进行索引,且只对它共享的文件进行索引
3:覆盖网络
- 节点X与Y之间如果有TP连接那么构成一条边
- 所有活动节点和便构成覆盖网络
- 边:虚拟链路
- 节点一般邻居数少于10个
4:搜索过程
- 查询消息通过已有的TCP连接发送
- 节点转发查询消息
- 查询命中,则利用反向路径发回查询节点
5.缺点
- 洪范式查询会大量消耗网络带宽,导致网络拥塞
- 新用户加入时会有很多复杂的需要处理的因素
层次式覆盖网络
1:介于集中式索引和洪范查询之间的一种查询方法
2每个节点或者一个超级节点,或者被分配一个超级节点
- 节点和超级节点间维持TCP连接
- 某些超级节点之间维持TCP连接
3.超级节点负责跟踪子节点的内容,提供索引服务
- 一个超级节点和普通节点是集中式查询
- 超级节点和超级节点之间为洪范式查询
4:应用:Skype
- 本质上是P2P的,用户/节点之间直接通信
- 私有应用层协议
- 采用层次式覆盖网络架构
- 索引负责维护用户名和IP地址之间的映射
- 索引分布在超级节点上
- 有很大的动态性和随机性
*结点阶段性接入Internet
*节点可能更换IP地址