【计算机网络】第二章 网络应用(5)

五.P2P应用

1. 原理与文件分发

1)纯P2P架构

  ·无服务器

  ·任意端系统之间直接通信

  ·节点阶段性接入Internet

  ·节点可能更换IP地址

2)文件分发:C/S vs P2P

 

  ·C/S结构:T = max{ T1, T2 } = max{ NF/us, F/min(di) }

    - 服务器串行发送N个副本:T1 = NF/us

    - 客户机i下载:T2 = F/di

  ·P2P结构:T = max{ T1, T2, T3 } = max{ F/us, F/min(di), NF/(us + ∑ui) }

    - 服务器必须发送一个副本:T1 = F/us

    - 客户机i下载:T2 = F/di

    - 最快可能上传速率:us + ∑ui

    - 总共需要下载NF比特:T3 = NF/(us + ∑ui)

 

2. BitTorrent协议

 

1Alicetracker查询torrent的节点列表,和列表中的节点建立TCP连接

2)文件划分为256KBchunk

3)节点加入torrent时无chunk,需向tracker注册以获得节点清单,与某些邻居建立连接,逐渐积累chunk

4)下载的同时,节点需要向其他节点上传chunk

5)节点动态地加入或离开,获得完整的文件后,可能离开或留下

6)获取chunk

  ·给定任一时刻,不同节点持有文件地不同chunk集合

  ·Alice定期查询每个邻居所持有地chunk列表

  ·节点发送请求,请求获取缺失的chunk

    - 稀缺优先:如某一chunk只有很少节点持有,那么先请求这一chunk

7)发送chunktit - for - tat

  ·Alice4个正在向Alice发送chunk、并且速率最快的邻居发送chunk,每10秒重新评估top 4

  ·每30秒随机选择一个其他节点,向其发送chunk,新选择的节点可能加入top 4

3. 索引技术

(1)搜索信息

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

  ·文件共享:如电驴

    - 利用索引动态跟踪节点所共享的文件位置

    - 节点需要告诉索引它拥有哪些文件

    - 节点搜索索引从而获知能够得到哪些文件

  ·即时消息:如QQ

    - 索引负责将用户名映射到位置

    - 当用户开启IM应用时,需要通知索引它的位置

    - 节点检索索引,确定用户的IP地址

(2)集中式索引

  ·Napster

    - Alice加入时通知中央服务器IP地址和查找内容

    - 中央服务器通知AliceBob持有所需文件

    - AliceBob建立连接传输文件

  ·问题:单点失效问题、性能瓶颈、版权问题

(3)洪泛式查询

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

  ·Gnutella

    - 查询消息通过已有的TCP连接发送

    - 收到消息的节点转发查询消息

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

  ·覆盖网络

    - 节点XY之间如果有TCP连接则构成一条边

    - 所有活动节点和边构成覆盖网络,节点邻居一般少于10

  ·问题:大量消耗网络带宽,导致网络拥塞

(4)层次式覆盖网络:介于集中式与洪泛式之间

  ·每个节点是超级节点或普通节点

  ·普通节点仅与超级节点连接,超级节点进行互相连接

 

  ·超级节点负责跟踪子节点的内容

  ·Skype

    - 文件传输本质为P2P结构,节点对之间直接通信

    - 索引分布在超级节点上,负责维护用户名与IP地址间的映射

    - 采用私有应用层协议

猜你喜欢

转载自www.cnblogs.com/zhangyushuqing/p/9639707.html