上一篇文章我们介绍了 CDN 网络,它通过 DNS 服务器的转发,将网站内容分布到世界各地,以便他人共同使用。
实际情况,并不是每个人都能在世界各地建立成百上千个节点来分发内容。针对这一挑战,有另一种替代方案可供选择,即对等网络(P2P,Peer-to-peer)。
P2P 对等网络始于 1999 年,最著名的应用案例之一就是「盗版歌曲」。如今,BT(BitTorrent)是最流行的 P2P 协议,其应用非常广泛。用户可以共享视频等各种内容,以至于 P2P 协议在互联网流量中占据了相当大的比例。
P2P 文件共享网络的基本思路是将多台计算机连接到一起,共享它们的资源,形成一个内容分发系统。这些计算机通常是简单的家用电脑,并不一定是 Internet 数据中心机器。
这些计算机被称为对等节点,因为每一个都可以充当客户端来获取内容,也可以作为服务器来提供内容。
与 CDN 不同,对等系统没有专门的基础设施。每个人都参与到分发内容的任务中,通常没有中央控制点。
任何人只要有一台计算机都可以加入一个 P2P 网络,这也正是 P2P 网络具有强大的内容和分发能力的原因。
P2P 网络面临的一个重大挑战是,用户拥有不同的下载和上传容量,如何更有效地利用带宽?
BitTorrent 协议于 2001 年开发,目的是便捷地共享文件,这个协议作为一个开放标准,可以在 www.bittorrent.org 免费获取。
在一个对等系统中,比如使用 BT 协议形成的系统,每个用户可能有其他用户感兴趣的信息,如免费软件、音乐、影片和照片。
-
-
-
对于一个 P2P 系统中的内容提供者,并不是每个用户都拥有所有的内容。为了解决这个问题,常见的做法是为每个「内容提供商」创建一个内容描述文件,称为「种子文件」。
种子文件相对于实际内容要小得多,至少小 3 个数量级,它包含了对内容的描述信息,例如文件名、大小、哈希值等。
对等用户可以使用种子文件来验证他们从其他对等用户下载的数据是否完整,想要下载内容的用户必须先获取对应的种子文件,然后使用该种子文件来开始下载实际的内容。通过这种方式,种子文件充当了一种索引,帮助用户找到并获取想要的内容。
首先,种子文件包含了跟踪器的名称,跟踪器是一个服务器,它的作用是将对等用户引导到种子文件描述的内容。跟踪器维护着一个活跃用户的列表,这些用户正在上传和下载该内容,被称为用户集群。
用户定期向跟踪器报告自己的活动状态,当用户加入或离开集群时,跟踪器会相应地更新列表。另外,种子文件还包含了一个内容块或片段的清单,这些块或片段组成了完整的内容。种子文件中列出了每个块的名称或哈希值。由于种子文件比实际内容小得多,所以它可以被快速地发送和传输。要下载种子文件描述的内容,一个对等用户首先需要连接到该种子文件。通过连接到种子文件所指定的跟踪器,用户可以获取其他正在分享相同内容的对等用户的列表,从而开始下载所需的内容。当一个群首次形成时,确实会有一些对等节点必须拥有组成内容的所有块,这些对等节点被称为种子。这些种子对等节点拥有完整的内容,并且可以在群中分享这些内容给其他对等节点。其他想要加入该群的对等节点可能没有任何块,因此它们被称为需要下载内容的对等节点。在加入群的过程中,这些对等节点会从其他对等节点那里下载缺少的块,并且也会给其他对等节点上传它们已经拥有的块。随着时间的推移,这些对等节点会逐渐收集到足够多的块,直到它们下载了所有内容。一旦它们拥有了全部的内容,它们也可以成为种子,继续分享内容给其他对等节点。对等节点可以随时离开群,通常在完成自己的下载之后会停留一个短时期,这样可以让其他对等节点从它们那里继续下载缺少的块,从而促进整个群的文件共享过程。每个块都可以被许多节点共享,但如果每个人按照相同的顺序获取块,很可能会导致许多对等节点都依赖于获取下一个块的节点。这种情况容易形成瓶颈,因为多个节点同时依赖于同一节点。为了避免这种情况,对等节点之间会相互交换各自拥有的块清单,并尝试下载其他节点拥有但自己难以获取的块的副本。这样一来,稀缺的块更容易被其他对等节点找到并下载。如果所有的对等节点都采取这种策略,经过短暂的一段时间,所有的块都会变得广泛可用。那些只是从系统中获取资源而从不贡献的节点被称为「搭便车」。如果这样的用户过多,系统将无法正常工作,因此 P2P 系统会尽一切可能来减少他们的存在。BT 客户端采用了一种方法来奖励表现良好的上传行为的对等节点。每个对等节点都会随机地与其他对等节点进行通信,并在给他们上传块的同时检索他们的块。具有最佳下载性能的对等节点还会随机尝试与其他对等节点交换资源,以寻找更好的合作伙伴。实际上,这些对等节点会为那些新加入的对等节点提供初始块,以便他们开始与其他对等节点进行交易。随着时间的推移,这种算法倾向于匹配那些上传和下载速率相近的节点,因为一个对等节点做出的贡献越多,他预期的回报就越大。如果一个对等节点没有或者非常缓慢地向其他对等节点上传块,他迟早会被系统切断或者阻塞。这种策略抑制了对等节点在系统中搭便车的行为,鼓励对等节点之间持续合作和互动。随着设备数量的增加,P2P提供的内容分发能力也会不断提升。
内容优化:ChatGPT
图片来源:Pixabay
内容来源:《计算机网络》
原创文章,作者:小道研究,如若转载,请注明出处:https://www.sudun.com/ask/34526.html