監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價(jià)咨詢管理系統(tǒng) | 工程設(shè)計(jì)管理系統(tǒng) | 簽約案例 | 購(gòu)買(mǎi)價(jià)格 | 在線試用 | 手機(jī)APP | 產(chǎn)品資料
X 關(guān)閉

構(gòu)建P2P下載服務(wù)

申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114

文章來(lái)源:泛普軟件

Linux下的P2P協(xié)議主要包括:BitTorrent、aMule、Gnutella等。本文在Redhat Enterprise Linux Advanced Server 4環(huán)境下,介紹構(gòu)建P2P服務(wù)的方法。

隨著寬帶網(wǎng)的盛行,傳統(tǒng)的HTTP 和FTP這種一點(diǎn)對(duì)多點(diǎn)的下載方式已經(jīng)滿足不了大家的需求了。它會(huì)隨著下載人數(shù)增加而出現(xiàn)連接不上和速度驟減的現(xiàn)象。而P2P 技術(shù)則打破常規(guī)格式,極大地節(jié)省了網(wǎng)絡(luò)帶寬。可使你直接連接其他用戶的計(jì)算機(jī),交換和搜索文件,而不用再通過(guò)網(wǎng)頁(yè)瀏覽與下載,最大限度地利用了網(wǎng)絡(luò)帶寬。它可使大家在互聯(lián)網(wǎng)上共享到平時(shí)用普通方式難以接觸到的各種各樣海量的資源。使用P2P軟件的每一臺(tái)PC 都是客戶機(jī)在下載資源,也是服務(wù)器在上傳文件,在索取的同時(shí)也給予。

BitTorrent是一個(gè)多點(diǎn)下載的開(kāi)放源碼的P2P軟件,使用非常方便。是一個(gè)多點(diǎn)下載的共享文件軟件,由于在下載的同時(shí),也可為其他用戶提供上傳,所以不會(huì)隨著用戶人數(shù)的增加而降低下載速度,因此,下載的人越多,速度便越快?,F(xiàn)在不少大公司如RedHat,都有使用 BT 讓他們的客戶下載開(kāi)發(fā)版本。

架設(shè)BitTorrent服務(wù)器

BitTorrent使用Python語(yǔ)言編寫(xiě),是一個(gè)開(kāi)放源代碼軟件,既可以在Windwos下運(yùn)行,也可以在Linux環(huán)境下運(yùn)行。BitTorrent的官方網(wǎng)址是:http://bitconjurer.org/BitTorrent/ 。最新版本是:4.0.2-1。安裝BitTorrent前使用命令:“rpm -qa|grep Python”檢查是否配置了Python語(yǔ)言。否則需要到其官方網(wǎng)站http://www.python.org 下載安裝。

1. 下載安裝軟件

#wget http://www.bittorrent.com/dl/BitTorrent-4.0.2-1.noarch.rpm

#rpm -ivh BitTorrent-4.0.2-1.noarch.rpm

安裝完成后所有BitTorrent命令和工具都安裝在/usr/bin目錄下。包括:btmaketorrent.py(制作種子工具)、bttest.py(測(cè)試種子工具)、bttrack.py(制作Tracker工具)、btdownloadheadless.py(制作共享源工具)、btlaunchmany.py(后臺(tái)啟動(dòng)共享源工具)、btshowmetainfo.py(查看下載情況工具)、btdownloadgui.py(圖形化制作共享源工具)、btmaketorrent.py(圖形化制作種子工具)。

2.配置、啟動(dòng)BitTorrent

BitTorrent的核心是Tracker,BitTorrent服務(wù)不需要服務(wù)器,但是BitTorrent服務(wù)中仍然有服務(wù)器的概念,這里稱作Tracker。準(zhǔn)確地說(shuō),Tracker是指運(yùn)行的服務(wù)器上的一個(gè)程序,這個(gè)程序可以跟蹤多少人同時(shí)在下載同一個(gè)文件。BT客戶端連接到Tracker時(shí)會(huì)產(chǎn)生一個(gè)下載人員名單,根據(jù)這個(gè)名單,BT客戶端會(huì)自動(dòng)連接網(wǎng)絡(luò)中其他節(jié)點(diǎn)進(jìn)行下載。所以第一步要啟動(dòng)一個(gè)Tracker:

#./bttrack.py --port 6969 --dfile dstate > /dev/null 2>&1 &

推薦使用普通用戶權(quán)限來(lái)啟動(dòng)這個(gè)服務(wù),這樣更加安全。這個(gè)命令會(huì)在當(dāng)前目錄生成一個(gè)dstate的文件,并打開(kāi)6969端口 。

3.制作種子(Seed)

BT服務(wù)器的track服務(wù)并不提供下載服務(wù),提供下載的是它的種子(seed),就是一個(gè)已經(jīng)下載完成或正在下載的客戶端。因?yàn)橐婚_(kāi)始沒(méi)有這樣的種子,所以你得先自己生成一個(gè),如果要為/home/cjh.avi制作種子,相關(guān)命令是:

# ./btdownloadheadless.py --max_allow_in 30 --max_upload_rate 1000 --minport 6888 --maxport 6888 /home/cjh.avi.torrent http://www.mydomain.com:6969/annouce

參數(shù)說(shuō)明:

--max_allow 30:指這個(gè)種子最多可以接受30個(gè)連接。

--max_upload_rate 1000:指這個(gè)種子最大的可以接受下載的帶寬 1000 KB(byte)/s,這樣可以控制下載帶寬。

--minport 6888 --maxport 6888:設(shè)置最大最小監(jiān)聽(tīng)端口號(hào)碼,這樣寫(xiě)就是說(shuō)種子只監(jiān)聽(tīng)6888端口,這樣方便在防火墻上開(kāi)端口。

cjh.avi.torrent:是制作的種子文件名稱。

4.設(shè)置Apache服務(wù)器

配置Web服務(wù)器讓種子(.torrent)文件和application/x-bittorrent相關(guān)聯(lián)。不久Apache配置文件:/etc/httpd.conf,加入一行:

AddType application/x-bittorrent .torrent

5.重新啟動(dòng)Web服務(wù)器,并且打開(kāi)防火墻6888端口

將制作的種子放到Web服務(wù)器的文檔目錄中,讓用戶可以訪問(wèn),啟動(dòng)一個(gè)最原始的共享源。

#iptables -A INPUT -i eth0 -p --dport 6888 -j ACCEPT

#iptables -A OUTPUT -i eth0 -p --dport 6888 -j ACCEPT

#./btdownloadheadless.py http://www.mydomain.com/cjh.avi.torrent

其中http://www.mydomain.com/cjh.avi.torrent是種子的URL地址,這樣用戶通過(guò)瀏覽器訪問(wèn)cjh.avi.torrent即可實(shí)現(xiàn)Web下載。由于筆者是Linux系統(tǒng)管理員,所以習(xí)慣使用命令行工作,讀者也可以使用圖形化的前端工具,如圖1所示。


圖1 BitTorrent的圖形化前端工具

到此為止,我們建立了一個(gè)BitTorrent服務(wù)器,如果要下載別人的BT資源,還要安裝一個(gè)客戶端。

客戶端安裝Azureus 下載軟件

1.下載一個(gè)Bit Torrent客戶端軟件:Azureus ,官方網(wǎng)址為:http://azureus.sourceforge.net/。

#wget http://ftp10.enet.com.cn/pub/linux/network/transfer/Azureus_2.2.0.2_linux.GTK.tar.bz2

2. 安裝Java虛擬機(jī)

由于Azureus是使用Java語(yǔ)言編寫(xiě)的,所以運(yùn)行它需要Java虛擬機(jī)。下載最新的JDK(Java Development Kit)開(kāi)發(fā)包:j2sdk-1_4_2-linux-i586.bin,這是一個(gè)J2SE V1.4.2 SDK Linux自解壓的二進(jìn)制的文件。

3.安裝Bit Torrent客戶端軟件Azureus

這是一個(gè)綠色軟件只要解壓即可運(yùn)行不必編譯,操作如下:

#bunzip2 Azureus_2.2.0.2_linux.GTK.tar.bz2

#tar vxf Azureus_2.2.0.2_linux.GTK.tar

4.運(yùn)行軟件

#cd azureus

#./azureus

5.配置軟件

第一次運(yùn)行azureus時(shí)要進(jìn)行簡(jiǎn)單的配置:

● 配置接入互聯(lián)網(wǎng)的方式

根據(jù)你的具體情況設(shè)置鏈接互聯(lián)網(wǎng)方式(ADSL、Modem等),最大上傳速度、最大下載文件、每個(gè)Torrent最大上傳速度。然后用鼠標(biāo)按“Next”按鈕進(jìn)行服務(wù)器端口配置。

● 配置NAT/Server 的端口

使用NAT(Network Address Translation)的好處是:連接Internet,但不讓網(wǎng)絡(luò)內(nèi)的所有計(jì)算機(jī)都擁有一個(gè)真正的Internet IP地址。通過(guò)NAT功能,可以將申請(qǐng)的合法的Internet IP地址統(tǒng)一管理,當(dāng)內(nèi)部的計(jì)算機(jī)需要上Internet時(shí),動(dòng)態(tài)或靜態(tài)地將假的IP轉(zhuǎn)換為合法的IP地址。另外,如果不想讓外部網(wǎng)絡(luò)用戶知道網(wǎng)絡(luò)的內(nèi)部結(jié)構(gòu),可以通過(guò)NAT將內(nèi)部網(wǎng)絡(luò)與外部Internet隔離開(kāi)。這里強(qiáng)烈建議把NAT/Server 的端口設(shè)為:最低6881、最高6889。如果讀者對(duì)計(jì)算機(jī)網(wǎng)絡(luò)比較熟悉的話,也可以用鼠標(biāo)點(diǎn)擊“Test”按鈕測(cè)試一下,選擇別的端口。注意千萬(wàn)不要和某些系統(tǒng)已經(jīng)使用的端口沖突。然后用鼠標(biāo)點(diǎn)“Next”按鈕進(jìn)行下載的文件存放目錄的配置。

6.使用軟件下載

配置結(jié)束后就可以使用它下載,點(diǎn)擊“File”主菜單的“Creat a Torrent”然后輸入要下載的Torrent文件的鏈接即可開(kāi)始工作。

7. BT下載實(shí)例

圖2是筆者下載Fedore Core 3 時(shí)的工作界面。從圖2 中可以看到Azureus下載Fedore Core 3 的IOS文件的截圖。圖中顯示出文件名和下載速度以及完成百分比。基于 Java語(yǔ)言 的 Azureus是一款跨平臺(tái)的 BT 客戶機(jī)程序,具備 27 種語(yǔ)言供選擇,用戶可在單一的 GUI 窗口同時(shí)管理多個(gè)下載、檢視詳細(xì)的實(shí)時(shí)下載統(tǒng)計(jì)、設(shè)定進(jìn)階下載管理規(guī)則、設(shè)置和建立 torrent 等。新版加入了下載速度的限制、共享聯(lián)機(jī)限制及更多資料分欄等。在使用Azureus下載軟件的時(shí)候如果斷線了,可以重新點(diǎn)擊下載鏈接,并且在選擇存放位置的時(shí)候覆蓋上次下載一半的文件,這時(shí)程序會(huì)自動(dòng)的續(xù)傳該文件。


圖2 用Azureus下載Fedore Core 3

使用aMule軟件

aMule是一種支持ED2K網(wǎng)絡(luò)的P2P軟件,它基于wxWindows并且類似于eMule。是在遵循E-Donkey的網(wǎng)絡(luò)協(xié)議基礎(chǔ)上發(fā)展而來(lái),它相當(dāng)于e-Donkey(驢子)的一個(gè)Mod,而且源代碼是完全公開(kāi)的。而且aMule比e-Donkey配置更為簡(jiǎn)單,界面、圖標(biāo)和按鈕更美觀,突出了其立體和半透明的感覺(jué)。現(xiàn)在大家?guī)缀醵嫁D(zhuǎn)向用e-Mule。aMule軟件可以算是Linux 網(wǎng)絡(luò)環(huán)境下的e-Mule。

aMule的每個(gè)用戶端都既是文件下載者又是上傳者,既索取又給予。在你正在下載但還沒(méi)下載完整文件時(shí),你已經(jīng)把已下載的部分共享給別人了。aMule是同時(shí)從很多文件上傳者(稱之為“源”,跟BT 的種子差不多)那里下載所需的文件最后再拼成整個(gè)文件的,而且aMule對(duì)沒(méi)在下載隊(duì)列中的文件共享很方便,不用像BT 那樣要很麻煩地制作種子,再上傳到服務(wù)器,只需指定一個(gè)共享目錄,aMule會(huì)自動(dòng)將其共享。這個(gè)共享目錄在一運(yùn)行aMule就開(kāi)始強(qiáng)制共享,即使在下載欄未下載任何文件。這點(diǎn)比BT做得好,可以防止大家好逸惡勞,只下載不上傳。而B(niǎo)T 在運(yùn)行時(shí)只上傳自己正在下載或已下載完畢的東西,不能共享目錄,甚至有人把BT的下載設(shè)置為無(wú)限制,而把上傳調(diào)至幾KB/s 甚至0KB/S。而在使用aMule中如果你把上傳速度設(shè)為一個(gè)小于10 的值,aMule也會(huì)自動(dòng)限制你的下載速度。

aMule安裝相當(dāng)困難,是筆者使Linux以來(lái)最難對(duì)付的一個(gè)工具軟件。它對(duì)一些鏈接庫(kù)文件的依賴性特別強(qiáng),另外它還需要GTK的支持。所以這里對(duì)于軟件安裝寫(xiě)得詳細(xì)一些。軟件下載安裝詳細(xì)步驟如下:

#cd /usr/local

#wget http://jaist.dl.sourceforge.net/sourceforge/wxwindows/wxGTK-2.6.1.tar.gz

#wget http://jaist.dl.sourceforge.net/sourceforge/wxwindows/wxBase-2.6.1.tar.gz

#wget http://jaist.dl.sourceforge.net/sourceforge/amule/aMule-2.1.0.tar.bz2

注意安裝順序:先裝wxBase再裝 wxGTK,最后裝 aMule,安裝wxBase后要執(zhí)行一下 ldconfig命令,wxGTK 編譯參數(shù)為./configure --with-gtk。

#cd wxBase-2.6.1;./configure;make;make install; /sbin/ldconfig;cd ..

#cd wxGTK-2.6.1;./configure --with-gtk;make;make install;make clean;cd ..

#cd aMule-2.1.0;./configure;make;make install

現(xiàn)在 aMule 已經(jīng)是 GTK 2 界面了,很漂亮,中文支持也很好。安裝之后,設(shè)置昵稱為 [CHN][VeryCD]xxxx,然后服務(wù)器設(shè)置為:名稱DonkeyServer NO1,地址62.241.53.2:4242。另外還有其他的服務(wù)器,例如華語(yǔ)psp源動(dòng)力,地址61.152.93.254:4661;還有Razorback 2,地址為195.245.244.243:4661。服務(wù)器設(shè)置界面見(jiàn)圖3。 aMule使用方法和eMule幾乎一樣,很快可以上手。


圖3 aMule服務(wù)器設(shè)置界面

如果aMule的下載速度太慢,比如只有2KB/s~3KB/s,那一定是沒(méi)有端口映射。只需映射4662 TCP 和4672 UDP 兩個(gè)端口即可。不需要像使用BT 那樣映射一堆端口。如果打開(kāi)了4771 TCP 端口就可遠(yuǎn)程控制,如果你不在家,朋友的機(jī)器上安裝有aMule,也可以在朋友機(jī)器上遠(yuǎn)程控制你的aMule。aMule下載跟Azureus 不一樣,要多添加些文件下載。如果系統(tǒng)裝有Linux防火墻,需要在防火墻中打開(kāi)以上相應(yīng)的TCP、UDP端口。

Gtk-Gnutella

Gtk-Gnutella是Linux類(Linux、BSD)系統(tǒng)下 Gnutella 的服務(wù)端/客戶端實(shí)現(xiàn),該軟件依賴于 GTK+ (1.2版以上 ) 、 libxml,但Gnome不是必須的。目前,Gtk-Gnutella主要在Linux(Debian 3.1)下進(jìn)行開(kāi)發(fā)與測(cè)試,至少支持如下操作系統(tǒng):Linux、 FreeBSD、 NetBSD、OpenBSD、 Darwin、 Solaris、Tru64 UNIX (OSF/1)、 SGI IRIX、BeOS等,支持的CPU構(gòu)架包括:x86、AMD64、PowerPC、SPARC、MIPS等。Gnutella按照GNU通用公共許可證(GPL)進(jìn)行發(fā)布。 Gtk-Gnutella尚未完工,但已經(jīng)具有完整的功能,通過(guò)Gtk-Gnutella,可以分享、搜索、下載各種文件,Gtk-Gnutella的穩(wěn)定性也很好,可以自覺(jué)地一天接一天地工作下去。

Gtk-Gnutella的開(kāi)發(fā)者認(rèn)為他們的技術(shù)是優(yōu)于ED2K的。因?yàn)樗_(kāi)源,而且因?yàn)樗鼪](méi)有一個(gè)中心服務(wù)器,是完全用戶之間互聯(lián)的一個(gè)網(wǎng)絡(luò),從而保證用戶不會(huì)被中心服務(wù)器監(jiān)視??梢哉f(shuō),只要有人還在用這個(gè)軟件,這個(gè)網(wǎng)絡(luò)就不可能消失。雖然最近由于BT等的興起,其用戶數(shù)下降比較厲害,但是仍舊可以搜索到大量的資源,速度也很好,搜索網(wǎng)絡(luò)資源對(duì)帶寬的需求也比ED2k小。簡(jiǎn)單地說(shuō),Gtk-Gnutella的用戶們互相連成一個(gè)網(wǎng)絡(luò),你的搜索將發(fā)給其他Gtk-Gnutella用戶,他們?cè)賯鞒鋈?,形成巨大的搜索網(wǎng)絡(luò)??雌饋?lái)這樣非常消耗網(wǎng)絡(luò)資源,但是Gtk-Gnutella引入了Ultrapeer和Leaf的概念。如果帶寬比較小,搜索請(qǐng)求就會(huì)主要傳給帶寬富裕的Ultrapeer,他們會(huì)幫你繼續(xù)和其他節(jié)點(diǎn)聯(lián)系搜索事宜,搜索到再告訴你。Gtk-Gnutella是一個(gè)兼容性不錯(cuò)的客戶端,只需要gtk+或者gtk2,而不需要gnome桌面環(huán)境。下載安裝方法如下:

#cd /usr/local

#wget http://jaist.dl.sourceforge.net/sourceforge/gtk-gnutella/gtk-gnutella-0.96b.tar.bz2

#bunzip2 gtk-gnutella-0.96b.tar.bz2

#tar vxf gtk-gnutella-0.96b.tar;cd gtk-gnutella-0.96b;./Configure;make;make install

執(zhí)行上述操作后系統(tǒng)會(huì)給出一個(gè)安裝向?qū)?,安裝指示即可完成安裝。Gtk-Gnutella安全性能也比較好,它不能工作在root權(quán)限下,必須在普通用戶的工作環(huán)境下使用。筆者非常欣賞這種方式,工作界面見(jiàn)圖4。


圖4 Gtk-Gnutella工作界面

Gnutella還有一些客戶端可以用,比如LimeWire(http://www.limewire.com/ )。它界面漂亮,人性化,可以換皮膚。但是免費(fèi)的basic版本速度太慢。 (ccw)

發(fā)布:2007-04-22 10:00    編輯:泛普軟件 · xiaona    [打印此頁(yè)]    [關(guān)閉]
相關(guān)文章:
南昌OA系統(tǒng)
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費(fèi)獲取試用系統(tǒng)

QQ在線咨詢

泛普南昌OA信息化其他應(yīng)用

南昌OA軟件 南昌OA新聞動(dòng)態(tài) 南昌OA信息化 南昌OA快博 南昌OA行業(yè)資訊 南昌軟件開(kāi)發(fā)公司 南昌門(mén)禁系統(tǒng) 南昌物業(yè)管理軟件 南昌倉(cāng)庫(kù)管理軟件 南昌餐飲管理軟件 南昌網(wǎng)站建設(shè)公司