热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

P2P应用

本文主要分享【】,技术文章【P2P应用】为【风间琉璃•】投稿,如果你遇到#计算机网络相关问题,本文相关知识或能到你。文章目录前言一、P2P原理二、文件分发1.客户机服务器vs

本文主要分享【】,技术文章【P2P应用】为【风间琉璃•】投稿,如果你遇到# 计算机网络相关问题,本文相关知识或能到你。

文章目录 前言一、P2P原理二、文件分发1.客户机/服务器 vs P2P2. BitTorrent协议 三、索引技术1.集中式索引2.洪泛式查询(Query flooding)3.层次式覆盖网络 总结


前言

提示:以下是本篇文章正文内容

一、P2P原理

P2P技术属于覆盖层网络(Overlay Network)的范畴,是相对于客户机/服务器(C/S)模式来说的一种网络信息交换方式

P2P也叫「对等网络」(英语:peer-to-peer, 简称P2P),是一种在对等者(Peer)之间分配任务和工作负载的分布式应用架构,是对等计算模型在应用层形成的一种网络形式

在P2P网络环境中,彼此连接的多台计算机之间都处于对等的地位,各台计算机有相同的功能,无主从之分,每个节点既充当服务器,为其他节点提供服务,也能作为客户端,享用其他节点提供的服务

在C/S模式中,数据的分发采用专门的服务器,多个客户端都从此服务器获取数据

优点:数据的一致性容易控制,系统容易管理

缺点:因为服务器的个数只有一个(即便有多个也非常有限),系统容易出现单一失效点, 单一服务器面对众多的客户端,由于CPU能力、内存大小、网络带宽的限制,可同时服务的客户端非常有限,可扩展性差

P2P技术正是为了解决这些问题而提出来的一种对等网络结构, 在P2P网络中,每个节点既可以从其他节点得到服务,也可以向其他节点提供服务,庞大的终端资源被利用起来,解决了C/S模式中的弊端

特点:

1.没有服务器
2.任意端系统之间直接通信
3.节点阶段性接入Internet
4.节点可能更换IP地址

 P2P应用

二、文件分发

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

1.客户机/服务器 vs P2P

假设us: 服务器上传带宽,ui: 节点i的上传带宽,di: 节点i的下载带宽,文件大小:F

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

C/S模式:

 P2P应用


服务器串行地发送N个副本需要NF/us ,客户机i需要F/di时间下载
所以,分发N个F所需时间:

 P2P应用

P2P模式

 P2P应用

服务器必须发送一个副本,所需时间 F/us,客户机i需要F/di时间下载,总共需要下载NF比特,最快的可能上传速率: us + ui(i=1…n)
所以,分发N个F所需时间:

 P2P应用

当客户端上传速率= u, F/u = 1小时, us = 10u, dmin ≥ us
两个模式下所化时间

 P2P应用


客户端-服务器体系下,分发时间随着对等方数量线性增加

P2P体系下,分发时间呈线性增长而趋向一个常数,若F表示分发的文件比特数量,u表示所有对等方具有的相同上传速率,则这个常数为F/u。

2. BitTorrent协议

BT(BitTorrent)是 P2P 的一种实现

 P2P应用


当一个对等方加入某洪流时,它向追踪器注册自己,并获取节点列表,周期性地通知追踪器它仍在该洪流中

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

tracker的作用: 跟踪参与torrent的节点,追踪到底有多少人同时在下载或上传同一个文件

客户端连上Tracker服务器,就会获得一个正在下载和上传的用户的信息列表(通常包括IP地址、端口、客户端ID等信息),根据这些信息,BT客户端会自动连上别的用户进行下载和上传

torrent(洪流): 交换同一个文件的文件块的节点组

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

邻近对等方:成功创建一个TCP连接的对等方

示例:

 P2P应用


假设一个新的对等方Alice加入一个洪流,追踪器随机地从参与对等方的集合中选择对等方的一个子集并将对等方的IP地址发送给Alice,Alice拥有了一个IP地址的列表, Alice与列表上的所有对等方创建TCP连接,成为邻近对等方

给定任一时刻,不同的节点持有文件的不同chunk集合,节点(Alice)定期查询每个邻居所持有的chunk列表,对于节点缺失的chunk,,Alice(节点)发送请求获取(最稀缺的块,优先级最高请求)

节点同时也要 发送chunk: tit-for-tat,Alice向4个邻居发送chunk,正在向其发送Chunk要满足速率最快的4个,同时每10秒重新评估top 4

每30秒随机选择一个其他节点,Alie随机选择一名新的对换伴侣,向其发送chunk,新选择节点可能加入top 4

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

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

三、索引技术

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

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

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

1.集中式索引

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

 P2P应用

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

(2) Alice查找“Hey Jude”

(3) Alice从Bob处请求文件

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

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

2.洪泛式查询(Query flooding)

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

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

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

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

 P2P应用


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

(2)节点转发查询消息

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

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

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

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

3.层次式覆盖网络

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

 P2P应用


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

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

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

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

Skype应用:

 P2P应用


总结

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

本文《P2P应用》版权归风间琉璃•所有,引用P2P应用需遵循CC 4.0 BY-SA版权协议。


推荐阅读
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
author-avatar
小猪爱情守护者
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有