用户通过BT下载文件的基本过程:

一、找到.torrent文件

二、使用BT下载客户端软件打开这个文件

三、对于用户来讲,只要花时间去等就可以了

而对于客户端软件来讲,它会根据.torrent文件中的网址自动连接Tracker服务器,从它那里接收到其他正在下载该文件的人的网址名单。下一步,软件就一一与名单上的网址取得联系,从它们那里获取文件的片段,直到整个下载完成。从整个过程不难看出,BT Tracker服务器是一个中央节点,任何客户端都可以在其上找到“同伴”——只要其他人也在下载或分享同一个文件。

因此,BT并非一个去中心化的应用,必须依靠中央节点(BT Tracker服务器)才能正常工作。

Magnet 下载文件原理:

Magnet不需要Tracker服务器,也不需要.torrent文件,仅需要一串字符就可以进行文件下载。

      DHT:2002年,纽约大学的两个教授Petar Maymounkov和David Mazières发表了一篇论文,提出了一种真正去中心化的“点对点”下载模型,他们将其称为Kademlia方法。2005年,BT软件开始引入这种技术,在BT中被称为DHT协议(Distributed Hash Table,分布式哈希表)。

DHT是一种分布式存储方法。DHT的作用是找到那些与本机正在下载(上传)相同文件的对端主机(Peer),当然,实现这一过程并不依赖Tracker服务器。在DHT网络中的每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。这种信息获取方式保证了整个网络没有单个的中心,即使一个节点下线,依然可以通过其他节点来获取文件,因此也就不需要Tracker服务器来告诉你,其他节点在什么地方。

PEX:是Peer Exchange的简写,我们可以将其理解为“节点信息交换”。虽然DHT解决了去中心化的问题,但要在没有“中心协调员”(Tracker)的情况下实现高效寻址,就要借助PEX。PEX所提供的功能有点类似于以前的Tracker服务器,但工作方式却非常不同,我们可以打个比方来说明。

小赵在A班,她不认识B班的小何,也不认识C班的小温,但小赵认识同班的小王,而小王认识B班的小何,也可能还认识C班的小温,或者小王仅认识B班的小何,但小何认识C班的小温,而小温又认识同班的所有同学,结果就是小赵可以“无限”地延伸自己的关系网,不管怎样,总有一条沟通途径可以将这些同学联系在一起,待小赵“认识”了小温后,他们就可以直接沟通了,在P2P世界里,就是进行上传与下载。

      Magnet links:有网友将其称为磁链。DHT+PEX解决了BT“寻址”的问题,但是如何告诉BT客户端找(寻)什么又是另外一个问题。在.torrent文件中包含的内容就是用户真正要下载的文件的特征信息,或称为“电子指纹”,BT客户端知道了要找什么,也知道如何去找,于是P2P方式的下载、上传就实现了。以前BT客户端通过.torrent文件得知“要找什么”,现在,文件的“电子指纹”不再存放于.torrent中,而被放在了Magnet links中

例如:

magnet:?xt=urn:btih:36684b463ca2aa2f9347b18e9f6b1a9090bdb073&dn=Microsoft+iSCSI+Initiator

分解一下这个地址:

magnet:协议名。

xt:exact topic的缩写,表示资源定位点。BTIH(BitTorrent Info Hash)表示哈希方法名,这里还可以使用SHA1和MD5。这个值是文件的标识符,是不可缺少的。

dn:display name的缩写,表示向用户显示的文件名。这是一个可选项。

tr:tracker的缩写,表示tracker服务器的地址。这是一个可选项,本例中并未出现。

精简一下上例,仅需要magnet:?xt=urn:btih:36684b463ca2aa2f9347b18e9f6b1a9090bdb073就够用了,如果附加dn(display name),在使用上会更加方便一些。

Magnet Link的好处就不多说了,至少包括两点:网络的可靠性得到了极大的增强;不存在“被拔线”的风险。由于不存在所谓的中央节点,审查将变得更加困难,“单点失效”的问题也就不存在了。此外,Magnet URI只是一个字符串,非常容易传播,根本无法禁止。因此,Magnet URI取代Tracker模式将是大势所趋,迟早会成为主流BT下载方式。

细心的网友可能看出了DHT+PEX+Magnet Link模式中的一个问题——BT客户端的“第一步是如何迈出的”,套用在介绍PEX时使用的例子,那就是小赵是怎么“加入”A班的呢?这确实是个问题。解决这个问题依然需要一台服务器(bootstrap node),不过这台服务器所起的作用与Tracker不同,它仅负责接纳小赵进入A班,当小赵与A班中的同学“搭上了话”,之后这台服务器就没有什么用处了。bootstrap node可以是不同BT客户端厂商独立运营的,也可以是几家联合共用,总之,它是分散的,只要在客户端软件中内置一张表单,那客户端就将有非常多的入口可供选择。

(摘选自 Pconline)

转载于:https://www.cnblogs.com/5kuai/archive/2009/12/28/1633964.html

BT 与 Magnet 的下载方式及原理相关推荐

  1. FPGA、ARM、单片机下载方式及原理的比较

    在线编程目前有两种实现方法: ISP:in system programming 在系统编程 IAP: in applicatin programming 在应用编程 ISP一般是通过专用的串行编程接 ...

  2. Dr.COM防BT下载技术的原理和实现的方式

    Dr.COM防BT下载技术的原理和实现的方式 背景介绍 目前互联网络中P2P下载业务流量非常大,包括大家熟知的BT,eDonkey,eMule,都是较为流行的P2P软件.P2P业务特点占用大量网络带宽 ...

  3. 网络资源下载方式:http/https、ftp/sftp、BT种子、磁力下载、ed2k下载等的区别

    文章目录 参考资料 序言 中心化下载 http/https下载 ftp/sftp下载 http与ftp下载方式的不同 中心化下载的缺点 去中心化下载 BT种子下载 磁力下载 ed2k下载 推荐的下载器 ...

  4. BT下载的工作原理及小知识

    作者:周轶  时间:2005-11-01 00:00:00  出处:天极Myhard   <script src="/e/public/ViewClick?classid=3& ...

  5. 下载一个电影,普通下载方式和utorrent方式,速度为什么差这么多?原理是什么?

    下载一个电影,普通下载方式和utorrent方式,速度为什么差这么多?原理是什么? 原因是:utorrent方式是将一个电影分成了n块,而上传的人越多,你下载速度越快. 举例子: 需要搞清楚的一点是, ...

  6. 分布式下载方式(一)原理分析

    [特殊提醒:本文理论性较强,请谨慎阅读] 上一篇文章中分析了UC浏览器的视频下载方式:UC浏览器视频播放缓存以及视频下载分析,讲到了P2P的下载方式,本文就分析一下什么是P2P的下载方式,以及P2P所 ...

  7. 网络下载方式 bt pt 简介

    目录 HTTP下载 FTP下载 BT下载 PT下载 网络资源下载方式有HTTP下载.FTP下载.BT下载和PT下载等.其中 HTTP和FTP下载方式都是从服务器上下载,同一时间下载的人数越多,下载速度 ...

  8. BT通信中数据下载的分析和实现

    2009-08-21 14:36 BT通信中数据下载的分析和实现 关键字: Redeployment zlib 单态 AOP LightboxBT通信技术作为一种优秀的P2P下载技术,在目前的文件共享 ...

  9. 注意营养,这可能是目前最好的离线下载方式

    说到离线下载可能大家会想到BT.种子.磁力等词汇,这类链接资源非常丰富,但下载却很不方便 常见的下载工具如迅雷.uTorrent .BitComet等,在遇到敏感资源.少种.S链等情况都很难正常下载 ...

  10. 分布式下载方式(二)DHT分布式网络

    简单回顾以下上一篇文章介绍了内容:分布式下载方式(一)原理分析 分布式下载方式也有两种:依赖tracker的"元数据集中,文件数据分散"的方式:另一种是基于分布式的哈希算法,保证元 ...

最新文章

  1. 技术图文:如何利用 C# 爬取 ONE 的交易数据?
  2. 前沿 | DeepMind改进超参数优化:遗传算法效果超越贝叶斯
  3. asp.net数据格式的Format-- DataFormatString
  4. linux6.4 vnc安装与配置,Oracle Enterprise Linux 6.4 下配置vncserver
  5. java form 上传文件_form java springmvc怎么上传文件
  6. 计算机软件系统包括应用软件和什么,计算机软件系统包括什么
  7. 文件设置索引_Linux文件系统是怎么工作的?
  8. RQNOJ PID2 / 开心的金明
  9. 计算机cmos芯片用途,什么是CMOS,它有什么用途?
  10. windows下文件路径太深,无法删除解决办法
  11. 传漾科技:领跑html5数字化营销
  12. 使用 Nginx 部署前后端分离项目,解决跨域问题
  13. 在IDEA中解决jar包冲突的神操作-必看
  14. Linux连接MySQL出现1045错误 解决方法
  15. TM1637+stm32 HAL库
  16. 小企业无线局域网服务器,无线局域网AAA服务器的软件设计与实现
  17. 二、final和static关键字,接口和抽象类
  18. 【HDU】1535 Invitation Cards 最短路
  19. Ubuntu永久修改IP
  20. charger在充电达到75%停止充电

热门文章

  1. 对手机彩铃的一些想法
  2. 管理感悟:你的能力是有限的
  3. 视觉平衡与物理平衡_简单聊聊摄影“视觉平衡”那些事
  4. C# TextBox光标位置设置 滚动到最后一行 显示最后一行 自动跳转最后一行
  5. mysql中提供哪些约束_MySQL约束
  6. verilog将像素数据写入txt_【测试工具】测试数据生成工具datafaker
  7. qlabel显示图片同时鼠标点击画线_怎样将CAJ文档转成JPG图片?
  8. react 逆地理 高德地图_给高德新版地图点赞!出行服务竟然如此智能
  9. 代理(Proxy)和背靠背用户代理(B2BUA)
  10. LOJ2181 排序