原理
传统方式
在传统下载方式中,一般是把文件由服务器端传送到客户端,例如FTP,HTTP,PUB等等。由于是从一台服务器下载,服务器所提供的带宽是一定的,因而下载人越多速度越慢。但是这样就出现了一个问题,随着用户的增多,对带宽的要求也随之增多,用户过多就会造成瓶颈,而且搞不好还会把服务器挂掉,所以很多的服务器会都有用户人数的限制,下载速度的限制,这样就给用户造成了诸多的不便。
BT方式
与传统下载不同,用BT下载反而是用户越多,下载越快,这是因为BT用的是一种传销的方式来达到共享的。BT首先在上传端把一个文件分成了Z个部分,甲在服务器随机下载了第N个部分,乙在服务器随机下载了第M个部分,这样甲的BT就会根据情况到乙的电脑上去下载乙已经下载好的M部分,乙的BT就会根据情况到甲的电脑上去下载甲已经下载好的N部分,这样就不但减轻了服务器端的负荷,也加快了用户方(甲乙)的下载速度,效率也提高了,更同样减少了地域之间的限制。比如说丙要连到服务器去下载的话可能才几K,但是要是到甲和乙的电脑上去下载就快得多了。
所以说用的人越多,下载的人越多,大家也就越快,BT的优越性就在这里。而且,在你下载的同时,你也在上传(别人从你的电脑上下载那个文件的某个部分),所以说在享受别人提供的下载的同时,你也在贡献。
与BT下载相比,普通下载原理图普通的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文件就是被下载文件的“索引”。
下载者要下载文件内容,需要先得到相应的.torrent文件,然后使用BT客户端软件进行下载。
下载时,BT客户端首先解析.torrent文件得到Tracker地址,然后连接Tracker服务器。Tracker服务器回应下载者的请求,提供给下载者其他下载者(包括发布者)的IP。下载者再连接其他下载者,根据.torrent文件,两者分别告知对方自己已经有的块,然后交换彼此的数据。此时不需要其他服务器参与,分散了单个线路上的数据流量,因此减轻了服务器负担。
下载者每得到一个块,需要算出下载块的Hash验证码与.torrent文件中的对比,如果一样则说明块正确,不一样则需要重新下载这个块。这种规定是为了解决下载内容准确性的问题。
而有些人下载完成后关掉下载任务,提供较少量数据给其他用户,为尽量避免这种行为,在非官方BitTorrent协议中存在超级种子的算法。这种算法允许文件发布者分几步发布文件,发布者不需要一次提供文件所有内容,而是慢慢开放的下载内容的比例,延长下载时间。此时,速度快的人由于未下载完必须提供给他人数据,速度慢的人有更多机会得到数据。由此往往造成用户卡在任务的99%,下载1G的任务要上传3G之多。
特点
由于BT软件之间的数据传输是双向的,这有效降低了对发布者宽带的依赖。和另一款常见的P2P软件电驴不同,BT协议中并没有采用对使用者按上传下载比和登陆顺序及是否能收到入站请求来综合排序进行上传。BT软件在大部分时间会不断比较其他BT客户端向己方传输数据的速度,并优先上传给向己方传输数据较快的客户端(发布者和下载完成者(通常被叫做seed或种子)的情况会有所不同,因为他们不下载数据,排序按对方的下载速度进行)。
虽然Bram Cohen称BT协议就有效使用互联网带宽而言是Peano有效的,但很多电信服务商抱怨BT传输占用了过多带宽,已经极大影响了网络上的其他应用(如对网络性能要求很高的网上语音,网上点播),来自全球各大电信服务商的统计都显示,BT传输已经占到网上所有数据传输的70%以上,不少电信服务商已经采取了单方面的行动来对BT传输进行限制,从较温和的数据传输优先度调整到对侦测到BT传输直接进行屏蔽,电信服务商称这是为了保护其他用户的权益,大多BT使用者认为电信服务商的这种做法违反了他们和服务商签订的服务协议,认为既然带宽不够用,电信服务商就有义务对设备进行改良。
为了应对电信服务商对BT传输的限制,主流BT软件已经做出了不少改进,以绕开电信服务商的限制,普遍使用的方法包括,通过以torrent文件为基础的客户端身份认证和对数据进行Diffie-Hellman密钥加密来防止被电信服务商侦测,使用DHT分布式网络作为Tracker服务器的补充,随机选择传输端口。
由于BT在发布和传播上的优点,有很多侵权内容也通过BT发布,被告涉嫌鼓励侵权内容的发布和下载,全球最大的BT发布和资源索引站点NOVA已经被迫关闭,包括MPAA和RIAA在内的版权保护团体正在对更多的BT站点采取行动,大多数BT使用者和开发者则认为控告BT站点是不明智的,就好比卖菜刀的不应该为有人用菜刀行凶的行为负责一样,BT站点本身不应该为侵权行为负责。
优点
BT下载的优点是显而易见的,双向传输突破了服务器带宽的限制,即使有很多人在下载,也不用担心下载速度的问题了。不仅如此,BT下载对于带宽的突破使个人电脑发布资源成为可能,BT下载不需要文件发布者有很高的处理速度和带宽就能顺利的发布文件了。
缺点
BT下载并不完美。
由于无法验证文件发布者,下载内容的安全性难以得到保障;对于ADSL用户来说,持续的大量的上传数据是致命的,这会严重影响下载速度和其他网络连接的速度,由于大多数电信服务商只为ADSL用户提供了512Kbps的上行带宽,因此他们的上传效率很低,从而会影响其他用户的速度。
BT资源存在热度问题,如果发布者停止发布,而上传者变少,则下载速度会大幅下降甚至无法下载,直至种子失效(最糟糕的情况是小部分失效),为了BT资源长时间有效,依然需要服务器的配合。
最后就是搜索和版权问题,BT资源一般可以通过搜索引擎找到BT网站,下载种子,通过BT软件下载资源,而版权拥有者一个一个的起诉下载者是不现实的,所以他们的目光就集中在了BT站点上,BT与发行商在版权问题上的争论实际上就是互联网精神与现有版权法律冲突的缩影,BT毫无疑问处于劣势。
应用
推荐使用的BT软件有utorrent,Bitcomet,Azureus,这些软件时常更新来提供更好的BT协议支持和扩展功能。
尽量不要限制BT软件的上传速度,这会影响你的下载。
避免使用BT默认的监听端口,这些端口可能已经被服务商屏蔽了。
使用防火墙的用户有可能需要在防火墙上打开BT监听端口。
使用路由器的用户一般需要通过端口映射,或者DMZ功能,或者UPNP功能,来使入站请求能到达使用BT软件的计算机上。
即使完成了下载,也请你尽可能不要立即关闭BT软件或者让BT软件停止上传,您的上传是对整个BT网络的重要贡献,BT网络持一定的上传者人数以使BT健康运行。
即使没有看到发布者和下载完成者出现也请耐心等待,原因可能是,使用人数较多你所被分配到的连接者群体不包含发布者和下载完成者,对方使用了super-seed模式隐藏自己,发布者和下载完成者可能暂时下线。
常用软件
BitComet
BitComet是基于BitTorrent协议的p2p免费软件;高效的网络内核,多任务同时下载依然保持很少的CPU内存占用;支持对一个Torrent中的文件有选择的下载;磁盘缓存技术,有效减小高速随机读写对硬盘的损伤;只需一个监听端口即可满足所有下载需要;自动保存下载状态,续传无需再次扫描文件,作种子也无需扫描文件;支持多Tracker协议;对内网用户同样适用;绿色软件,不需安装,仅运行时关联.torrent文件;多语言界面。
uTorrent
μTorrent 是一个小巧强劲,全功能,用C++编写,支持Windows、Mac OS X和GNU/Linux平台的免费BitTorrent客户端。支持UPnP,支持流行的BT扩展协议,磁力链接(Magnet Links),IPv6,用户来源交换,DHT和uTP,以及RSS下载器等丰富特性。
DeadmanWalking
BitTorrent Deadman Walking是TLF论坛的专门定制优化过的版本,推荐使用。
BitTorrentPlus
BitTorrent Shadow's Experimental的加强版,拥有全中文的界面。相对于原版更加易用,翻译通俗易懂,功能强大,是当今BT客户端中功能最为强大的客户端程序之一。
BitSpirit
一个功能强大,使用方便的BitTorrent客户端。它不仅全面兼容BitTorrent协议,更提供了很多个性化的功能,界面酷似Flashget。
贪婪ABC
一个增强、应该说是超强的Bittorrent客户端,单窗口多任务!消耗少到吓人。相信很多人已经找了好久,但是一直没有满意的吧?贪婪BT将会给你一个满意的解决方案。
BitTorrent
最早期最原始的BT客户端工具,一个多点下载且源码公开的P2P软件,就像一个浏览器插件。
Shareaza
一款在国外评价极高并且相当流行的P2P软件,集合了eDonkey和BT等几种流行P2P网络类型,许多P2P的下载站点已将其指定为BT的官方下载工具。
PTC
PTC比BitTorrent多了个软件界面,可以直接双击运行,然后打开下载到硬盘上的torrent文件;能同时多任务下载,节省资源;能完全自定义上传速度,防止网络带宽占用过大等等。
Azureus
一个基于JAVA的多torrent下载程序,可以手动设置某个torrent的优先权,加入了irc聊天室,增加了一些基本的irc命令,可以看见在线人数和ID,支持多trackerurl,对于多tracker发布的torrent可自动切换,并可以手动更改tracker url。
BitAnarch
一个号称可以和BitTorrent Plus版媲美的BT软件,具有下载日志功能,可以显示种子和下载者的详细信息,具有搜索新闻组Torrent文件的功能,更多的选项设置功能,软件界面支持简体中文、繁体中文、英文语言选择。
BitBuddy
BitBuddy超小快速,单窗口多任务,支持BitTorrent及其扩展协议的BT下载客户端,操作类似flashget和netants,方便实用。支持多任务下载,设置下载优先级,速度限制等多项实用功能。
BTVampire
BT Vampire又叫称BT吸血鬼,是一款增强型的完全免费的Bittorrent客户端,主要是为了改进BT下载效率,试验新算法而编写的。
BtJoy乐翻天
一个多点对多点下载的P2P软件,使用非常方便,其特点简单的说就是:下载的人越多,速度越快;他发挥了eDoneky和BitTorrent的优势,去除了edoneky需要排队的不足,又简化了BitTorrent共享发布比较复杂的流程。
BitTornado
一个多点下载且源码公开的P2P软件,使用非常方便,就像一个浏览器插件。与以往http、FTP、pub等下载人越多,速度越慢的方式迥然不同,BT下载的特点简单的说就是:下载的人越多,速度越快。时下BT已经成为网上交流资源最新、最酷的方式。是由著名的BT客户端Shadow'sExperimental更名而来。
超级BT下载
一款非常优秀的BT下载软件,速度是同类软件的3倍以上!采用了先进的技术,更进一步的优化了对等连接!使下载者之间没有任何障碍了!并且有非常好的皮肤功能!这也是此软件的一个亮点!推荐大家下载!绝对超值!而且完全免费!
TurboBT
采用最新的C++/PYTHON界面框架技术编写的BT(BitTorrent)客户端下载工具。界面代码全部重写,你可以高速的下载各类的资源且非常容易使用。
MyBT
一个改良的BT客户端,是用于在BT站点下载或上传文件的实用工具。综合了最新的流行BT客户端开发,界面友好,中文环境,支持多任务,断点续传,超级种子,自动发布种子等功能,运行稳定,速度快。
综艺BT下载王
一款非常实用的功能齐全的BT客户端软件,可以同时下载多个BT。它运行稳定,占内存非常小,速度快!而且还有BT种子制作功能。
BTogether
BTogether为新型P2P下载软件,支持最新BitTorrent(BT)下载协议。把BTogether拷贝到某目录,直接运行即可。本软件为纯中文绿色免费软件,不修改注册表,无需其他运行库。
THUNDER
迅雷,一款国产的下载软件,迅雷也支持BT下载,可用右键单击IE中的下载链接,并选取“用迅雷下载”即可。
超级旋风
超级旋风是腾讯公司出版的一种多任务下载软件,由原腾讯TT浏览器中独立出来的版本。超级旋风支持多个任务同时进行,每个任务使用多地址下载、多线程、断点续传、线程连续调度优化等。
BTSOUSOU
这是一个全球范围内顶级的专为BT种子设计的搜索引擎,用户只需要输入想要的关键词,一键就可以在全球范围内寻找种子源.2013年正式登陆中国市场,推出中文服务,分类支持音乐,电影,电视剧,软件,游戏,等是美剧,英剧迷,或者免费游戏狂热爱好者们的乐园,里面更新的美剧是国内最快速度的.需要和讯雷等下载工具配合使用.
种子文件
torrent文件(扩展名为.torrent)包含了一些BT下载所必须的信息:
资源的名称,如果资源是以目录形式,还有目录树中每个文件的路径信息和文件名
如果资源是单个文件,这个文件的大小信息;如果是以目录形式,目录树中每个文件的大小
对资源实际文件按照固定大小进行分块后每块进行SHA1hash运算得到的若干特征值的集合
torrent文件的创建时间、制作者填写的注释、以及制作者的信息等
至少一个announce地址,对应于Internet上部署的一个Tracker服务器
有了这个文件,你才可以下载最新、最酷的东东。torrent文件通常很小,大约几十K、几百K大小吧.
根据BitTorrent协议,文件发布者会根据要发布的文件生成提供一个.torrent文件,即种子文件,也简称为“种子”