網(wǎng)絡(luò)技術(shù)的飛速發(fā)展與迅速普及使其成為數(shù)據(jù)通信的重要手段,網(wǎng)絡(luò)規(guī)模越來越大,連入網(wǎng)絡(luò)中的計(jì)算設(shè)備的數(shù)量和種類也越來越多,而這些資源并沒有得到充分利用,如果能將這些計(jì)算單元的處理器計(jì)算能力、磁盤存儲(chǔ)能力、網(wǎng)絡(luò)帶寬資源等進(jìn)行充分利用將會(huì)有效緩解目前互聯(lián)網(wǎng)所面臨的一些問題。另一方面,現(xiàn)在的互聯(lián)網(wǎng)是構(gòu)建在這樣的一個(gè)假說上的,即網(wǎng)絡(luò)用戶僅僅想從互聯(lián)網(wǎng)上下載東西,而不會(huì)上載信息。如今這種假設(shè)受到了愈來愈強(qiáng)烈的挑戰(zhàn),也促使了對(duì)等網(wǎng)絡(luò)技術(shù)蓬勃興起。
P2P(Peer to Peer 即對(duì)等網(wǎng)絡(luò))就是在這種背景下提出的一種網(wǎng)絡(luò)技術(shù),P2P可以簡(jiǎn)單地定義為通過直接交換信息,共享計(jì)算機(jī)資源和服務(wù),對(duì)等計(jì)算機(jī)兼有客戶機(jī)和服務(wù)器的功能。在這種網(wǎng)絡(luò)中所有的節(jié)點(diǎn)是對(duì)等的(稱為對(duì)等點(diǎn)),各節(jié)點(diǎn)具有相同的責(zé)任與能力并協(xié)同完成任務(wù),對(duì)等點(diǎn)之間通過直接互連實(shí)現(xiàn)信息資源、處理器資源、存儲(chǔ)資源甚至高速緩存資源等的全面共享,無需依賴集中式服務(wù)器支持,消除信息孤島和資源孤島。任何一臺(tái)能上網(wǎng)的機(jī)器都可以是一個(gè)對(duì)等點(diǎn),甚至計(jì)算機(jī)上的一個(gè)程序都可以成為對(duì)等點(diǎn)。P2P網(wǎng)絡(luò)是一種與傳統(tǒng)的C/S或多層服務(wù)器網(wǎng)絡(luò)完全不同的網(wǎng)絡(luò)體系結(jié)構(gòu),P2P網(wǎng)絡(luò)中的對(duì)等點(diǎn)是彼此直接通訊的。與目前互連網(wǎng)上比較流行的C/S 計(jì)算模型不同的是:P2P 計(jì)算模型中不再區(qū)別服務(wù)器以及客戶端,系統(tǒng)中的各個(gè)節(jié)點(diǎn)是邏輯對(duì)等的,系統(tǒng)中的各個(gè)節(jié)點(diǎn)之間可以直接進(jìn)行數(shù)據(jù)通信而不需要通過中間的服務(wù)器,可以認(rèn)為它的任何一端同時(shí)具有Client和Server 的功能。一些P2P應(yīng)用也許在某些時(shí)候使用服務(wù)器,但P2P計(jì)算的總體影響是將網(wǎng)絡(luò)計(jì)算分散,它使真正的分布式計(jì)算成為可能。
隨著寬帶網(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ò)帶寬??墒鼓阒苯舆B接其他用戶的計(jì)算機(jī),交換和搜索文件,而不用再通過網(wǎng)頁瀏覽與下載,最大限度地利用了網(wǎng)絡(luò)帶寬。它可使大家在互聯(lián)網(wǎng)上共享到平時(shí)用普通方式難以接觸到的各種各樣海量的資源。使用P2P軟件的每一臺(tái)PC 都是客戶機(jī)在下載資源,也是服務(wù)器在上傳文件,在索取的同時(shí)也給予。
BitTorrent是一個(gè)多點(diǎn)下載的開放源碼的P2P軟件,使用非常方便。是一個(gè)多點(diǎn)下載的共享文件軟件,由于在下載的同時(shí),也可為其他用戶提供上傳,所以不會(huì)隨著用戶人數(shù)的增加而降低下載速度,因此,下載的人越多,速度便越快?,F(xiàn)在不少大公司如RedHat,都有使用BT讓他們的客戶下載開發(fā)版本。
Linux下的P2P協(xié)議主要包括:BitTorrent、aMule、Gnutella等。本文以普遍使用的BitTorrent為例介紹使用P2P服務(wù)的方法。
BitTorrent使用Python語言編寫,是一個(gè)開放源代碼軟件,既可以在Windows下運(yùn)行,也可以在Linux環(huán)境下運(yùn)行,目前在Linux下的最新版本是6.1.2。
BitTorrent的官方網(wǎng)址:http://bitconjurer.org/BitTorrent/
安裝BitTorrent軟件
由于該軟件采用Python編寫,所以安裝BitTorrent前需要使用命令:
#rpm -qa|grep Python |
檢查是否配置了Python語言。否則需要到Python的官方網(wǎng)站http://www.python.org下載安裝,然后執(zhí)行如下命令對(duì)BitTorrent軟件進(jìn)行安裝:
#rpm -ivh BitTorrent-6.1.2.Python2.4.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(圖形化制作種子工具)。
配置和啟動(dòng)BitTorrent
BitTorrent的核心是Tracker,BitTorrent服務(wù)不需要服務(wù)器,但是BitTorrent服務(wù)中仍然有服務(wù)器的概念,這里稱作Tracker。準(zhǔn)確地說,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 8760 --dfile dstate > /dev/null 2>&1 & |
推薦使用普通用戶權(quán)限來啟動(dòng)這個(gè)服務(wù),這樣更加安全。這個(gè)命令會(huì)在當(dāng)前目錄生成一個(gè)dstate的文件,并打開8760端口。
制作種子(Seed)
BT服務(wù)器的track服務(wù)并不提供下載服務(wù),提供下載的是它的種子(seed),就是一個(gè)已經(jīng)下載完成或正在下載的客戶端。因?yàn)橐婚_始沒有這樣的種子,所以你得先自己生成一個(gè),如果要為/home/cjh.avi制作種子,相關(guān)命令是:
# ./btdownloadheadless.py --max_allow_in 200 --max_upload_rate 100 --minport 8888 --maxport 8888 /home/mp3.vio.torrent http://www.bittorrent.com:8760/annouce |
相關(guān)參數(shù)說明如下:
設(shè)置Apache服務(wù)器
配置Web服務(wù)器讓種子(.torrent)文件和application/x-bittorrent相關(guān)聯(lián)。不久Apache配置文件:/etc/httpd.conf,加入一行:
AddType application/x-bittorrent .torrent |
然后,我們需要重新啟動(dòng)Web服務(wù)器,并且打開防火墻6888端口:
將制作的種子放到Web服務(wù)器的文檔目錄中,讓用戶可以訪問,啟動(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地址,這樣用戶通過瀏覽器訪問 cjh.avi.torrent即可實(shí)現(xiàn)Web下載。
聯(lián)系客服