BT下載首先在第一個共享端(或稱為Downloader)把一個文件分成N個部分,A用戶可以從Downloader上隨機下載第M個部分,B用戶可以在Downloader服務器隨機下載第K個部分。而A用戶的BT客戶端下載程序會根據情況從B用戶下載第K個部分,同樣的,B用戶也可以從A用戶下載第M個部分,通過這種方式減輕服務器端負荷,加快用戶的下載速度。
例如,C用戶直接從服務器下載,速度可能只有幾Kbps,而從A、B用戶處下載,速度將快很多。用戶在下載的同時,也在上傳文件,在享受別人提供下載服務的同時,每個用戶也同時在上載并貢獻自己的帶寬,所以造成使用BT下載服務的人越多,大家的速度就越快。BT下載的優越性就在這里體現。
從構建BT服務器的角度來看,整個BT系統由四個部分組成。
1.BT客戶端
BT客戶端是安裝在用戶PC機上的客戶端軟件,目前有很多BT客戶端可用,這里推薦BitComet(http://www.bitcomet.com/index-zh.htm)。它是一個類似FlashGet界面的BT下載客戶端軟件,簡潔易用。
BitComet在下載的同時,還負責將下載的內容共享給其它用戶,這個過程完全不需要用戶參與。如果不知道如何使用BT客戶端下載,那么安裝BitComet后去訪問BT中國網站,試一試就知道如何使用了。
2.BT“種子”文件
BT“種子”文件是一個名為.torrent的文件,它是由第一個發布共享文件者根據源文件制作出來的源文件的指紋信息。“種子”文件很小,一般在幾十KB到幾百KB之間,其中包含文件所在的BT端地址信息及目標文件的校驗碼。當BT用戶獲得“種子”后,直接在BT客戶端軟件中運行“種子”文件,BT軟件將根據“種子”文件包含的信息,自動查找到該文件所有可用的下載源,并進行下載。
3.Tracker
使用BT服務不需要指定服務器,雖然在BT服務里面仍然有服務器的概念,但使用BT服務的人并不需要關心服務器在哪里。BT服務器稱為Tracker,準確地說,Tracker是指運行于服務器上的一個程序,這個程序能夠追蹤到底有多少人同時在下載同一個文件。BT客戶端連接上Tracker服務器,就會獲得一個下載人員的名單,根據這個名單,BT客戶端會自動連接網絡中其它節點進行下載。
4.種子
BT服務把提供完整文件的用戶節點稱為“種子”(Seed),正在下載的用戶稱為客戶(Client)。某一個文件現在有多少“種子”、多少“客戶”是可以看到的。只要有一個“種子”就可以放心地下載。當然,種子越多、客戶越多的文件下載的速度會越快。
如果發現“種子”數為0,那么就不需要去嘗試了。當某個用戶下載完成后,如沒有選擇關閉,其它人就可以從該用戶處繼續下載文件。所以當下載的人多起來,通常做“種子”的人也會隨之增加,下載速度也會加快。
安裝手記
1.下載BT
BitTorrent是一個開源免費軟件,它使用Python語言編寫。Python是一種腳本語言,這意味著BitTorrent具有出色的跨平臺特性。用戶不僅可以在Windows中使用BT,也可以方便地在Linux/Unix平臺下使用。BitTorrent的官方網站地址為http://sourceforge.net/projects/bittorrent/,當前最新版本為3.4.2。
2.安裝BT
在安裝BitTorrent以前,首先要確保系統已經安裝有Python版本:
|
若系統沒有安裝Python,則需要從rpmfind.net下載Python,并加以安裝。下載得到BitTorrent-3.4.2.tar.gz以后,將其解壓縮:
|
然后安裝BitTorrent:
|
安裝完畢以后,BitTorrent軟件包的命令工具均安裝在/usr/loca/bin目錄下。
3.配置、啟動BT
前面提到,BT系統的核心是Tracker,因此架設一臺BT服務器的第一步就是要啟動一個Tracker:
|
這樣便在后臺啟動了一個Tracker供自己使用。
第二步,需要對希望提供下載的文件制作“種子”,這里假設對文件/btdata/dahuaxiyou.avi制作“種子”:
|
該命令對/btdata/dahuaxiyou.avi文件制作“種子”,“種子”名為dahuaxiyou.avi.torrent,其中www.mydomain.com是Linux服務器的域名。而btmakemetafile.py也可以對目錄制作“種子”,命令與對文件制作“種子”完全一樣。
第三步,需要配置Web服務器,將.torrent文件和application/x-bittorrent相關聯。編輯Apache的配置文件httpd.conf,添加如下內容:
|
然后重新啟動Web服務器,并將剛剛制作的“種子”放置在Web服務器的文檔目錄中,讓用戶可以訪問。
最后一步,啟動一個Downloader(最原始的共享源),使以后的用戶可以獲得最初的拷貝:
|
其中http://www.mydomain.com/dahuaxiyou.avi.torrent為制作“種子”的URL地址。這樣,用戶通過Web訪問dahuaxiyou.avi.torrent就能實現Web下載文件。但需要注意,提供用戶訪問的“種子”dahuaxiyou.avi.torrent應該跟原始文件存放在同一個目錄下,也就是http://www.mydomain.com/dahuaxiyou.avi.torrent所在目錄應該存有原始文件或到原始文件的鏈接,否則Downloader會自動拷貝一份源文件到“種子”所在目錄下。
為了簡化“種子”制作,筆者編寫了一個Perl腳本,以實現“種子”制作的自動化。腳本文件如下:
|
應用中可以根據實際情況修改該腳本,以符合服務器的目錄設置。
4.啟動多個“種子
作為管理員,目標可能是共享更多的文件給用戶下載,如果對于每個“種子”都要啟動一個Downloader,不但非常煩瑣,可能還會大大影響服務器效率。
為了解決這個問題,BitTorrent提供了另外兩個Downloader程序—btlaunchmany.py和btlaunchmanycurses.py。這兩個程序會定時檢查指定目錄,對其中的所有“種子”啟動Downloader,并根據目錄內容增加和刪除Downloader。btlaunchmanycurses.py是一個圖形控制臺界面,而btlaunchmany.py則更適合于后臺運行程序。
BT資源
互聯網上有很多BT“種子”收集網站,例如:
◆ 滿分BT http://www.manfen.net/forum/btsubsystem.php
◆ BT中國 http://bt86.com/
這些網站都只是“種子”管理平臺,用于為用戶提供基于Web的“種子”訪問。
互聯網上還有很多類似的開放源代碼工具,如BTAdmin。需要的用戶可以從lixiang.cn/lixiang/btadmin.tar.gz下載,并根據自己的需要對PHP代碼進行修改。
BTAdmin使用了MySQL數據庫,其中需要修改配置的地方包括兩個文件:include目錄下的secret.php,該文件是數據庫鏈接配置;include/bittorent.php文件,需要修改該文件中上載種子的存放目錄。
原文轉自:http://www.anti-gravitydesign.com