關於 BT及PT

2.BT下載原理 

BT全名爲BitTorrent,是一個文件分發的協議。 
使用BT下載資源的過程如下: 
擁有完整文件的用戶製作一個torrent文件(種子文件),並正常做種,在BT中,擁有完整檔案的用戶稱爲種子; 
(2)其他用戶下載torrent,客戶端解析 torrent 文件,獲取要下載的文件的詳細信息;    
(3)與 tracker服務器 建立連接,並交互消息;     
(4)根據從 tracker 得到的信息,跟其它 peers 建立連接,並下載需要的文件片斷 
(5)監聽某端口,等待其它peers 的連接,並提供文件片斷的上傳。 

更詳細的解釋: 
(1)torrent:A small file containing metadata from the files it is describing. In other contexts, it is sometimes used to refer to the swarm connected around that small file.  
    Torrent的announce記錄了發佈服務器的位置,讓BT知道是那個WEB服務器發佈的,然後是一些文件信息,文件名,目錄名,長度等等,最後是片段長度,和片段的 Sha1 校驗碼,(BT將文件分成若干個片段記錄文件信息),大家用記事本打看torrent文件看看就知道大概,後面的亂碼是片段 Sha1 校驗碼。種子的HASH能讓Tracker區分每個種子。 

(2)tracker:Something that a client connects to in order to share its IP and port, as well as obtain information, including peer lists.  
tracker 是指運行於服務器上的一個程序,這個程序能夠追蹤到底有多少人同時在下載同一個文件。客戶端連上tracker服務器,就會獲得一個下載人員的名單,根據這個,BT會自動連上別人的機器進行下載。它是提供bt的服務器。把文件用bt發佈出來的人需要知道該使用哪個服務器來爲要發佈的文件提供tracker。由於不指定服務器,BitTorrent採用BT文件來確定下載源。tracker服務器是BT下載中必須的角色。一個BTclient在下載開始以及下載進行的過程中,要不停的與tracker服務器進行通信,以報告自己的信息,並獲取其它下載client的信息。Tracker的通信過程是這樣的:client向tracker發一個HTTP的GET請求,並把它自己的信息放在GET的參數中;這個請求的大致意思是:我是xxx(一個唯一的id),我想下載yyy文件,我的ip是aaa,我用的端口是bbb。 

    tracker對所有下載者的信息進行維護,當它收到一個請求後,首先把對方的信息記錄下來 (如果已經記錄在案,那麼就檢查是否需要更新),然後將一部分(並非全部,根據設置的參數已經下載者的請求)參與下載同一個文件(一個tracker服務 器可能同時維護多個文件的下載)的下載者的信息返回給對方(這個過程是隨機的!)。Client在收到tracker的響應後,就能獲取其它下載者的信息,那麼它就可以根據這些信息,與其它下載者建立連接,從它們那裏下載文件片斷。 

(3)peer :A user/client connected to the swarm. People sometimes refer to peers as "leechers," though they also use the same word to refer to its more negative connotation. It's recommended that you use the word "leecher" to strictly refer to people who don't share so to keep the distinction clear and confusion to a minimum.  

(4)peer list :A list containing the IPs and ports of other peers.  
      upload :The act of transferring data from your computer onto another.  

(5)BT下載過程中片斷的選擇     
選擇一個好的順序來下載片斷,對提高性能非常重要。一個差的片斷選擇算法可能導致所有的片斷都處於下載中,或者另一種情況,沒有任何片斷被上傳給其它 peers。 

Ⅰ.嚴格的優先級     
    選擇的第一個策略是:一旦請求了某個片斷的子片斷,那麼該片斷剩下的子片斷優先被請求。這樣,可以儘可能快的獲得一個完整的片斷。 

Ⅱ.最少的優先     
    對一個下載者來說,在選擇下一個被下載的片斷時,通常選擇的是它的peers們所擁有的最少的那個片斷,也就是所謂的“最少優先”。這種技術,確保了每個下載者都擁有它的peers們最希望得到的那些片斷,從而一旦有需要,上傳就可以開始。這也確保了那些越普通的片斷越放在最後下載,從而減少了這樣一種可能性,即某個peer當前正提供上傳,而隨後卻沒有任何的被別人感興趣的片斷。

注: 也就是說,每個peer都優先選擇整個系統中最少的那些片斷去下載,而那些在系統中相對較多的片斷,放在後面下載,這樣,整個系統就趨向於一種更優的狀態。如果不用這種算法,大家都去下載最多的那些片斷,那麼這些片斷就會在系統中分佈的越來越多,而那些在系統中相對較少的片斷仍然很少,最後,某些peer就不再擁有其他peer感興趣的片斷了,那麼系統的參與者越來越少,整個系統的性能就下降。在BT系統中,充分考慮了經濟學的概念,處處從整個系統的性能出發,參與者越多,系統越優化。 

    信息理論顯示除非種子上傳了文件的所有片斷,否則沒有任何下載者可以完成所有文件的下載。如果在一個部署中,只有一個種子,而且種子的上傳能力比它的大多數下載者都要差,那麼,不同的下載者從種子那裏下載不同的片斷,性能就會變得比較好,因爲,重複的下載浪費了從種子獲取更多信息的機會。“最少優先”使得下載 者只從種子處下載新的片斷(也就是整個系統中其它peer都沒有的片斷),因爲,下載者能夠看到其它peers那裏已經有了種子已經上傳的片斷。 

在某些部署中,原始的種子由於某些原因最終關閉,只好由剩下的這些下載者們來負責上傳。這樣顯然會帶來一個風險:某些片斷任何一個下載者都不擁有。“最少優先”也很好的處理了這種情況。通過儘快的複製最少的片斷,減少了由於當前的peers停止上傳後帶來的風險。 

Ⅲ.隨機的第一個片斷     
    最少優先的一個例外是在下載剛開始的時候。此時,下載者沒有任何片斷可供上傳,所以,需要儘快的獲取一個完整的片斷。而最少的片斷,通常只有某一個peer擁有,所以,它可能比多個peers都擁有的那些片斷下載的要慢。因此,第一個片斷是隨機選擇的,直到第一個片斷下載完成,才切換到“最少優先” 的策略。 

Ⅳ.最後階段模式    
    有時候,從一個速率很慢的peer那裏請求一個片斷。在下載的中間階段,這不是什麼問題,但是卻可能潛在的延遲下載的完成。爲了防止這種情況,在最後階段,peer向它的所有的peers們都發送某片斷的子片斷的請求,一旦某些子片斷到了,那麼就 會向其它peer發送cancel 消息,取消對這些子片斷的請求,以避免帶寬的浪費。實際上,用這種方法並沒有浪費多少帶寬,而文件的結束部分也一直下載的非常快。 

(7)BT下載中與peers建立連接的原則——阻塞(choking)算法 

    BT 並不集中分配資源。每個peer自己有責任來儘可能的提高它的下載速率。Peers從它可以連接的peers處下載文件,並根據對方提供的下載速率給予同等的上傳回報(你敬我一尺,我敬你一丈)。對於合作者,提供上傳服務,對於不合作的,就阻塞對方。所以說,阻塞是一種臨時的拒絕上傳策略,雖然上傳停止了,但是下載仍然繼續。在阻塞停止的時候,連接並不需要重新建立。阻塞算法並不屬於BT對等協議(指peers 之間交互的協議)的技術部分,但是對提高性能是必要的。一個好的阻塞算法應該利用所有可用的資源,爲所有下載者提供一致可靠的下載速率,並適當懲罰那些只下載而不上傳的peers。 

    BitTorrent的阻塞算法從技術層面上說,BT的每個peer一直與固定數量的其它 peers 保持疏通(通常是4個),所以問題就變成了哪些peers應該保持疏通?這種方法使得TCP的擁塞控制性能能夠可靠的飽和上傳容量。(也就是說,儘量讓整個系統的上傳能力達到最大)。嚴格的根據當前的下載速率來決定哪些peers應該保持疏通。令人驚訝的是,計算當前下載速率是個大難題。當前的實現實質上是一個每隔20秒的輪詢。而原來的算法是對一個長時間的網絡傳輸進行總計,但這種方法很差勁,因爲由於資源可用或者不可用,帶寬會變化的很快。爲了避免因爲頻繁的阻塞和疏通 peers造成的資源浪費,BT每隔10秒計算一次哪個peer需要被阻塞,然後將這種狀態保持到下一個10秒。10秒已經足夠使得TCP來調整它的傳輸性能到最大。 

特殊措施: 
optimistic unchoking:如果只是簡單的爲提供最好的下載速率的peers們提供上傳,那麼就沒有辦法來發現那些空閒的連接是否比當前正使用的連接更好。爲了解決這個問題,在任何時候,每個peer都擁有一個稱爲“optimistic unchoking”的連接,這個連接總是保持疏通狀態,而不管它的下載速率是怎樣。每隔30秒,重新計算一次哪個連接應該是“optimistic unchoking”。30秒足以讓上傳能力達到最大,下載能力也相應的達到最大。這種和針鋒相對類似的思想非常的偉大。“optimistic unchoking”非常和諧地與“囚徒困境”合作。 

反對歧視: 
某些情況下,一個peer可能被它所有的peers都阻塞了, 這種情況下,它將會保持較低的下載速率直到通過“optimistic unchoking”找到更好peers。爲了減輕這種問題,如果一段時間過後,從某個peer那裏一個片斷也沒有得到,那麼這個peer認爲自己被對方 “怠慢”了,於是不再爲對方提供上傳,除非對方是“optimistic unchoking”。這種情況頻繁發生,會導致多於一個的併發的“optimistic unchoking”。 

僅僅上傳: 
一旦某個peer完成了下載,它不能再通過下載速率(因爲下載速率已經爲0了)來決定爲哪些 peers 提供上傳了。目前採用的解決辦法是,優先選擇那些從他這裏得到更好的上傳速率的peers。這樣的理由是可以儘可能的利用上載帶寬。 




3.PT簡介 

private tracker:A tracker that requires users to log in to use it. Private trackers typically enforce ratio requirements (by banning users whose ratios are too low) in order to prevent or minimize the leeching that is prevalent on many public trackers.  

    從前面的介紹可以得知通過BT進行下載必須要其他用戶提供上傳(做種),但下載完成的用戶提供上傳更多的是一種義務而不是責任。現實是好多人一下完便關閉了客戶端,使用完文件便刪除了它。爲了強制用戶上傳,PT應運而生。 

    PT是Private Tracker(私用種子服務器)的簡稱,可以統計用戶的上傳和下載量,計算用戶的分享率。你可以簡單將它理解爲BT的升級版,在擁有BT所有功能的同時,需要達到一定的分享率才能不被刪除帳號。 PT(Private Tracker)下載也是Bt下載的一種,但有兩個明顯的改進:一是私密的小範圍下載,二是進行流量統計,根據上傳量決定你的權限。    

    Private Tracker下載(PT下載)是一種小範圍的BT下載,通過禁用DHT有要求地選擇並控制用戶數量,這樣,在有限的範圍內,下載的用戶基本上都可以達到自己的帶寬上限,Private Tracker 下載(PT下載)下載還通過論壇等方式的約束機制將BT下載的理念現實化,真正讓用戶做到下載的過程中努力上傳。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章