1. 程式人生 > >P2P(對等網路)、 PT 下載與 BT 下載

P2P(對等網路)、 PT 下載與 BT 下載

0. P2P 對等網路

我的理解是對等網路中的主機之間不存在誰為伺服器,誰為客戶端的問題。彼此在網路在網路中的地位是相同的,也即互為伺服器和客戶機。

對等網路,即對等計算機網路,是一種在對等者(Peer)之間分配任務和工作負載的分散式應用架構,是對等計算模型在應用層形成的一種組網或網路形式。“Peer”在英語裡有“對等者、夥伴、對端”的意義。因此,從字面上,P2P 可以理解為對等計算或對等網路。國內一些媒體將P2P翻譯成“點對點”或者“端對端”,學術界則統一稱為對等網路(Peer-to-peer networking)或對等計算(Peer-to-peer computing),其可以定義為:網路的參與者共享他們所擁有的一部分硬體資源(處理能力、儲存能力、網路連線能力、印表機

等),這些共享資源通過網路提供服務和內容,能被其它對等節點(Peer)直接訪問而無需經過中間實體。在此網路中的參與者既是資源、服務和內容的提供者(Server),又是資源、服務和內容的獲取者(Client)。



在 P2P 網路環境中,彼此連線的多臺計算機之間都處於對等的地位,各臺計算機有相同的功能,無主從之分,一臺計算機既可作為伺服器,設定共享資源供網路中其他計算機所使用,又可以作為工作站,整個網路一般來說不依賴專用的集中伺服器,也沒有專用的工作站。網路中的每一臺計算機既能充當網路服務的請求者,又對其它計算機的請求做出響應,提供資源、服務和內容。通常這些資源和服務包括:資訊的共享和交換、計算資源(如 CPU 計算能力共享)、儲存共享(如快取和磁碟空間的使用)、網路共享、印表機共享等。

匯流排型對等網路示意圖:



1. BT 下載

無論是 BT 還是 PT,還是 FTP,都是一種下載方式,或者學術點的講法,叫檔案傳輸。

BT 是一種網際網路上新興的 P2P 傳輸協議(即 BT 是一種特殊的 P2P),BT 下載通過一個 P2P 下載軟體(點對點下載軟體)來實現,克服了傳統下載方式的侷限性,具有下載的人越多,檔案下載速度就越快的特點。其好處是不需要資源釋出者擁有高效能伺服器就能迅速有效地把釋出的資源傳向其他的 BT 客戶軟體使用者,而且大多數的 BT 軟體都是免費的。

1.1 傳統方式

在傳統下載方式中,一般是把檔案由伺服器端傳送到客戶端,例如 FTP,HTTP,PUB 等等。由於是從一臺伺服器下載,伺服器所提供的頻寬是一定的,因而下載人越多速度越慢。

但是這樣就出現了一個問題,隨著使用者的增多,對頻寬的要求也隨之增多,使用者過多就會造成瓶頸,而且搞不好還會把伺服器掛掉,所以很多的伺服器會都有使用者人數的限制,下載速度的限制,這樣就給使用者造成了諸多的不便


這裡寫圖片描述

1.2 BT 方式

與傳統下載不同,用 BT 下載反而是使用者越多,下載越快,這是因為 BT 用的是一種傳銷的方式來達到共享的。


這裡寫圖片描述

BT 首先在上傳端把一個檔案分成了 Z 個部分,甲在伺服器隨機下載了第 N 個部分,乙在伺服器隨機下載了第 M 個部分,這樣甲的 BT 就會根據情況到乙的電腦上去下載乙已經下載好的 M 部分,乙的 BT 就會根據情況到甲的電腦上去下載甲已經下載好的 N 部分,這樣就不但減輕了伺服器端的負荷,也加快了使用者方(甲乙)的下載速度,效率也提高了,更同樣減少了地域之間的限制。比如說丙要連到伺服器去下載的話可能才幾K,但是要是到甲和乙的電腦上去下載就快得多了。所以說用的人越多,下載的人越多,大家也就越快,BT 的優越性就在這裡。而且,在你下載的同時,你也在上傳(別人從你的電腦上下載那個檔案的某個部分),所以說在享受別人提供的下載的同時,你也在貢獻。

與 BT 下載相比,普通下載原理圖普通的 HTTP/FTP 下載使用 TCP/IP 協議,BitTorrent 協議是架構於 TCP/IP 協議之上的一個 P2P檔案傳輸協議,處於 TCP/IP 結構的應用層。BitTorrent 協議本身也包含了很多具體的內容協議和擴充套件協議,並在不斷擴充中。根據 BitTorrent 協議,檔案釋出者釋出的檔案生成提供一個 .torrent 檔案,即種子檔案,簡稱為“種子”。

torrent 檔案本質上是文字檔案,包含:

  • Tracker 資訊, BT 下載中需要用到的 Tracker 伺服器的地址和針對Tracker 伺服器的設定
  • 檔案資訊兩部分。

檔案資訊是根據對目標檔案的計算生成的,計算結果根據 BitTorrent 協議內的 B 編碼規則進行編碼。它的主要原理是需要把提供下載的檔案虛擬分成大小相等的塊,塊大小必須為2k的整數次方(由於是虛擬分塊,硬碟上並不產生各個塊檔案),並把每個塊的索引資訊和 Hash 驗證碼寫入.torrent檔案中;所以,.torrent檔案就是被下載檔案的“索引”。下載者要下載檔案內容,需要先得到相應的.torrent檔案,然後使用 BT 客戶端軟體進行下載。

BT 客戶軟軟體:

  • uTorrent(Windows):現在uTorrent由BitTorrent公司所有(不要和BT協議混淆)。
  • Deluge(所有平臺):跨平臺 uTorrent
  • Transmission(Mac OS X/*nix)

下載時,BT客戶端首先解析.torrent檔案得到Tracker地址,然後連線Tracker伺服器。Tracker伺服器迴應下載者的請求,提供給下載者其他下載者(包括髮布者)的 IP。下載者再連線其他下載者,根據 .torrent 檔案,兩者分別告知對方自己已經有的塊,然後交換彼此的資料。此時不需要其他伺服器參與,分散了單個線路上的資料流量,因此減輕了伺服器負擔。

下載者每得到一個塊,需要算出下載塊的 Hash 驗證碼與 .torrent 檔案中的對比,如果一樣則說明塊正確,不一樣則需要重新下載這個塊。這種規定是為了解決下載內容準確性的問題。

而有些人下載完成後關掉下載任務,提供較少量資料給其他使用者,為儘量避免這種行為,在非官方BitTorrent協議中存在超級種子的演算法。這種演算法允許檔案釋出者分幾步釋出檔案,釋出者不需要一次提供檔案所有內容,而是慢慢開放的下載內容的比例,延長下載時間。此時,速度快的人由於未下載完必須提供給他人資料,速度慢的人有更多機會得到資料。由此往往造成使用者卡在任務的99%,下載1G的任務要上傳3G之多。

2. PT 下載

PT(Private Tracker)下載其實是原理類似 BT(BitTorrent,位元流) 下載的一種,但有兩個明顯的改進:

  • 一是私密的小範圍下載;
  • 二是進行流量統計,根據下載量決定你的許可權。