BitTorrent协议

1、简介

BitTorrent(简称BT)是一个文件分发协议,每个下载者在下载的同时不断向其他下载者上传已下载的数据。而在FTP,HTTP协议中,每个下载者在下载自己所需文件的同时,各个下载者之间没有交互。当非常多的用户同时访问和下载服务器上的文件时,由于FTP服务器处理能力和带宽的限制,下载速度会急剧下降,有的用户可能访问不了服务器。BT协议与FTP协议不同,特点是下载的人越多,下载速度越快,原因在于每个下载者将已下载的数据提供给其他下载者下载,充分利用了用户的上载带宽。通过一定的策略保证上传速度越快,下载速度也越快。在很短时间内,BitTorrent协议成为一种新的变革技术。

2、技术依赖

BitTorrent 的发展依赖于peer-to-peer技术。对等网络 (Peer - to - Peer 简称 P2P) 的研究一直是国外知名学府和知名企业以及研发机构最关注的重点。P2P是近年来互联网最热门的技术,在VoIP、下载、流媒体、协调技术等领域得到飞速发展,被财富杂志评为影响互联网的四大科技之一,甚至被认为是代表无线宽带互联网未来的关键技术。
       P2P技术体现了互联网最根本的内涵——自由和免费,它的主要优点如下:
对等性高:非中心化,互联网回归本色——联系和传输;
扩展性强:用户扩展与资源、服务、系统同步扩展;
健壮性高:服务分散和自适应,耐攻击、高容错性;
性价比高:P2P成本低、存储和技术能力强;
负载均衡:分布存储和技术,整个网络负载得以均衡。
       在P2P网络中,每个参与的节点既是服务器又是客户端,既是信息的提供者又是信息的消费者。P2P信息检索的目的就是网络中的任意节点都可以提交检索的请求,然后这些检索通过相关信息的节点将会回应请求,按照某种路由机制路由到本地相关的内容,以对等的形式直接传送到请求节点上。
       检索过程分为以下几个阶段:每个节点在加入网络的时候,会对存储在本节点上的内容进行索引,以满足本地内容检索的目的。然后按某种预定的规则选择一些节点作为自己的邻居,加入到P2P网络当中。发起者P提出检索请求q,并将q发送给自己的邻居,P的邻居收到q后,再按照某种策略转发给它在网络中的其它邻居节点。这样,q就在整个网络中传播开来。收到请求q的节点如果存储有相应内容信息 , 则将对应的内容返回。
       如何在一个大规模分布的环境下定位资源是个十分具有挑战性的问题。集中体现在如何组建P2P网络,如何选择有效的资源请求路由策略以便以较少的消息通信开销,获得较多的相关查询结果返回,同时能够保证较好的服务均衡性。

3、原理简述

普通的HTTP/FTP下载使用TCP/IP协议,BitTorrent协议是架构于TCP/IP协议之上的一个P2P文件传输协议,处于TCP/IP结构的应用层。 BitTorrent协议本身也包含了很多具体的内容协议和扩展协议,并在不断扩充中。
       根据BitTorrent协议,文件发布者会根据要发布的文件生成提供一个.torrent文件,即种子文件,也简称为“种子”。
      .torrent文件本质上是文本文件,包含Tracker信息和文件信息两部分。Tracker信息主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置,文件信息是根据对目标文件的计算生成的,计算结果根据BitTorrent协议内的B编码规则进行编码。它的主要原理是需要把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和Hash验证码写入种子文件(.torrent)中。所以,种子文件(.torrent)就是被下载文件的“索引”。

4、下载过程

下载者要下载文件内容,需要先得到相应的.torrent文件,然后使用BT客户端软件进行下载。
      下载时,BT客户端首先解析.torrent文件得到Tracker地址,然后连接Tracker服务器。Tracker服务器回应下载者的请求,提供下载者其他下载者(包括发布者)的IP。下载者再连接其他下载者,根据.torrent文件,两者分别对方告知自己已经有的块,然后交换对方没有的数据。此时不需要其他服务器参与,分散了单个线路上的数据流量,因此减轻了服务器负担。
      下载者每得到一个块,需要算出下载块的Hash验证码与.torrent文件中的对比,如果一样则说明块正确,不一样则需要重新下载这个块。这种规定是为了解决下载内容准确性的问题。

相关概念Tracker:

收集下载者信息的服务器,并将此信息提供给其他下载者,使下载者们相互连接起来,传输数据。种子:指一个下载任务中所有文件都被某下载者完整的下载,此时下载者成为一个种子。发布者本身发布的文件就是原始种子。也指.torrent文件。做种:发布者提供下载任务的全部内容的行为;下载者下载完成后继续提供给他人下载的行为。

MagNet协议

1、简介

MagNet协议,也就是磁力链接,简称磁链。以前的BT下载服务是需要一个tracker服务器来储存BT种子文件,但是MagNet URI协议是不一定需要tracker服务器的,原理类似于电驴,但不完全是电驴的翻版。MagNet每次连接的源头都是不固定的,也就没法查封源头。在BT被封锁以后MagNet将是主流下载方式。
       它会根据文件内容的hash生成一个独特的指纹,有点类似于ISBN。这样,任何拥有此文件的人可以生成基于文件内容的指纹。它的另一个优势就是跨平台性,因为它是以普通文本存在,你可以简单的复制粘贴即可完成分享。

2、技术依赖

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世界里,就是进行上传与下载。

3、原理简述

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客户端厂商独立运营的,也可以是几家联合共用,总之,它是分散的,只要在客户端软件中内置一张表单,那客户端就将有非常多的入口可供选择。

参考资料:百度百科---MagNet协议       百度百科---BitTorrent协议

参考博客:http://www.cnblogs.com/5kuai/archive/2009/12/28/1633964.html

转载自:BitTorrent协议与MagNet协议原理

转载于:https://www.cnblogs.com/wpjamer/articles/10788222.html

BitTorrent协议与MagNet协议原理相关推荐

  1. BitTorrent协议与MagNet协议原理【转】

    转自:https://blog.csdn.net/u012785382/article/details/70674875 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog ...

  2. P2P下载技术-BT协议与Magnet磁力链接

    P2P下载技术-BT协议与Magnet磁力链接 前言 传统C/S服务器-客户端文件下载 FTP下载 HTTP下载 C/S下载模式缺点 P2P下载 最早的P2P下载应用-Napster BT-BitTo ...

  3. TCP协议、算法和原理

    TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面.所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获. 关于TCP这个协议的细节,我还是推荐你 ...

  4. 深入理解HTTP协议、HTTP协议原理分析

    超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发布和接 ...

  5. 协议处理程序初始化失败_TCP协议、算法和原理

    关于TCP这个协议的细节,我还是推荐你去看W.Richard Stevens的<TCP/IP 详解 卷1:协议>(当然,你也可以去读一下RFC793以及后面N多的RFC).另外,本文我会使 ...

  6. (三)HTTP再邂逅--熟悉HTTP协议结构和通讯原理

    HTTP再邂逅--熟悉HTTP协议结构和通讯原理 HTTP协议特点 URL和URI的区别和联系 HTTP报文结构分析 HTTP请求方法剖析 HTTP响应状态码拆解 用telnet分析http协议的通讯 ...

  7. 简述tcp协议三报文握手过程_华为原理 | 传输层协议amp;交换转发原理

    Interface GigabitEthernet0/0/0 ip address 12.1.1.2 255.255.255.0 arp-proxy enable \\华为接口下默认没有开启代理ARP ...

  8. 原理简介_消息通信的利器MQTT协议简介及协议原理

    - 没用过但是必须得知道系列 - 前言: 相比于 XMPP, MQTT 的简单轻量受到了不少工程师的喜爱,从物联网到传统的消息服务,简单可依赖的 MQTT 到底为何让人如此着迷呢? MQTT 协议-M ...

  9. SSL协议与数字证书原理

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

最新文章

  1. 工业机器人发展现状:硬件制造大同小异,视觉感知绘新蓝图
  2. Svchost.exe病毒
  3. 深入了解 Microsoft AJAX Library (转自msdn,觉得不错)
  4. STM32的启动分析
  5. Keil MDK-ARM下载 安装与和谐教程
  6. 说干就干的p2psearcher2013
  7. 我都服了,为啥上游接口返回的汉字总是乱码?
  8. 使用U-Net分割方法进行癌症诊断
  9. 微信小程序复制就好-JS工具eval5,用JS替换VBA处理Excel数据
  10. 美丽炫酷的Html5简历网页模板
  11. 轻量级web api_API接口管理,这15种开源工具助你管理API
  12. 计算机整个桌面偏左,教你win10电脑屏幕往左偏怎么办
  13. vue 自动播放语音
  14. 我一个人吃饭 旅行 到处走走停停 也一个人看书 写信 自己对话谈心
  15. python实现扫描二维码图片,返回相关信息
  16. matlab绘制圆极化波,圆极化波及其MATLAB仿真_西电
  17. 判断当前入口是PC端企业微信还是PC端浏览器。或者是APP端企业微信
  18. Mix-In的译法探讨
  19. 跨境电商四大推广路径都有哪些?站斧浏览器带你挑选最适合你的引流渠道
  20. 如何实现国外域名调转到国内已备案ip

热门文章

  1. java实现内存修改器_魔兽3内存修改器 v8
  2. html5 圆形加载进度条,纯css3超酷圆形Loading加载进度条特效
  3. signature=995eb8e443ef674d51fa76dabc7ac89c,我國7-8歲學童動作協調能力之初探
  4. xp和linux的引导文件,Linux与XP双系统中grub引导配置笔记
  5. outlook qr码在哪里_高能手办团兑换码有哪些 高能手办团哪里兑换
  6. 2019-0405视觉SLAM的学习第四讲
  7. java排序算法 sort_Java排序算法之SleepSort排序示例
  8. android sqlite联合,在联合查询中,Android SQLiteorder by 计算列_sql_开发99编程知识库...
  9. ubuntu php 错误,Ubuntu下如何开启PHP错误提示教程
  10. zxr10交换机配置手册vlan_中兴ZXR10 G系列交换机SVLAN使用指导