引言:P2P即點對點傳輸之意,可以將不同的用戶聯系起來,通過網絡直接交換數據。在Linux中可以架設多種P2P服務器,本文介紹在Linux中使用BitTorren,快速搭建P2P服務器的方法。
P2P即點對點傳輸之意,可以將不同的用戶聯系起來,通過網絡直接交換數據。這樣就消除了中間環節,可以讓人們在網上更容易更直接地共享和交換數據。
P2P協議是對等式的網絡連接協議,利用該協議,客戶機無需通過服務器就可以彼此之間相互訪問,交互文件數據等操作。在Linux中,支持 BitTorrent、amule、Gnutella等P2P協議,其中的BitTorrent是網絡文件傳輸協議,能夠實現點對點文件共享技術。BitTorrent支持多點對多點等特征,即下載的用戶越多,下載的速度就越快。而一般的HTTP或者FTP等協議,下載的文件只是存放在少數服務器上,下載的用戶越多,服務器因帶寬過度消耗而降低下載速度。BitTorrent協議是讓HTTP或者FTP下載服務使用TCP/IP協議,BItTorrent是架構在TCP/IP協議之上的一個P2P文件傳輸協議,處于TCP/IP結構的應用層。
當下載文件時,客戶端的BitTorrnet程序對用戶選擇的“.torrent”文件進行解釋分析,從中得到Tracker信息,進而連接到目標Tracker服務器,該服務器對下載者的請求作出回應,并提供文件發布者和其他下載者的IP地址信息,使用者通過這些IP地址進行連接,用戶們之間根據“.torrent”文件分別提供給對方已有的區塊,然后交換沒有的數據。整個下載過程沒有服務器的參與,對單個網絡線路上數據流進行了分散處理,減輕了服務器的壓力。
要想利用P2P傳輸文件,用戶必須安裝BitTorrent客戶端軟件。上面提到的“.torrent”文件包含第一個下載資源發布者根據原文件制作出來的指紋信息,“.torrent”文件體積極小,其中主要包含下載文件所在BitTorrent端地址信息以及對象文件的校驗碼。當使用者獲得該“.torrent”文件后,運行BitTorrent客戶端程序打開該文件,就會據此文件中包含的信息,自動找到目標文件可用的下載源進行下載操作。
P2P文件傳輸中雖然不需要指定服務器,但是仍然離不開特定的服務器支持。BitTorrent服務器稱之為Tracker。Tracker其實是運行在服務器上的一個程序,該程序可以自動跟蹤參與某文件下載的所有用戶信息,BitTorrent客戶端只要連上Tracker服務器,就會獲得所有參與下載的用戶信息列表,并據此自動連接到網絡中的對應節點進行下載。對于使用者,無需了解Tracker服務器的任何信息。
在P2P傳輸服務中,將提供完整文件的用戶節點成為Seed(種子),正在下載的用戶成為客戶端,Seed數量越多,參與的客戶越多,文件下載的速度就越快。
amule是一個開源的P2P文件共享協議,支持多種操作系統,代碼完全公開。amule的每個用戶在下載的同時還上傳數據,即將自己已經下載的數據共享給其他用戶。amule客戶端可以從多個文件上傳者處得到所需的下載數據,之后將其拼接成完整的文件。amule一個特點是可以設定一個共享目錄,允許其他用戶訪問其中的共享文件。
Gnutella協議不僅支持點對點文件傳輸,而且支持傳統的客戶端/服務器檢索規則。在該協議中所有的客戶端也同時是一個服務器端,所有的服務器端同時也是一個客戶端。Gnutella可以執行聯系客戶端和服務器的任務,為其他用戶發出查詢請求并查看搜索結果,檢查自己的數據中匹配的部分并返回可用的結果。使用了該協議的網絡具有良好的容錯能力,當部分客戶機離線后,網絡服務不會中斷。
在Linux中可以架設多種P2P服務器,這里使用BitTorren為例進行說明,該軟件也可以在Windows平臺中運行。在RedHat、Fedora系統中,可以在命令行中執行“yum install bittorrent”命令,表示使用YUM方式安裝該軟件, YUM安裝方式可以根據預設的YUM源,來自動分析安裝某軟件所需的全部RPM包,之后根據不同RPM包之間的依賴關系,自動下載所有相關的RPM包,來完成所需軟件的安裝。
所謂YUM源,指的是存放所有RPM包以及相關分析文件的路徑,包括指定的本地目錄、FTP或者HTTP服務器等。
執行該命令后,系統執行載入插件,分析安裝參數語法,解決依賴性檢測等操作,當完畢后會在“確定是這樣嗎?”欄中輸入“y”,執行下載軟件包,運行事務處理等操作,當出現“恭喜您!成功完成!”字樣后,執行“yum installBittorrent-gui”命令,執行圖形界面的bittorrent安裝操作。可以看到系統的具體處理信息,在“確定是這樣嗎?”欄中輸入“y”,就完成了所需的安裝操作。
如果在Ubuntu,Debian等系統下,可以執行“aptget install bittorrent”命令,完成安裝操作。對于Gentoo系統來說,可以執行“emerge bittorrent”命令,執行軟件的下載與編譯操作,來完成所需的安裝動作。
當安裝完畢后,所有的BitTorrent命令和工具都保存在“/usr/bin”目錄中,配置文件為“etc/sysconfig/bittorrent”。前面談到BitTorrent雖然不需要服務器,不過依然需要Tracker服務器的參與。Tracker是BitTorrent的內核部分,BitTorrent客戶端程序會根據連接到Tracker服務器時獲得的參與者名單來自動連接網絡中的對應節點。因此,必須先啟動Tracker服務,執行“/etc/init.d/bttrack start”命令,完成BitTorrent Tracker的啟動操作。之 后,在別的主機上打開瀏覽器,訪 問“http://192.168.10.100:6969”,在打開的網頁中顯示“BitTorrent download info” 字樣,在其下的“tracker version”欄中顯示版本信息,在“server time”欄中顯示服務器信息,這說明Tracker服務啟動成功,這里的“192.168.10.100”表示服務器地址。
Tracker服務只提供下載的種子并不提供下載服務,即僅提供一個已經下載完成或者正在下載的客戶端,而種子文件必須有文件上傳者制作。在Linux中啟動BitTorrent File Transfer程 序, 這是圖形化的操作界面。在該程序窗口中點擊菜單“File→Make new torrent”項,在彈出窗口中點擊“choose”按鈕,選擇需要發布的文件,例如壓縮包,ISO文件等。選擇“Use tracker”項,在右側輸入Tracker信息,例 如“http://192.168.10.100:6969/xxx”點 擊“make”按鈕,在彈出窗口中點擊“start seeding”按鈕,就可以生成所需的種子“.torrent”文件了。其他用戶利用該種子文件,就可以利用不同的BitTorrent客戶端程序來下載預設的資源了。
P2P文件傳輸模式雖然具有一些獨特的優點,但是并非完美無缺。例如,P2P服務可以開啟多個端口同時傳輸數據,會消耗很大的帶寬,需要管理員指定合理的策略對其進行管理。