博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

常见 p2p系统BitTorrent简介

Posted on 2019-05-17 16:04  bw_0927  阅读(1381)  评论(0编辑  收藏  举报

BitTorrent是传输大文件的最常用协议之一

 

要发送或接收文件,某人在其连接到互联网的计算机上使用BitTorrent客户端。BitTorrent客户端是实现BitTorrent协议的计算机程序。受欢迎的客户端包括μTorrent,Xunlei,Transmission,qBittorrent,Vuze,Deluge,BitComet和Tixati。

BitTorrent追踪器[tracker]提供可用于传输的文件列表,并允许客户端找到可以传输文件的被称为种子的对等用户

算法介绍,名词定义

一般的下载服务器为每一个发出下载请求的用户提供下载服务,而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://www.jianshu.com/p/2f8f0d9c84a4
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。