磁力連結(Magnet URI scheme),是對等網路中進行信息檢索和下載文檔的電腦程式。和基於“位置”連線的統一資源定位符(URL)不同,磁力連結是基於元數據(metadata)檔案內容,屬於統一資源名稱(URN)。也就是說,磁力連結不基於文檔的IP位址或定位符,而是在分散式資料庫中,通過散列函式值來識別、搜尋來下載文檔。因為不依賴一個處於啟動狀態的主機來下載文檔,所以特別適用沒有中心伺服器的對等網路。舉例來說,一個常見的磁力連結形式為“magnet:?xt=urn:btih:”。
基本介紹
- 中文名:磁力連結
- 外文名:Magnet URI scheme
- 用途:識別檔案
- 所屬領域:計算機網際網路
- 基礎:不同檔案內容的Hash結果
- 特點:不基於文檔的IP位址或定位符
歷史概述
特點
內容散列函式套用
磁力連結構成
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.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=[檔案的網路連結(已編碼URL)]
P2P連結
內容定址網路(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的操作。
xs=http://cache.freebase.be/[ SHA-1 hash ]
引用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。