×

提高BT下载速度的方案—以迅雷极速版为例

96
爱咪哆
2017.09.26 17:22* 字数 6144

本文使用markdown编译生成,如果嫌长,左侧附有目录可直接跳转,本文简书同步更新地址http://www.jianshu.com/p/d66a25df071d

前言

传统下载我们使用IDM,而BT、磁力链使用迅雷的时候更多,不过有时候迅雷总是下着下着就没速度了,因此也有渣雷的称呼,现在新出的迅雷9除了评论功能之外,亮点不多,可以使用去广告版。

顺便附上下载地址

迅雷极速版:点我下载

迅雷9去广告版:百度网盘

为了提高下载速度,我们先要弄清楚下载原理,然后才有针对性进行解决。此部分参考资料

在讲原理之前首先你得具备BitTorrent(简称BT)协议的一些基本知识。BT协议其实是一个协议簇,BEP-3 是其基本协议内容,其他的大部分都是围绕这个来进行扩展或补充,区别于点对点(point-to-point),它是用户群对用户群(peer-to-peer)要想从BT网络中下载一个资源,必须具备以下部分:

种子文件(也就是我们常说的种子,后缀是 .torrent,本质上是一个由bencode编码的文本文件,其把资源分成很多虚拟块,并记录每个块的hash值,另外上面还记录着其他信息,比如文件大小、名字、Tracker服务器等)

BT客户端(需要有专门解析BT协议的程序,这样才能下载,比如迅雷,电驴)
Tracker服务器 (记录着peer和种子相关信息,起着中心调控的作用)

下载资源的时候,客户端首先根据bencode(bencode是BT协议中的编码方式)解码种子文件,得到Tracker服务器的地址和资源信息,通过和Tracker服务器沟通得到其他已经下载该资源的peers信息(其他已经拥有该资源的客户端或者发布该资源的人),然后再和这些peers沟通得到自己想要的部分,即互通有无。由于把文件分成很多块来同时从不同的地方下载,而且下载后,继续维持上传的状态“分享”,这也就是为什么BT通常下载快的原因。

下面这个网站使用Javascript编写了一个BT工作原理演示动画程序,非常生动形象。点击查看

这是我截的一个图,每个圆代表一个结点,其会通过其它结点下载需要的文件段。结点中间的那个Bar有点类似于eDonkey中的下载进度条。至于为什么要用像彩虹一样的颜色,主要是为了让你看到不同的段是从不同的结点下载的,你可以按热键S来加入一个下载完了的结点,用P来加入一下空结点,按R来删除一个结点。

原理分析

bt

普通的HTTP/FTP下载使用TCP/IP协议,BitTorrent协议是架构于TCP/IP协议之上的一个P2P文件传输通信协议,处于TCP/IP结构的应用层。BitTorrent协议本身也包含了很多具体的内容协议和扩展协议,并在不断扩充中。根据BitTorrent协议,文件发布者会根据要发布的文件生成提供一个.torrent文件,即种子文件,也简称为“种子”。

种子文件本质上是文本文件,包含Tracker信息文件信息两部分。Tracker信息主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置,文件信息是根据对目标文件的计算生成的,计算结果根据BitTorrent协议内的Bencode规则进行编码。它的主要原理是需要把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和Hash验证码写入种子文件中;所以,种子文件就是被下载文件的“索引”。

下载者要下载文件内容,需要先得到相应的种子文件,然后使用BT客户端软件进行下载。下载时,BT客户端首先解析种子文件得到Tracker地址,然后连接Tracker服务器。Tracker服务器回应下载者的请求,提供下载者其他下载者(包括发布者)的IP。下载者再连接其他下载者,根据种子文件,两者分别告知对方自己已经有的块,然后交换对方所没有的数据。此时不需要其他服务器参与,分散了单个线路上的数据流量,因此减轻了服务器负担。

下载者每得到一个块,需要算出下载块的Hash验证码与种子文件中的对比,如果一样则说明块正确,不一样则需要重新下载这个块。这种规定是为了解决下载内容准确性的问题。

一般的HTTP/FTP下载,发布文件仅在某个或某几个服务器,下载的人太多,服务器的带宽很易不胜负荷,变得很慢。而BitTorrent协议下载的特点是,下载的人越多,提供的带宽也越多,下载速度就越快。同时,拥有完整文件的用户也会越来越多,使文件的“寿命”不断延长。


UPnP

对于一台内网电脑,BitComet的UPnP功能可以使网关或路由器的NAT模块做自动端口映射,将BitComet监听的端口从网关或路由器映射到内网电脑上。NAT穿越技术允许网络应用程序对它们是否位于一个具有UPnP能力的NAT设备之后进行检测。然后,这些程序将获得共享的全球可路由IP地址,并且配置端口映射以将来自NAT外部端口的数据包转发到应用程序使用的内部端口上--所有这一切都是自动完成的,用户无需手动映射端口或者进行其它工作。NAT穿越技术允许网络设备或者点对点应用程序通过动态开启和闭合与外部服务之间的通信端口穿过NAT网关与外界通信。

换句话说,概括成:以简单NAT转换效率是不高的,若启动UPNP技术,可以提高NAT数据转换效率。

当然这个功能对路由器的要求更高,还会消耗更多的网络资源。

这里需要补充说明:UPNP功能必须要路由器和软件同时支持才能有效,但是很多情况下,不用路由器单纯用猫上网用带UPNP功能的软件,摸下猫猫都发烫得可以将冷水变成温水(40度左右)。可想而知路由器,SOHO路由器一般情况下是不带散热片就单纯一块芯片算数。

至于我为什么会说外国路由使用的芯片会好过国产,首先,成本的问题,这个不想说。其次,芯片自身原因,某些芯片具备高级UPNP计算模块,能提升路由器转发速度,但是国产使用的芯片多数不具备UPNP功能(说我坦白),开启后发热量会增加。

DHT和磁力链

讲磁力链接之前,我们先看一下DHT网络技术。通过上面我们知道,Tracker服务器在资源下载的过程中起着至关重要的作用,只有通过它我们才能得到其他peers的信息,才能够下载,但这同时也成了BT协议的一个弱点,如果Tracker服务器挂掉了或者被封被屏蔽,整个网络也就瘫痪了。由于一些资源都是有版权的,还有一些资源是限制级的,比如色情资源,Tracker服务器很容易被迫关闭或被墙。后来聪明的人类发明了另外一种协议,就是 Distributed hash table, 简称DHT,这个协议就是用来弥补这个弱点的。
BT协议簇中的DHT协议 是基于 Kademlia协议 建立的,其基本思想很好理解。DHT 由很多节点组成,每个节点保存一张表,表里边记录着自己的好友节点。当你向一个节点A查询另外一个节点B的信息的时候,A就会查询自己的好友表,如果里边包含B,那么A就返回B的信息,否则A就返回距离B距离最近的k个节点。然后你再向这k个节点再次查询B的信息,这样循环一直到查询到B的信息,查询到B的信息后你应该向之前所有查询过的节点发个通知,告诉他们,你有B的信息。

举个例子,比如我现在想要Angelababy的微信号(额…我要干嘛),我就从自己的微信好友中挑出k个最可能认识她的人,然后依次问他们有没有Angelababy的微信号,假如其中一个认识,那么他就会给我Angelababy的微信号,我也就不继续问其他人了。假如他不认识,他就给我推荐k个他微信好友中最有可能认识Angelababy的k个人,然后我再继续这k个人,就这样循环一直到我问到为止。OK,现在我已经得到了Angelababy的微信号,我就会告诉之前所有我问过的人,我有Angelababy的微信号。

当客户端下载资源的时候,他会利用上述方式查找peers信息,这样每个人都充当了Tracker的作用,也就解决了上面那个问题。

至于磁力链接,它是通过不同文件内容的Hash结果生成一个纯文本的数字指纹,用来识别文件。从2009年开始,很多BT服务器被关,不仅很多种子文件无法找到,Tracker服务器也断开解析工作,使得BT下载成为很大难题,而磁力链接很好地解决了这个问题,它利用BT种子中记录的数字指纹通过DHT网络进行搜索,获取下载者列表,与其他下载者通讯。

传统BT是透过连接Tracker伺服器来让使用者彼此交换档案,伺服器会用来追踪有多少人同时下载一个档案,但是这也表示所有分享者的讯息都可以在Tracker上被追踪,隱私性不足。同时只要这个伺服器下线,大家就无法分享档案。

因此,现在像是The Pirate Bay这一类的BT公共网站,已经放弃传统的Torrent种子下载模式,而是改用「磁力连结」,c采用DHT技术让使用者可以在不需要设定Tracker服务器的情况下,也能抓档案回来。

优化操作


提高BT下载速度的方式有很多,例如增加操作系统和BT客户端软件的并发网络连接数量等等。但是,在BT源(BT种子和BT当前下载者)有限的情况下,再怎么提高“并发网络连接数量”也于事无补的。如果能够有效地提高BT源的数量,则可以使得BT下载更高速、更可靠地完成。

添加tracker

两个BT用户之间建立初始连接时是靠“tracker服务器”上面的“tracker URL”进行的。Tracker是指运行于远端服务器上的一个程序。这个程序的功能就是用来追踪到底有多少人在下载同一个文件,当用户连接到这个服务器后,就会获得一个下载者的清单,比如下载者的地址信息等;然后下载软件就会根据这个清单,来自动连上别人的电脑进行文件的下载。说到这里就明白了吧,可以说Tracker服务器是BT下载的核心所在,如果没有此服务,BT下载软件就迷失了方向;而这种服务于BT的Tracker服务器地址又很多,如果用户在下载某个资源时遇到问题,不妨换一些Tracker服务器地址,或许问题就迎刃而解了。“tracker服务器”决定了BT下载者能够和哪些别的BT源建立联系、并从这些BT源进行下载。一般来讲,一个BT种子文件往往只和某一个BT网站的“tracker服务器”关联起来,也就是说,该BT种子文件内置只有一个“tracker URL”。但事实上,同一个BT种子文件可能在多个网站被重复发布了,区别仅仅在于其内置的“tracker URL”不同。

因此,当我们下载(大的)BT文件的时候,如果在其BT种子文件中多加几条“tracker URL”,则极可能可以增加BT源数量、提高下载速度(毕竟有很多好事者喜欢转载种子),我以我在使用的迅雷极速版下载某红字文件为例加以说明,其他bt下载软件通用。

1.首先你需要可用的tracker服务器,你可以搜索“Tracker list”找到更多的tracker,这里我提供两个每日更新的tracker列表,复制里面最新可用的tracker。推荐使用trackers_best,这也不是越多越好,不停的ping也是很费资源的。

tracker每日更新站点:
https://github.com/ngosang/trackerslist

https://newtrackon.com/

你也可以直接点击最好的几个 点我下载

2.浏览器打开一个torrent种子(磁力链一样),跳出迅雷添加下载任务窗口,这时候不要急这按手动下载,先点开上方的属性设置,粘贴我们刚获取到的最新tracker,注意不要留空行。

3.然后再开始下载即可,此法在一定程度上可以提高peers的数量,在下载一些冷门资源时候效果很好。

如果你的下载软件不支持添加tracker那怎么办呢?我们可以简单退而求其次,直接修改种子就可以了。

磁力连结的原理,其实是利用每一个BT种子的特征码,来当作搜寻种子的基础。透过这个特征码,在BT的网路中將种子拉回来,后续还是利用传统的BT方式下载档案。如果下载软件不支持添加tracker时候,另外,在某些状况下,某些种子档案也会关闭支持DHT技术的功能。尤其是在一些私人的PT网站。如果某些种子不支援DHT的时候,你也可以手动修改种子的內容,让种子支援DHT,或是加入更多的BT服务器,提高种子的完档机率。

关于修改BT种子,这里提供三个工具

首先是BEncode Editor这个工具:https://sites.google.com/site/ultimasites/bencode-editor,功能强大,并且可以通过导入导出数据片段来批量添加项目,当然这里主要说的是Tracker服务器列表——announce-list,但是就批量增添Tracker来说还是不够方便。。

另一个专门针对Tracker的编辑工具:TrackerEditor (https://code.google.com/p/bittorrent-tracker-editor/) 可以将下边的Torrent Tracer列表写入TrackerEditor程序同目录下的add_trackers.txt 文件,打开TrackerEditor时会自动载入。

最后再分享一个在线编辑工具: http://torrenteditor.com/index.php 可以检测添加的Tracker是否可用,但是也不能批量添加。

启用UPnP

UPnP端口自动映射技术是指可以接受外网peers的主动连接,这样就可以连上更多的peers。加上了更多的peers,其构成一个完整资源的概率将大大提升,从而可以保证资源下载速度和健康度。迅雷默认是支持UPnP的,不过还需要配置路由器和操作系统,路由器与操作系统的教程节选自http://shenzhouluye.com/changjian/1634.html

1.设置UPnP前后网速差别未设置UPnP时的网速

设置UPnP后的网速。效果显而易见,6M/S加速到9M/S。

2.路由器(这里以小米路由器为例)开启UPnP小米路由器mini版是默认开启的,路由设置-高级设置-UPnP。其他品牌路由器UPnP位于”转发规则“里面,这里就不累述。

3.电脑端开启UPnP电脑以windows 7系统为例,鼠标右键单击“我的电脑”,左键点击“管理”--“服务和应用程序”--“服务”项

将Funtion Discovery Resource Publication设置为自动。


同法将UPnP Device Host和SSDP Discovery也设置为自动。

控制面板-网络及共享中心-更改高级共享设置

“网络发现”里改为“启用网络发现”。

4.软件开启UPnP

打开系统设置-高级设置-任务默认属性,勾选”启用UPnP支持“。


“EMule设置”里勾选“连接KAD网络”和“连接ED2K网络”。

除了迅雷,其他视频或下载软件也可在软件的设置里去查看是否开启UPnP。

启用DHT

DHT网络(即无tracker服务器网络),这样就意味着迅雷在下载BT资源时可以走更广的DHT网络,也可以在DHT网络中找到更多的peers。在传统的BT原理中,tracker服务器是其中心。如果tracker服务器关闭,BT将无法进行下去。但是DHT是一种无服务器网络,就算tracker服务器倒闭了,也可以保证我们仍能连接到更多的peers,并不影响下载。

DHT网络无需tracker服务器来协调BT下载的原理是,DHT是一种分布式存储方法,每个客户端除了负责存储数据外,还负责一个小范围的路由,所以可以实现整个网络的寻址。因此,不再需要tracker服务器。

进入DHT网络后,我们的客户端会有一个ID,但这个ID是程序生成的、虚拟的、完全随机的ID,与你的实际个人信息没有任何联系。因此,是极其安全的。

高速通道破解

为什么用迅雷就在于会员资源,破解教程网上一大把,我就懒得打字了,最方便应该就是直接用破解补丁迅雷高速通道被举报资源破解工具点我下载

打开迅雷,登录VIP帐号。登录VIP帐号后,选择下载的资源,点击“高速通道加速”但弹出如下提示:

这时任务栏右下角找到迅雷的图标,鼠标右键点击“退出”,彻底退出迅雷

打开之前下载的迅雷高速通道被举报资源破解工具

点击“破解”

弹出如下提示

关闭软件,打开迅雷,登录VIP帐号,你会发现高速通道已经成功进入!

注意:破解工具如果杀软误报,请添加信任或者直接关闭杀软,如果破解没有效果请更换最新版本的迅雷,如果显示已进入高速通道,但一直是接收0.00kb,这说明资源本身不支持高速通道。

TCP/IP连接数

很多朋友在使用Windows系统过程中,经常会碰到下载资源或打开网页比较卡顿的问题,这是怎么回事呢?其实,该问题是微软处于安全考虑,限制系统中的TCP/IP半开连接数导致的。我们可以手动开启TCP/IP半开连接数限制进行解决,注意开启后下载顺畅了但是我们上网有可能卡顿。

1、快捷键WIN+R,打开运行,输入regedit,进入注册表路径:
2、找到HKEY_LOCAL_MACHINESYSTEM\CurrentControlSet\Services\Tcpip\Parameters

image.png

3、在右侧面板中找到EnableConnectionRateLimiting键值,此时,总计有三种情况:

a. 无此键值:你的系统并无TCP/IP连接数限制;
b. 键值为0:你的系统同样没有TCP/IP连接数限制;
c. 键值为1:TCP/IP限制被激活,默认为11。

4、TCP/IP半开连接数限制关闭方法:双击修改其值为“0”,确定保存即可。

软件设置

现在的网络上行和下行都是分开的,上行速度几乎不会影响下行速度,如果你的网速比较快,不要将上行设置得太小。同时更不能做吸血鬼,因为为了促进公平,鼓励大家共享,在迅雷中如果上传速度太慢,你的下载速度也会有影响,这点呢直接设置为不限制就可以了。

调高线程数和缓存

开启加速

修改hosts

会员服务和高速通道加速等功能的实现离不开迅雷自身的服务器,如果上面的方案还解决不了你的问题,同时你也发现其他下载软件比如电驴啊比特彗星啊都连不上,或者PPS啊在线视频啊都特别卡,你刚好用的又是一些比较冷门的宽带品牌,比如长城神马的。那么恭喜你,基本上,你应该是被无良的ISP运营商给封锁P2P了。但是有的网关禁用了迅雷服务,主要是通过屏蔽域名实现的,为了更好的下载效果,建议先ping一下常用的迅雷服务器地址,直接写入hosts,比如我写入了以下地址

# 迅雷相关(电信)
180.97.157.249 wwwxunlei.com
180.97.157.250 vip.xunlei.com
183.60.209.53 xzb.xunlei.com
183.60.209.40 msg.client.xunlei.com
121.9.209.235 hub5c.sandai.net
121.9.209.143 hub5u.sandai.net
114.80.189.3 hub5pnc.sandai.net
14.29.92.148 stat.lixian.vip.xunlei.com
61.155.183.121 api.portal.swjsq.vip.xunlei.com
180.97.85.104 cache2.vip.xunlei.com
61.155.181.81 interface.reg.vip.xunlei.com
180.97.85.240 bubble.vip.xunlei.com
61.155.181.241 service.cdn.vip.xunlei.com
42.123.125.237 download.verify.stat.xunlei.com
123.162.189.132 svr2.support.client.xunlei.com

更多突破方案自行去查资料吧

效果展示


最后看看效果(路由器渣没有upnp设置),由于小文件太多,虽然速度不快,但是基本都能稳定在500kb/s以上,个别时候1MB/S以上,比较稳定。(颜色真好看,再有个局域网加速就集成五彩了)

可见到这时候我们基本摆脱了对迅雷服务器的依赖,主要使用DHT下载了,当然如果迅雷服务器里有资源,高速通道确实很快。

后记


懒得做对比试验了,发出来你们去试试吧,不过只要tracker连接上了,下载一般就不会死的。

佳软分享
Web note ad 1