P2P网络与BitTorrent技术简介

19 篇文章 2 订阅
17 篇文章 11 订阅

P2P网络

点对点(P2P)计算或网络是分布式应用程序体系结构,用于在对等体之间分割任务或工作负载。
其中互联节点(“对等”)彼此共享资源而不使用集中式管理系统.

P2P网络的分散性提高了鲁棒性,因为它消除了基于客户端 - 服务器系统固有的单点故障。[36]作为节点到达和对系统的需求的增加,系统的总容量也增加,发生故障的可能性减小。如果网络上的一个对等设备无法正常工作,则整个网络不会受到影响或损坏。相比之下,在典型的客户端 - 服务器体系结构中,客户端只与系统共享需求,而不是他们的资源。在这种情况下,随着更多客户端加入系统,为每个客户端服务的资源越来越少,并且如果中央服务器发生故障,整个网络就会被关闭。

在P2P网络中,客户端都提供和使用资源。这意味着,不像客户端-服务器系统,对等网络的网络服务内容的容量实际上可以增加更多的用户开始访问内容。该属性是使用P2P网络的主要优势之一,因为它使原始内容分发者的设置和运行成本非常小

非结构化网络

覆盖非结构化P2P网络的网络图,说明节点之间连接的临时特性
非结构化的对等网络不会通过设计在覆盖网络上施加特定的结构,而是由随机形成彼此连接的节点形成。

image

非结构化网络的主要局限性也是由于缺乏结构。特别是,当对等方想要在网络中找到所需的数据段时,搜索查询必须通过网络进行泛洪以找到尽可能多的共享数据的对等点。泛滥造成网络中信令流量非常高,使用更多的CPU /内存(通过要求每个对等方处理所有搜索查询),并且不能确保搜索查询将始终得到解决。

结构化网络

在结构化的对等网络中,叠加层被组织成一个特定的拓扑结构,并且该协议可以确保任何节点都可以有效地在网络中搜索文件/资源​​,即使资源极其稀少。

最常见的结构化P2P网络类型实现了分布式散列表(DHT),其中使用一致散列的变体来将每个文件的所有权分配给特定对等体。这使同伴能够使用哈希表在网络上搜索资源:即(密钥,值)对存储在DHT中,并且任何参与节点可以有效地检索与给定密钥相关联的值。

image

image

为了有效地通过网络路由流量,结构化覆盖图中的节点必须维护满足特定条件的邻居列表。这使得它们在高流失率的网络(即大量节点频繁地加入和离开网络)中不够健壮。

BitTorrent 使用"分布式哈希表"(DHT)来为无 tracker 的种子(torrents)存储 peer 之间的联系信息。这样每个 peer 都成了 tracker。这个协议基于 Kademila 网络并且在 UDP 上实现。
在使用DHT分发Peer之前,Tracker是找到Peer的唯一方法。

2005年5月2日,Azureus 2.3.0.0(现在称为Vuze)发布,通过称为“分布式数据库”的系统引入了对“无tracker”种子的支持。该系统是一个分布式散列表DHT实现,它允许客户端使用没有BitTorrent tracker的种子。接下来的一个月,BitTorrent公司发布了Mainline BitTorrent客户端的4.2.0版本,该客户端支持与Azureus不兼容的另一种DHT实现(俗称“ Mainline DHT ”,在其网站上的草稿中概述)。最近的测量显示,Mainline DHT的用户从1000万到2500万,每日活跃至少1000万。 主线DHT可以说是世界上最大的DHT。

官方BitTorrent客户端的当前版本,μTorrent,BitComet,Transmission和BitSpirit都与Mainline DHT共享兼容性。这两个DHT实现都基于Kademlia。作为3.0.5.0版本,Azureus的也支持干线DHT除了其自己的分布式数据库通过使用一种可选的应用插件。这可能让Azureus / Vuze客户端达到更大的群体。

在Vuze中出现的另一个想法就是虚拟种子。这个想法是基于分布式跟踪器的方法,并用于描述一些网络资源。目前,它用于即时消息。它使用特殊的消息协议实现,并需要一个适当的插件。Anatomic P2P是另一种方法,它使用分散的节点网络将流量路由到动态tracker。除了tracker和DHT之外,大多数BitTorrent客户端还使用对等交换(PEX)来收集对等点peer。Peer交换检查与已知的peers,看看他们是否知道任何其他peers。在Vuze的3.0.5.0版本中,所有主要的BitTorrent客户端现在都具有兼容的对等交换。

混合模型

混合模型是对等和客户 - 服务器模型的组合。一个普通的混合模式是有一个中央服务器,可以帮助同伴找到对方。
在结构化服务器/客户端网络提供的集中功能与纯对等非结构化网络提供的节点相等之间进行权衡。目前,混合模型比单纯的非结构化网络或纯粹的结构化网络具有更好的性能,因为某些功能(如搜索)确实需要集中功能,但受益于非结构化网络提供的节点的分散聚合。

P2P带宽与网络

点对点应用程序是网络中立性争议的核心问题之一。已知因特网服务提供商(ISP)由于其高带宽使用而限制P2P文件共享业务量。相比于网络浏览,电子邮件或互联网,这样的数据仅在短的时间间隔和相对少量的转移的许多其他用途,P2P文件共享通常包括相对重的带宽使用的,由于持续的文件传输和群/网络协调包。2007年10月,美国最大的宽带互联网提供商之一Comcast开始阻止P2P应用,如BitTorrent。他们的理由是,P2P主要用于共享非法内容,而且他们的基础设施并非针对连续的高带宽流量而设计的。批评者指出,P2P网络具有合法的合法用途,这是大型提供商试图控制互联网上的使用和内容的另一种方式,并将人们引向基于客户机 - 服务器的应用程序架构。客户端 - 服务器模型为小型发布者和个人提供了财务障碍,并且可能不太有效地共享大型文件。作为对这种带宽限制的反应,一些P2P应用程序开始实施协议混淆,如BitTorrent协议加密。实现“协议混淆”的技术包括通过使数据看起来好像是随机的那样,去除其他容易识别的协议属性,例如确定性字节序列和数据包大小。 ISP对高带宽的解决方案是P2P缓存,其中ISP存储P2P客户端访问最多的文件,以节省对互联网的访问。

P2P流量的增加给ISPs带来了问题。网络可能会因P2P流量而饱和,从而造成其他类型互联网使用的拥挤。P2P流量的成本与互联网服务提供商从这些客户中获得的收入数量不成比例,这是因为普遍销售的带宽统一费率包。为防止P2P流量对所有用户的服务质量下降,ISP通常面临三种选择:

  • 投资额外的带宽和设备。不幸的是,增加带宽往往不能解决问题,因为P2P应用固有地倾向于消耗尽可能多的带宽。
  • 实施更严格的字节上限,策略或P2P流量整形,限制P2P流量的速度。困难在于P2P数据包变得越来越难以识别,特别是在引入加密(如BitTorrent协议加密)的情况下。流量整形也会产生负面的宣传和客户反应。
  • 实现一种P2P缓存形式。

常见 p2p系统BitTorrent简介

BitTorrent

BitTorrent是传输大文件的最常用协议之一,例如包含电视节目或视频剪辑的数字视频文件或包含歌曲的数字音频文件。据估计,截至2009年2月,对等网络占所有互联网流量的大约43%至70%(取决于位置)。 2004年11月,BitTorrent负责所有互联网流量的25%。截至2013年2月,BitTorrent占全球全部带宽的 3.35%,超过专用于文件共享的总带宽的6%中的一半以上。

要发送或接收文件,某人在其连接到互联网的计算机上使用BitTorrent客户端。BitTorrent客户端是实现BitTorrent协议的计算机程序。受欢迎的客户包括μTorrent,Xunlei,Transmission,qBittorrent,Vuze,Deluge,BitComet和Tixati。BitTorrent追踪器提供可用于传输的文件列表,并允许客户端找到可以传输文件的被称为种子的对等用户

算法介绍,名词定义

一般的下载服务器为每一个发出下载请求的用户提供下载服务,而BitTorrent的工作方式与之不同。分配器或文件的持有者将文件发送给其中一名用户,再由这名用户转发给其他用户,用户之间相互转发自己所拥有的文件部分,直到每个用户的下载都全部完成。这种方法可以使下载服务器同时处理多个大体积文件的下载请求,

以下是BitTorrent协议中重要的名词定义和算法介绍。

  • 种子文件(Torrent文件) 。
    BitTorrent是通过一个扩展名为.torrent的种子文件进行下载部署的,它由文件最初发布者创建,发布到互联网上,供感兴趣的用户下载。种子文件记录了负责管理该文件所在分发网络的Tracker服务器的地址、文件名、文件长度以及每个文件分块的SHA-1校验值。

  • 种子节点(Seed节点) 。
    Seed节点是指在一个P2P共享下载网络中,拥有完整文件拷贝的节点。这类节点只提供上传服务,而没有下载请求。

  • 下载节点(Leecher节点)。
    共享网络中相对于Seed节点的是Leecher节点,它只拥有部分的文件拷贝,在提供这部分拷贝的同时,还会向其他节点请求自己缺少的那部分文件。

  • 跟踪服务器(Tracker服务器) 。
    Tracker是一个中心服务器,负责跟踪系统中所有的参与节点,收集和统计节点状态,帮助参与节点互相发现,维护共享网络中文件的下载。一个Tracker服务器可以同时维护和管理多个文件共享网络。

  • 共享网络(Swarm网络)。
    一个Swarm共享网络是拥有和传输同一个文件资源的所有节点所构成的一个覆盖网络,包括共享该文件的Seed节点、Leecher节点和Tracker服务器。

  • 分片机制。
    BitTorrent像其他文件共享软件一样对文件进行了分片(Piece),Piece是最小的文件共享单位,每个Leecher在下载完一个完整的分片后才会进行完整性校验, 完整性校验成功后通知其他节点自己拥有这部分数据。为了加快文件传输的并行性,每个分片还会分成更小的分块(Block), Block是最小的文件传输单位,数据请求者每次向数据提供者请求一个Block的数据。

  • 片选择机制。
    为了保证共享网络的健壮性,延长一个共享网络的生命周期, BitTorrent通过局部最少块优先(Rarest-First)策略在节点间交换数据。下载节点根据自己周围的邻居节点拥有的数据块信息,选择拥有节点最少的分块优先下载,从而维护局部的数据块相对平衡。

  • 节点选择机制。
    BT系统采用了基于"Tit-for-Tat"的激励机制来抵御“Free-riding”行为,其中Choking/Unchoking算法最为关键。每个BT节点通过Internet/Uninterest消息来维护与多个节点的并发连接,但是只能为少数节点提供上传。服务提供节点在收到上传请求后会通过Choking/Unchoking机制决定是否对文件请求节点提供上传服务,可以拒绝服务(Choking)或者允许服务(Unchoking),该机制决定了两个相连的节点是否共享彼此的资源。为了防止部分节点只下载不上传的自私行为,Choking/Unchoking算法优先选择曾经为自己提供过上传数据并拥有高下载速率的节点,前者可以鼓励节点上传以获取下载,后者有助于最大化系统资源利用率。此外, Choking/Unchoking算法每隔30s将不考虑过去的贡献随机选择一个节点进行上传,一方面有利于发现可能存在更高下载速率的节点,另一方面可以避免新节点因从未进行过上传而无法获得有效的下载连接。

文件下载的可视化展示

整体动画演示分发过程:

image

 

image

动画展示BT下载过程地址

实际客户端下载过程示例:
文件分块下载的图形展示:

 

image

 

一个文件被分成很多块,下载时同时进行块的下载。

节点连接和下载情况:

 

image

 

会从每个具有这个文件的节点处进行下载。

参考资料

https://en.wikipedia.org/wiki/Peer-to-peer

https://en.wikipedia.org/wiki/P2P_caching

https://en.wikipedia.org/wiki/BitTorrent

https://en.wikipedia.org/wiki/Comparison_of_file-sharing_applications

https://en.wikipedia.org/wiki/Comparison_of_BitTorrent_clients

BitTorrent DHT 协议中文翻译
https://segmentfault.com/a/1190000002528378

P2P网络测量与分析 张宏莉, 叶麟, 史建焘


 

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
P2P技术揭秘:P2P网络技术原理与典型系统开发》从一个全新的视角向读者展示了从P2P初步入门到应用实践的学习之路。《P2P技术揭秘:P2P网络技术原理与典型系统开发》从理论到实践,从基础到项目,循序渐进地讲解了P2P技术的基本知识体系,同时配合开发案例引导读者进行P2P应用实战开发。书中对每一个知识点、原理思想、应用方法及实例都进行了深入浅出的阐述和分析,力求让读者读完《P2P技术揭秘:P2P网络技术原理与典型系统开发》后有所学、有所悟、有所得。 《P2P技术揭秘:P2P网络技术原理与典型系统开发》共14章,分为3篇。主要内容包括P2P概述、P2P网络拓扑结构、P2P网络搜索技术P2P关键技术及应用、P2P网络中的nat穿透技术、基于P2Pbittorrent(后文简称bt)技术、基于P2P的emule文件共享技术、基于P2P的skype即时通信技术、基于P2P的流媒体技术、基于java的P2P开发平台搭建、sloape的开发包及插件开发技术、基于P2P的即时通信系统的开发与实现、bt系统分析及客户端开发、jxta技术等。另外,《P2P技术揭秘:P2P网络技术原理与典型系统开发》配书光盘中收录了专门为《P2P技术揭秘:P2P网络技术原理与典型系统开发》录制的多媒体教学视频及书中涉及的源代码,便于读者更加直观、高效地学习。 《P2P技术揭秘:P2P网络技术原理与典型系统开发》适合P2P技术入门人员及网络视频、网络电话、多线程下载等网络软件开发人员。另外,《P2P技术揭秘:P2P网络技术原理与典型系统开发》对于大中专院校相关专业的学生和老师也有很好的借鉴意义。 ——《豆瓣读书》

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

web3.0前沿技术研究者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值