没有一直运行的服务器。
任意端之间可以通信。
peers可以任意加入或修改IP地址。

1、P2P文件分发(共享?):

a、P2P体系结构的扩展性:


us表示服务器接入链路的上载速率,ui表示第i个对等方接入链路的上载速率,di表示第i个对等方接入链路的下载速率,F表示被分发的文件长度,N表示要获得文件拷贝的对等方数量。
分发时间是N个对等方得到文件拷贝所需要的时间。
假设因特网核心具有大量的带宽,即所有的瓶颈链路都在网络接入链路上,同时假设服务器和客户机没有运用任何其他网络应用,即他们的所有上载和下载访问带宽都用于分发文件。
首先来确定CS体系结构中的分发时间,即Dcs。在CS体系结构中,没有对等方来帮助分发文件,所以:
①、服务器必须向N个对等方的每个都传输一个文件拷贝,因此该服务器必须传输NF比特,因为该服务器的上传速率是us,所以分发该文件的时间至少是NF/us
②、令dmin表示下载速率最小的对等方的下载速率,下载速率最小的对等方不可能在F/dmin内获得该文件的所有F比特,因此,最小的分发时间最少为F/dmin
由此得到Dcs≥max{NF/US,F/dmin}
对足够大的N,CS体系结构中的分发时间由NF/us决定,即分发时间随着对等方的数量N现行的增加。
下面看一下P2P体系结构中的分发时间,即Dp2p。在P2P中,当一个对等方接收到文件数据时,他可以利用自己的上传能力重新将数据分发给其他对等方。
①、在分发的开始,只有服务器拥有稳健,为了使这些对等方的到该文件,服务器必须经其接入链路至少发送一次该文件的每个比特,因此,最小分发时间至少是F/us
②、下载速率最小的对等方不可能在F/dmin秒之内获得所有F比特,因此最小分发时间至少为F/dmin
③、系统的总上载能力等于服务器的上载速率+每个对等方的上载速率,即utotal=us+u1+…+uN。系统必须向N个对等方的每个交付F比特,因此,总共交付NF比特,不可能以快于utotal的速率完成,因此,最小分发时间至少为NF/(us+u1+…+uN)
由此得到Dp2p≥max{F/US,F/dmin,nf/us+Σui}
用户数越多,P2P结构基本趋于平稳,即自适应/拓展性好。最小的分发时间总是小于F/u。因此我们可以说采用P2P体系结构的应用程序是可以自我拓展的

b、BitTorrent:

即BT下载,人越多,下载越快。
是一种用于文件分发的流行P2P协议。参与一个特定文件分发的所有对等方的集合称为一个洪流(torrent)(也叫群组group)。在一个洪流中对等方彼此下载等长度的文件块chunk。当他下载文件块时,同时也为其他对等方上载了多个文件块。
对等方一旦获得了整个文件,他可以离开洪流,也可以留在洪流中继续向其他对等方上传文件块。
同时,任何对等方可以在任何时刻(哪怕没有获得整个文件)离开洪流,以后也可以重新加入洪流。
最稀有优先:最少被下载的文件块最先被下载。根据他没有的块从他的邻居中确定最稀有的块(在他的邻居中拷贝数量最少的那些块),其目标是均衡每个块在洪流中的拷贝数量。
对换算法:确定邻居的优先权,这些邻居是那些当前能够以最高的速率供给他数据的。即每过一段时间对等方随机的选择一名新的对换伙伴并开始与那位伙伴进行兑换,如果这两个对等方都满足此对换要求,那么他们会将对方放入其前几位列表中并继续与对方进行对换,直到对等方之一发现了一个更好的伙伴为止。这样,对等方就能以趋于满意的速率上传,而随机选择邻居是为了让新的对等方得到块,因此他么能够有对换的东西。除了列表前几位的对等方,其他相邻对等方均被阻止,即不能从这个对等方中获得任何块。这样可以避免搭便车问题。
每个洪流局有一个基础设施节点,称为追踪器tracker。当一个对等方加入洪流时,它向追踪器注册,并周期性的通知追踪器他仍在洪流中。追踪器以这种方式跟踪洪流中的对等方。一个特定的洪流可能在任何时刻拥有数以百计千计的对等方。

2、在P2P区域中搜索信息:

P2P应用中一个重要部分是信息索引,即信息到主机位置的映射。在这些应用程序中,对等方动态地更新和搜索索引。
BitTorrent协议只是一个文件分发协议,并没有提供任何索引和搜索文件的功能。为了能够在对等方区域中组织和搜索索引,所以需要搜索方法。

a、集中式索引(集中目录分发):

提供了一个集中式索引,由一台大型服务器来提供索引服务。索引服务器从每个活动的对等方那里收集IP地址和可供共享的文件名称,从而建立一个集中式的动态索引,将每个文件拷贝映射到一个IP地址集合。
实际上是一种P2P和CS混合体系结构,文件分发是P2P的,搜索是CS的。有以下缺点:
①、单点故障:索引服务器崩溃导致P2P应用崩溃
②、性能瓶颈和基础设施费用
③、侵犯版权,容易被关闭

b、查询洪泛(完全分布式方法):

建立在Gnutella协议基础上的。在查询洪泛中,索引全面地分布在对等方的区域中,每个对等方索引可供共享的文件而不索引其他文件。
对等方形成了一个抽象的逻辑网络——覆盖网络。如果对等方x与对等方y维护了一个TCP连接,那么就可以说x和y有一条边。图由所有活跃的对等方和连接的边(持续的TCP连接)组成。注意一条边不是一条物理通信链路,而是一条抽象链路,该链路可能有下面的许多物理链路组成。
对等方通过已经存在的TCP连接,向覆盖网络中的相邻对等方发送报文(查询报文),这些相邻对等方向他们的相邻对等方发送查询报文(洪泛);当一个对等方接收到一条查询报文时,会检查该关键词是否与可供共享的任意文件相匹配,如果存在一个匹配,会回复一条“查询命中”报文,该报文包含了匹配文件名和文件长度。该“查询命中”报文遵循“查询”报文的方向路径,因而使用预先存在的TCP连接。
扩展性差,会产生大量流量,因此使用了范围受限查询洪泛。然而,可能导致搜索不到存在的文件。
覆盖网络的一个问题是如何处理对等方x的加入和离开:
①、对等方x必须首先发现某些已经位于覆盖网络中的其他对等方。解决这种引导跨接问题的一种方法是:让x维护一张对等方的列表(IP地址),这些对等方经常在该覆盖网络中开机;另一种方法是:让x能够联系维护这种列表的跟踪站点。
②、一旦访问了这样的一张列表,x接下来尝试与列表上的对等方建立一个TCP连接,直到与某个对等方y建立了一个连接为止。
③、一旦x和y建立TCP连接后,x向y发送一个ping报文,包括对等方计数字段。一旦接收到该ping报文,y向它在该覆盖网络中的所有邻居转发。直到该对等方计数字段为0
④、只要一个对等方z接收到一个ping报文,他通过该覆盖网络向x会发一个pong报文,包括z的IP地址
⑤、当x接收到pong报文后,与这些对等方建立ICP连接。

c、层次覆盖(结合了集中式和分布式):

不设计专用的服务器来跟踪和索引文件。
在层次覆盖设计中,不是所有对等方都是对等的,与因特网高速连接并具有高可用性的对等方被指派为超级对等方。
一个新的对等方与超级对等方之一创建一个TCP连接,然后新对等方将其可供共享的文件告诉超级对等方,而超级对等方维护一个索引,包括其子对等方正在共享的所有文件的标识符、有关文件的元数据和保持这些文件的子对等方的IP地址。即每个超级对等方成为一个袖珍型的索引。
超级对等方之间相互建立TCP连接,从而形成一个覆盖网络。超级对等方可以向其相邻超级对等方转发查询。这里的查询是范围受限查询洪泛。

d、分布式哈希表(分布式散列表DHT):

产生一个全分布式索引,该索引将文件标识符映射到文件位置
允许用户(原则上)确定文件的所有位置,而不会产生过量的搜索流量

计算机网络(十二):P2P应用相关推荐

  1. 计算机网络(十二)-信道划分介质访问控制-信道复用

    一.传输数据的两种链路 点对点链路:两个相邻节点通过一个链路相连,没有第三者.应用PPP协议,常用于广域网. 广播式链路:所有主机共享通信介质.早期的总线以太网.无线局域网.常用于局域网.典型的拓扑结 ...

  2. 计算机网络(三十二)网络管理

    计算机网络(三十二)网络管理 1.SNMP 2.MIB 3.RMON 1.SNMP 是一款基于UDP/IP的协议 . 在TCP/IP的网络管理中可以使用SNMP(Simple Network Mana ...

  3. 面渣逆袭:三万字,七十图,详解计算机网络六十二问(收藏版)

    大家好,我是老三,开工大吉,虎年第一篇,面渣逆袭系列继续! 这次给大家带来了计算机网络六十二问,三万字,七十图详解,大概是全网最全的网络面试题. 建议大家收藏了慢慢看,新的一年一定能够跳槽加薪,虎年& ...

  4. 面渣逆袭:计算机网络六十二问,三万字图文详解!速收藏!

    这次给大家带来了计算机网络六十二问,三万字,七十图详解,大概是全网最全的网络面试题. 基础 1.说下计算机网络体系结构 计算机网络体系结构,一般有三种:OSI 七层模型.TCP/IP 四层模型.五层结 ...

  5. 计算机网络(二十四)UDP及TCP首部的格式

    计算机网络(二十四)UDP及TCP首部的格式 UDP首部的格式 a.源端口号(Source Port) b.目标端口号(Destination Port) c.包长度(Length) d.校验和(Ch ...

  6. 计算机网络(十二)IPv6介绍

    计算机网络(十二)IPv6介绍 1.IPv6的必要性 2.IPv6的特点 3.IPv6中IP地址的标记方法 4.IPv6地址的结构 5.全局单播地址 6.链路本地单播地址 7.唯一本地地址 8.IPv ...

  7. Java NIO系列教程(十二) Java NIO与IO

    原文地址:http://tutorials.jenkov.com/java-nio/nio-vs-io.html 作者:Jakob Jenkov   译者:郭蕾    校对:方腾飞 当学习了Java ...

  8. 《深入理解 Spring Cloud 与微服务构建》第十二章 服务注册和发现 Consul

    <深入理解 Spring Cloud 与微服务构建>第十二章 服务注册和发现 Consul 文章目录 <深入理解 Spring Cloud 与微服务构建>第十二章 服务注册和发 ...

  9. 万字面试分享贴!从十二个角度解析面试全流程!附互联网公司Offer难度系数分析...

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨ELon Z 来源丨AI机器学习与知识图谱 编辑丨极市平台 本 ...

  10. 【信息系统项目管理师】第二十二章 信息系统安全管理(考点汇总篇)

    [信息系统项目管理师]第二十二章 信息系统安全管理(考点汇总篇) 考点分析与预测 信息安全为高级科目独有的章节,在第三版教材中有66页的内容.需要掌握的知识点非常多,且知识点非常散,在考试中上午一般考 ...

最新文章

  1. P4124 [CQOI2016]手机号码
  2. Android --- 微信支付时出现错误:错误的签名,验签失败,return_code=FAIL
  3. 暴力求解法 之 简单枚举
  4. ES5中新增的Array方法详细说明
  5. CV《物体识别与检测3 - 多目标识别的优化技术》
  6. makefile 无法工作_什么是Makefile,它如何工作?
  7. shell 命令进阶(三)
  8. Object.assign 浅拷贝还是深拷贝
  9. 提高抗打击能力_孩子遇挫折就放弃咋办?菲尔普斯法则:培养抗挫力,试试挫折演习...
  10. python常用字符串_Python中最常用的字符串方法!
  11. Terrasolid安装
  12. css文字闪光特效,利用js css3实现文字闪光滑过动画特效
  13. C语言中求和、计算平均值、方差和标准差
  14. xmind贴纸_如何使用彩色背景或大贴纸创建Facebook状态
  15. 统一文档服务器,统一标准化文档oraclei服务器安装基础手册.doc
  16. Android 11.0 下拉状态栏通知栏的通知设置默认展开
  17. VisualSvn破解(VS2019)
  18. ​儿童手表APP开发让用户更好地体验到智能设备的便捷性​
  19. 基于java的宠物狗销售网站系统
  20. 前端的你,必须知道这些前端的坑!

热门文章

  1. 微信公众号开发--消息接收与回复
  2. html语言空格怎么写,html中如何插入空格字符代码的6种书写方法
  3. 如何部署WeaveScope
  4. 33招Google技巧
  5. 《C++开发工程师岗位必备知识点一》
  6. NAT反向代理技术的实现(外网访问内网)
  7. 使用powershell发送浏览器请求
  8. 房屋千千万,如何找到便宜实惠的呢,python采集数据并做数据可视化~
  9. springboot使用JWT,并自动获取用户信息
  10. 浅谈外部接口调用httpClient原生方式进一步使用与各个涉及类含义及作用