[关闭]
@zhongdao 2020-08-23T18:38:33.000000Z 字数 7563 阅读 3012

P2P网络与BitTorrent技术简介

未分类


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通常面临三种选择:

BT原理简述 与 magnet links

原理

作者:软知否
链接:https://www.zhihu.com/question/46958042/answer/729587211
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

与传统客户端/服务器网络通信模式不同,对等方到对等方(P2P)通信模式在近年来越来越流行起来。
在 P2P 模式中,服务和资源分布化,资源不集中存储在某些设备上,而是分散存储在运行 P2P 程序的设备上,
每一个对等方都可以为其他对等方提供服务。
BitTorrent(中文全称比特流,简称 BT)是一个网络文件传输协议,是能够实现点对点文件分享的技术。
在大多数人感觉中与 P2P 成了对等的一组概念,而它也将 P2P 技术发展到了近乎完美的地步。
研究 BitTorrent 协议对我们深入把握 P2P 技术,了解 Interent 网络发展的未来走向有很大的意义。

BitTorrent 协议是架构于 TCP/IP 协议之上的一个 P2P 文件传输协议,处于 TCP/IP 结构的应用层。
BitTorrent 协议本身也包含了很多具体的内容协议和扩展协议,并在不断扩充中。
如果有多个下载者并发的下载同一个文件,则每个下载者也同时为其它下载者上传文件,
这样,文件源可以支持大量的用户进行下载,而只带来适当的负载的增长。

BitTorrent 协议把提供下载的文件虚拟分成大小相等的块,块大小必须为 2k 的整数次方
(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和 Hash 验证码
写入 .torrent 文件(即种子文件,也简称为“种子”)中,作为被下载文件的“索引”。
下载者要下载文件内容,需要先得到相应的 .torrent 文件,然后使用 BT 客户端软件进行下载。

下载时,BT 客户端首先解析 .torrent 文件得到 Tracker 地址,然后连接 Tracker 服务器。
Tracker 服务器回应下载者的请求,提供下载者其他下载者(包括发布者)的 IP。
或者,BT客户端也可解析 .torrent 文件得到 nodes 路由表,然后连接路由表中的有效节点,
由网络节点提供下载者其他下载者的 IP。

下载者再连接其他下载者,根据 .torrent 文件,两者分别对方告知自己已经有的块,
然后交换对方没有的数据。此时不需要其他服务器参或者其他网络节点的参与,
分散了单个线路上的数据流量,因此减轻了服务器负担。
下载者每得到一个块,需要算出下载块的 Hash 验证码与 .torrent 文件中的对比,
如果一样则说明块正确,不一样则需要重新下载这个块。

因此,下载的人越多,提供的带宽也越多,种子也会越来越多,下载速度就越快。

从 BT 客户端角度考虑,下载原理分为以下几步:

一.根据 BitTorrent 协议,文件发布者会根据要发布的文件生成提供一个 .torrent 文件。
客户端可从 Web 服务器上下载种子文件,并从中得到 Tracker 服务器 URL 和 DHT 网络 nodes 等信息。

二.根据 Tracker URL 与 Tracker 服务器建立连接,并从服务器上得到 Peers 信息。
或者根据 nodes 与 DHT 网络中节点通信,并从节点上得到 Peers 信息。

三.根据 Peers 信息与一个 Peer 建立连接,依据 Peer wire 协议完成握手,
并从 Peer 端下载数据文件。同时监听 Peer 的连接,并给 Peer 上传数据文件。

依据得到 Peers 信息的途径的不同,可分为使用 Tracker 服务器和使用 Trackerless DHT 网络两种方式。

基于 HTTP 的 Tracker 协议,
基于 UDP 的 Trackerless 协议,
基于 TCP 的 Peer wire 协议。

magnet

BEP9 Extension for Peers to Send Metadata Files
http://bittorrent.org/beps/bep_0009.html

https://baike.baidu.com/item/%E7%A3%81%E5%8A%9B%E9%93%BE%E6%8E%A5

什么是磁力链接(Magnet )?

磁力链接,简单的说:类似下面这样以“magnet:?”开头的字符串,就是一条“磁力链接;确切的说:“磁力链接”的主要作用是识别【能够通过“点对点技术(即:P2P)”下载的文件】。这种链接是通过不同文件内容的Hash结果生成一个纯文本的“数字指纹”,来识别文件的。而不是基于文件的位置或者名称。

不同的是这个“数字指纹”可以被任何人从任何文件上生成,这也就注定了“磁力链接”不需要任何“中心机构”的支持(例如:BT Tracker服务器),且识别准确度极高。因此任何人都可以生成一个Magnet链接并确保通过该链接下载的文件准确无误。

常见 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追踪器提供可用于传输的文件列表,并允许客户端找到可以传输文件的被称为种子的对等用户

image_1eamb825u17os137p6pi10i51np0m.png-153.1kB

算法介绍,名词定义

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

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

tracker机制

用于管理参与到Torrent的用户(即peers)。
它存储关于torrent的统计信息,但它的主要作用是允许peers'找到各自'并开始通信,即找到拥有着他们需要下载的数据的peer.
Peers不会了解其他peers直到它收到tracker的回应。无论peer何时去查询tracker, 它都会报告它拥有这哪些文件片段。
这样,当另一个peer查询tracker时,tracker可以随机提供一个参与该torrent的符合要求的peer列表。

image_1eamaq9me1mkp2pe17f7j63u9q9.png-34.5kB

Tracker是一个HTTP / HTTPS服务,通常在端口6969上运行。
管理torrent的tracker的url地址在MetaInfo文件中指定,单个tracker可以管理多个torrent。
也可以指定多个tracker作为备份,由用户计算机上运行的BitTorrent客户端处理。

文件下载的可视化展示

整体动画演示分发过程:

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网络测量与分析 张宏莉, 叶麟, 史建焘

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注