用戶通過BT下載文件的基本過程:
一、找到.torrent文件
二、使用 BT下載客戶端軟件打開這個文件
三、對於用戶來講,只要花時間去等就可以了
而對於客戶端軟件來講,它會根據.torrent文件中的網址自動連接Tracker服務器,從它那裡接收到其他正在下載該文件的人的網址名單。下一步, 軟件就一一與名單上的網址取得聯繫,從它們那裡獲取文件的片段,直到整個下載完成。從整個過程不難看出,BT Tracker服務器是一個中央節點,任何客戶端都可以在其上找到「同伴」——只要其他人也在下載或分享同一個文件。
因此,BT並非一個去中心化的應用,必須依靠中央節點(BT Tracker服務器)才能正常工作。
Magnet 下載文件原理:
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世界裡,就是進行上傳與下載。
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客戶端廠商獨立運營的,也可以是幾家聯合共用,總之,它是分散的,只要在客戶端軟件中內置一張表單,那客戶端就將有非常多的入口可 供選擇。資料來源 : http://www.cnblogs.com/5kuai/archive/2009/12/28/1633964.html