-
磁力鏈接
鎖定
- 中文名
- 磁力鏈接
- 外文名
- Magnet URI scheme
- 用 途
- 識別文件
- 所屬領域
- 計算機互聯網
- 基 礎
- 不同文件內容的Hash結果
- 特 點
- 不基於文檔的IP地址或定位符
磁力鏈接歷史概述
這個標準的草稿出現於2002年,是為了對eDonkey2000的“ed2k:”和Freenet的“freenet:”兩個URI格式進行“廠商與項目中立化”(vendor- and project-neutral generalization)而制定的。同時這個標準也嘗試緊密地跟進IETF官方的URI標準。
磁力鏈接特點
眾所周知,BT下載速度不夠穩定,當中斷時則無法完整下載。磁力鏈接很好地解決了這個問題,它實際就是以“magnet:?”開頭的一種鏈接協議,與傳統BT不同的是,它不再需要tracker服務器儲存和解析BT種子文件。
[6]
磁力鏈接的問世與大行其道,標誌着BT 1.0時代已經過去,BT 2.0 時代已經到來。
深刻理解磁力鏈接
它類似於生活消費品包裝上常見的條碼,不同的是這個“數字指紋”可以被任何人從任何文件上生成,這也就註定了磁力鏈接不需要任何“中心機構”的支持,且識別準確度極高。
磁力鏈接內容散列函數應用
磁力鏈接最常見的用途是基於文件內容的散列函數值來鏈接到特定文件,生成一個唯一的文件識別符,類似於ISBN。不像常規的識別符,內容散列可以被任意一位持有此文件的人生成,所以並不需要一箇中心機構,這使其在文件共享領域經常被用作搜索條件,因任何人都可以分發一個磁力鏈接來確保該鏈接指向的資源就是他想要的,而和得到該資源的方式無關。
[2-3]
另一個磁力鏈接的優勢是開放性和跨平台性:一個磁力鏈接可被運行在幾乎所有平台上的應用程序們使用以下載一個文件。因為磁力鏈接十分簡潔且為純文本格式,所以用户可以很方便地將其複製到電子郵件或即時消息中,比如種子文件。
磁力鏈接磁力鏈接構成
magnet:?xt=urn:btih:4D9FA761D69964B00DF0B3B0C9C1F968EA6C47D0&xt=urn:ed2k:7655dbacff9395e579c4c9cb49cbec0e&dn=bbb_sunflower_2160p_30fps_stereo_abl.mp4&tr=udp%3a%2f%2ftracker.openbittorrent.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.publicbt.com%3a80%2fannounce&ws=http%3a%2f%2fdistribution.bbb3d.renderfarming.net%2fvideo%2fmp4%2fbbb_sunflower_2160p_30fps_stereo_abl.mp4
雖然這個鏈接指向一個特定文件,但是客户端應用程序仍然必須進行搜索來確定哪裏。
在標準的草稿中其他參數的定義如下:
magnet:協議名。
xt:exact topic的縮寫,包含文件哈希值的統一資源名稱。BTIH(BitTorrent Info Hash)表示哈希方法名,這裏還可以使用ED2K,AICH,SHA1和MD5等。這個值是文件的標識符,是不可缺少的。
dn:display name的縮寫,表示向用户顯示的文件名。這一項是選填的。
tr:tracker的縮寫,表示tracker服務器的地址。這一項也是選填的。
ws:webseed的縮寫,表示網絡種子。
urn:(Uniform Resource Name, URN 表示資源名
btih:BitTorrent info hash,種子散列函數
標準還建議同類的多個參數可以在參數名稱後面加上".1", ".2"等來使用,例如:
magnet:?xt.1=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C&xt.2=urn:sha1:TXGCZQTH26NL6OUQAJJPFALHG2LTGBC7
磁力鏈接xt參數詳述
磁力鏈接的這部分最重要。用於尋找和驗證包含着磁力鏈接中的文件。
TTH(Tiger Tree散列函數)
TigerTree散列函數被用在包括Direct Connect和Gnutella2在內的幾個網絡中。
xt=urn:tree:tiger:[ TTH Hash(Base32)]
SHA-1(安全散列算法1)
Gnutella和Gnutella2使用的散列函數。
xt=urn:sha1:[ SHA-1 Hash(Base32)]
BitPrint
這種散列函數包含一個SHA-1散列函數和一個TTH散列函數,用"."隔開。
Gnutella和Gnutella2使用。
xt=urn:bitprint:[ SHA-1 Hash(Base32)].[ TTH Hash(Base32)]
eD2k Hash(eDonkey2000)散列函數
eDonkey2000使用的散列函數算法。
xt=urn:ed2k:[ ED2K Hash(Hex)]
AICH(高級智能型損壞處理)
不是正式的磁力鏈接的一部分。eDonkey2000使用的散列函數算法,用於存儲和控制下載完成、正在下載的文件的完整性。
xt=urn:aich:[ aich Hash(Base32)]
Kazaa散列函數
FastTrack使用的散列函數算法。
xt=urn:kzhash:[ Kazaa Hash(Hex)]
BTIH(BitTorrent Info Hash)
BitTorrent使用的散列函數算法。出於向下兼容的考慮,客户端需要同時支持被 Base32 編碼過 的 BTIH 散列結果。
xt=urn:btih:[ BitTorrent Info Hash(Hex)]
MD5(信息-摘要算法5)
Gnutella2支持的散列函數算法。
xt=urn:md5:[ MD5 Hash(Hex)]
CRC-32(循環冗餘校驗)
不是正式的磁力鏈接的一部分。沒有任何已知的P2P網絡使用。
xt=urn:crc32:[ CRC-32(Base10)]
磁力鏈接普通鏈接
"as"的意思是"acceptable source"。這種鏈接指向從網絡服務器的直接下載。只有在指定的超時後才會鏈接,防止服務器過載。客户端在考慮向服務器發送下載請求前會先花一定時間在P2P網絡中定位文件。
as=[文件的網絡鏈接(已編碼URL)]
磁力鏈接P2P鏈接
鏈接可以是鏈接到磁力鏈接的文件的HTTP(SHTTP、FTP、SFTP等)下載源、文件的P2P源地址或是hub(使用DC++時)地址。對於這一鏈接,客户端嘗試直接鏈接,並請求文件或其來源,有時會同時請求二者。這一字段常被P2P客户端用來存儲源。引用中可能包含文件hash。
內容尋址網絡(CAN)URL
這類鏈接被Gnutella還有G2應用程序使用,基於RFC 2168。
xs=http://[ 客户端地址]:[客户端端口]/uri-res/N2R?[包含一個文件hash的URN ]
例:
xs=http://192.0.2.0.27:6346/uri-res/N2R?urn:sha1:FINYVGHENTHSMNDSQQYDNLPONVBZTICF
鏈接到DirectConnect hub併為文件查找源
這一鏈接立即將DirectConnect客户端連接到剛才討論的hub。
xs=dchub://[hub 地址]:[hub端口]
為Gnutella2上的文件引用基於網絡的源緩存
這種情況下,鏈接包含的點不是客户端IP或直接來源,而是來源緩存。這樣的緩存並不包含文件本身,而是存儲了其他客户端的IP,這些客户端連接到緩存來下載相同的文件。一旦客户端連接到緩存並獲得其他替代來源的IP,其自身IP就會存入到緩存中,然後繼續連接到下一個緩存,繼續請求替代來源。這種系統類似於BitTorrent tracker的操作。
引用ED2K源
xs=ed2k://[ 客户端地址]:[客户端端口]/[ed2k hash]/[文件大小]/
磁力鏈接常用客户端
客户端 | 起始支持版本 |
---|---|
μTorrent | 1.8 |
BitComet | 1.17 |
BitSpirit | 3.6.0.126 |
迅雷 | 5.9.17 |
Transmission | 1.80 |
qBittorrent | 1.5.0 |
NeoLoader | 0.10 Public Beta Release |
此外,支持磁力鏈接的應用程序還包括Vuze、BearShare、DC++、Deluge、gtk-gnutella、Kazaa、LimeWire、FrostWire、MP3 Rocket、Morpheus、Shareaza、MLdonkey、aMule、KCeasy和TrustyFiles。
磁力鏈接磁力鏈接優勢
磁力鏈接1.共享優勢
磁力鏈接2.開放性和跨平台性
磁力鏈接3.速度優勢
Magnet URI下載一方面可以從Tracker服務器中獲取對等用户,這點和BT獲取對等用户的方式是一樣的,另一方面還可以從DHT網絡中獲取對等用户。可以看出,磁力下載的用户連接數可以大於BT,從而獲取更多的下載速度。
[7]
磁力鏈接4.性能優勢
磁力鏈接5.軟件支持優勢
現在很多軟件都支持這種下載方式,如bitcomet、bittorrent、utorrent、迅雷、網際快車、比特精靈等最新版。隨着這種技術的成熟與發展,相信更多的軟件都會兼容這種下載方式,該種下載方式將會更廣泛的推廣。
[7]
磁力鏈接問題
“磁力鏈接”是通過DHT網絡來索引需要下載的文件的,因此在某些環境下可能出現“獲取磁力鏈接信息”時間較長,或者獲取失敗的問題。由於相關問題經驗的積累很少,因此除了重試還沒有明確的解決辦法。
- 參考資料
-
- 1. 陳曉露.網絡資源下載 :中國社會出版社,2010.1
- 2. 辛運幃, 廖大春, 盧桂章. 單向散列函數的原理、實現和在密碼學中的應用[J]. 計算機應用研究, 2002, 19(2):25-27.
- 3. 李哲, 方勇, 陳淑敏,等. 數據庫加密技術中散列函數的應用[J]. 計算機工程, 2003, 29(17):68-69.
- 4. 李峯. BT難下載 磁力鏈接MagNet來搞定[J]. 網友世界, 2010(7):14-15.
- 5. 寂寞的犀利哥. 和BT説拜拜 下載就用迅雷磁力鏈接[J]. 電腦愛好者, 2010(9):40-40.
- 6. 迅雷的磁力鏈接下載[J].電腦愛好者:普及版,2011(A01):195-195
- 7. 胡煒,鍾衞連.基於DHT網絡和PEX技術的Magnet URI[J].計算機與現代化,2011(10):93-95