本文使用markdown編譯生成,如果嫌長,左側附有目錄可直接跳轉,本文簡書同步更新地址http://www.lxweimin.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
你也可以直接點擊最好的幾個 點我下載
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
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連接上了,下載一般就不會死的。