BitTorrent協議與MagNet協議原理


BitTorrent協議


1、簡介


       BitTorrent(簡稱BT)是一個文件分發協議,每個下載者在下載的同時不斷向其他下載者上傳已下載的數據。而在FTP,HTTP協議中,每個下載者在下載自己所需文件的同時,各個下載者之間沒有交互。當非常多的用戶同時訪問和下載服務器上的文件時,由於FTP服務器處理能力和帶寬的限制,下載速度會急劇下降,有的用戶可能訪問不了服務器。BT協議與FTP協議不同,特點是下載的人越多,下載速度越快,原因在於每個下載者將已下載的數據提供給其他下載者下載,充分利用了用戶的上載帶寬。通過一定的策略保證上傳速度越快,下載速度也越快。在很短時間內,BitTorrent協議成為一種新的變革技術。


2、技術依賴


       BitTorrent 的發展依賴於peer-to-peer技術。對等網絡 (Peer - to - Peer 簡稱 P2P) 的研究一直是國外知名學府和知名企業以及研發機構最關注的重點。P2P是近年來互聯網最熱門的技術,在VoIP、下載、流媒體、協調技術等領域得到飛速發展,被財富雜志評為影響互聯網的四大科技之一,甚至被認為是代表無線寬帶互聯網未來的關鍵技術。
       P2P技術體現了互聯網最根本的內涵——自由和免費,它的主要優點如下:
對等性高:非中心化,互聯網回歸本色——聯系和傳輸;
擴展性強:用戶擴展與資源、服務、系統同步擴展;
健壯性高:服務分散和自適應,耐攻擊、高容錯性;
性價比高:P2P成本低、存儲和技術能力強;
負載均衡:分布存儲和技術,整個網絡負載得以均衡。
       在P2P網絡中,每個參與的節點既是服務器又是客戶端,既是信息的提供者又是信息的消費者。P2P信息檢索的目的就是網絡中的任意節點都可以提交檢索的請求,然后這些檢索通過相關信息的節點將會回應請求,按照某種路由機制路由到本地相關的內容,以對等的形式直接傳送到請求節點上。
       檢索過程分為以下幾個階段:每個節點在加入網絡的時候,會對存儲在本節點上的內容進行索引,以滿足本地內容檢索的目的。然后按某種預定的規則選擇一些節點作為自己的鄰居,加入到P2P網絡當中。發起者P提出檢索請求q,並將q發送給自己的鄰居,P的鄰居收到q后,再按照某種策略轉發給它在網絡中的其它鄰居節點。這樣,q就在整個網絡中傳播開來。收到請求q的節點如果存儲有相應內容信息 , 則將對應的內容返回。
       如何在一個大規模分布的環境下定位資源是個十分具有挑戰性的問題。集中體現在如何組建P2P網絡,如何選擇有效的資源請求路由策略以便以較少的消息通信開銷,獲得較多的相關查詢結果返回,同時能夠保證較好的服務均衡性。


3、原理簡述


       普通的HTTP/FTP下載使用TCP/IP協議,BitTorrent協議是架構於TCP/IP協議之上的一個P2P文件傳輸協議,處於TCP/IP結構的應用層。 BitTorrent協議本身也包含了很多具體的內容協議和擴展協議,並在不斷擴充中。
       根據BitTorrent協議,文件發布者會根據要發布的文件生成提供一個.torrent文件,即種子文件,也簡稱為“種子”。
      .torrent文件本質上是文本文件,包含Tracker信息和文件信息兩部分。Tracker信息主要是BT下載中需要用到的Tracker服務器的地址和針對Tracker服務器的設置,文件信息是根據對目標文件的計算生成的,計算結果根據BitTorrent協議內的B編碼規則進行編碼。它的主要原理是需要把提供下載的文件虛擬分成大小相等的塊,塊大小必須為2k的整數次方(由於是虛擬分塊,硬盤上並不產生各個塊文件),並把每個塊的索引信息和Hash驗證碼寫入種子文件(.torrent)中。所以,種子文件(.torrent)就是被下載文件的“索引”。


4、下載過程


      下載者要下載文件內容,需要先得到相應的.torrent文件,然后使用BT客戶端軟件進行下載。
      下載時,BT客戶端首先解析.torrent文件得到Tracker地址,然后連接Tracker服務器。Tracker服務器回應下載者的請求,提供下載者其他下載者(包括發布者)的IP。下載者再連接其他下載者,根據.torrent文件,兩者分別對方告知自己已經有的塊,然后交換對方沒有的數據。此時不需要其他服務器參與,分散了單個線路上的數據流量,因此減輕了服務器負擔。
      下載者每得到一個塊,需要算出下載塊的Hash驗證碼與.torrent文件中的對比,如果一樣則說明塊正確,不一樣則需要重新下載這個塊。這種規定是為了解決下載內容准確性的問題。

相關概念Tracker:

收集下載者信息的服務器,並將此信息提供給其他下載者,使下載者們相互連接起來,傳輸數據。種子:指一個下載任務中所有文件都被某下載者完整的下載,此時下載者成為一個種子。發布者本身發布的文件就是原始種子。也指.torrent文件。做種:發布者提供下載任務的全部內容的行為;下載者下載完成后繼續提供給他人下載的行為。

 

MagNet協議


1、簡介


       MagNet協議,也就是磁力鏈接,簡稱磁鏈。以前的BT下載服務是需要一個tracker服務器來儲存BT種子文件,但是MagNet URI協議是不一定需要tracker服務器的,原理類似於電驢,但不完全是電驢的翻版。MagNet每次連接的源頭都是不固定的,也就沒法查封源頭。在BT被封鎖以后MagNet將是主流下載方式。
       它會根據文件內容的hash生成一個獨特的指紋,有點類似於ISBN。這樣,任何擁有此文件的人可以生成基於文件內容的指紋。它的另一個優勢就是跨平台性,因為它是以普通文本存在,你可以簡單的復制粘貼即可完成分享。


2、技術依賴


       Magnet不需要Tracker服務器,也不需要.torrent文件,僅需要一串字符就可以進行文件下載。

       DHT技術:2002年,紐約大學的兩個教授Petar Maymounkov和David Mazières發表了一篇論文,提出了一種真正去中心化的“點對點”下載模型,他們將其稱為Kademlia方法。2005年,BT軟件開始引入這種技術,在BT中被稱為DHT協議(Distributed Hash Table,分布式哈希表)。

       DHT是一種分布式存儲方法。DHT的作用是找到那些與本機正在下載(上傳)相同文件的對端主機(Peer),當然,實現這一過程並不依賴Tracker服務器。在DHT網絡中的每個客戶端負責一個小范圍的路由,並負責存儲一小部分數據,從而實現整個DHT網絡的尋址和存儲。這種信息獲取方式保證了整個網絡沒有單個的中心,即使一個節點下線,依然可以通過其他節點來獲取文件,因此也就不需要Tracker服務器來告訴你,其他節點在什么地方。

       PEX:是Peer Exchange的簡寫,我們可以將其理解為“節點信息交換”。雖然DHT解決了去中心化的問題,但要在沒有“中心協調員”(Tracker)的情況下實現高效尋址,就要借助PEX。PEX所提供的功能有點類似於以前的Tracker服務器,但工作方式卻非常不同,我們可以打個比方來說明。

       小趙在A班,她不認識B班的小何,也不認識C班的小溫,但小趙認識同班的小王,而小王認識B班的小何,也可能還認識C班的小溫,或者小王僅認識B班的小何,但小何認識C班的小溫,而小溫又認識同班的所有同學,結果就是小趙可以“無限”地延伸自己的關系網,不管怎樣,總有一條溝通途徑可以將這些同學聯系在一起,待小趙“認識”了小溫后,他們就可以直接溝通了,在P2P世界里,就是進行上傳與下載。


3、原理簡述


       Magnet links:磁力鏈接,簡稱磁鏈。DHT+PEX解決了BT“尋址”的問題,但是如何告訴BT客戶端找(尋)什么又是另外一個問題。在.torrent文件中包含的內容就是用戶真正要下載的文件的特征信息,或稱為“電子指紋”,BT客戶端知道了要找什么,也知道如何去找,於是P2P方式的下載、上傳就實現了。以前BT客戶端通過.torrent文件得知“要找什么”,現在,文件的“電子指紋”不再存放於.torrent中,而被放在了Magnet links中。

例如:

magnet:?xt=urn:btih:36684b463ca2aa2f9347b18e9f6b1a9090bdb073&dn=Microsoft+iSCSI+Initiator

分解一下這個地址:

       magnet:協議名。

       xt:exact topic的縮寫,表示資源定位點。BTIH(BitTorrent Info Hash)表示哈希方法名,這里還可以使用SHA1和MD5。這個值是文件的標識符,是不可缺少的。

       dn:display name的縮寫,表示向用戶顯示的文件名。這是一個可選項。

       tr:tracker的縮寫,表示tracker服務器的地址。這是一個可選項,本例中並未出現。

       簡化僅需要magnet:?xt=urn:btih:36684b463ca2aa2f9347b18e9f6b1a9090bdb073就夠用了,如果附加dn(display name),在使用上會更加方便一些。

       Magnet Link的好處至少包括兩點:網絡的可靠性得到了極大的增強;不存在“被拔線”的風險。由於不存在所謂的中央節點,審查將變得更加困難,“單點失效”的問題也就不存在了。此外,Magnet URI只是一個字符串,非常容易傳播,根本無法禁止。因此,Magnet URI取代Tracker模式將是大勢所趨,遲早會成為主流BT下載方式。

       可能看出了DHT+PEX+Magnet Link模式中的一個問題——BT客戶端的“第一步是如何邁出的”,套用在介紹PEX時使用的例子,那就是小趙是怎么“加入”A班的呢?這確實是個問題。解決這個問題依然需要一台服務器(bootstrap node),不過這台服務器所起的作用與Tracker不同,它僅負責接納小趙進入A班,當小趙與A班中的同學“搭上了話”,之后這台服務器就沒有什么用處了。bootstrap node可以是不同BT客戶端廠商獨立運營的,也可以是幾家聯合共用,總之,它是分散的,只要在客戶端軟件中內置一張表單,那客戶端就將有非常多的入口可供選擇。

參考資料:百度百科---MagNet協議       百度百科---BitTorrent協議

參考博客:http://www.cnblogs.com/5kuai/archive/2009/12/28/1633964.html

 

轉載自:BitTorrent協議與MagNet協議原理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM