本頁使用了標題或全文手工轉換

磁力連結

維基百科,自由的百科全書
前往: 導覽搜尋

磁力連結(Magnet URI scheme),是對等網路中進行資訊檢索和下載文件的電腦程式

和基於「位置」連線的統一資源定位符(URL)不同,磁力連結是基於後設資料(metadata)檔案內容,屬於統一資源名稱(URN)。也就是說,磁力連結不基於文件的IP位址或定位符,而是在分布式資料庫中,透過雜湊函式值來識別、搜尋來下載文件。因為不依賴一個處於啟動狀態的主機來下載文件,所以特別適用沒有中心伺服器的對等網路。儘管它符合開源標準英語Open standard,卻被壟斷資訊資源和監控用戶行為的個人、組織、企業和政府拒之門外。

歷史[編輯]

這個標準的草稿出現於2002年,是為了對eDonkey2000的「ed2k:」和Freenet的「freenet:」兩個URI格式進行「廠商與專案中立化」(vendor- and project-neutral generalization)而制定的。同時這個標準也嘗試緊密地跟進IETF官方的URI標準。

內容雜湊函式的應用[編輯]

磁力連結最常見的用途是基於檔案內容的雜湊函式值來連結到特定檔案,生成一個唯一的檔案識別符,類似於ISBN。不像常規的識別符,內容雜湊可以被任意一位持有此檔案的人生成,所以並不需要一個中心機構,這使其在檔案分享領域經常被用作搜尋條件,因任何人都可以分發一個磁力連結來確保該連結指向的資源就是他想要的,而和得到該資源的方式無關。(雖然技術上講,兩個不同的檔案可能具有相同的雜湊值,但實際上這是極不可能發生的)

另一個磁力連結的優勢是開放性和跨平台性:一個磁力連結可被執行在幾乎所有平台上的應用程式們使用以下載一個檔案。因為磁力連結十分簡潔且為純文字格式,所以用戶可以很方便地將其複製到電子信件或即時訊息中,比如種子檔案

技術描述[編輯]

磁力連結由一組參陣列成,參數間的順序沒有講究,其格式與在HTTP連結末尾的查詢字串相同。最常見的參數是"xt",是"exact topic"的縮寫,通常是一個特定檔案的內容雜湊函式值形成的URN,例如:

Magnet-icon.gif magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C

其值是Base32編碼的檔案的SHA-1雜湊。

注意,雖然這個連結指向一個特定檔案,但是客戶端應用程式仍然必須進行搜尋來確定哪裡,如果有,能夠取得那個檔案。

在標準的草稿中其他參數的定義如下:

  • "dn" ("顯示名稱"):為了方便,為用戶顯示檔案名稱
  • "kt" ("關鍵字"):更籠統的搜尋,指定搜尋鍵碼而不是特定檔案
  • "mt" ("檔案清單"):一個URI指向一個清單,例如一個專案清單
  • 應用程式定義的實驗參數,必須以"x."開頭

標準還建議同類的多個參數可以在參數名稱後面加上".1", ".2"等來使用,例如

Magnet-icon.gif magnet:?xt.1=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C&xt.2=urn:sha1:TXGCZQTH26NL6OUQAJJPFALHG2LTGBC7

描述[編輯]

磁力連結可以包括一個或多個參數,之間用'&'隔開。參數的順序在檔案在標準中沒有記錄。有一些參數的值對於客戶端正確解析磁力連結很重要。

   magnet:? xl = [位元組大小]& dn = [檔案名(已編碼URL)]& xt = urn: tree: tiger: [ TTH hashBase32)]

參數[編輯]

  • dn(顯示名稱)- 檔案名
  • xl(絕對長度)- 檔案位元組數
  • xt(eXact Topic)- 包含檔案雜湊函式值的URN
  • as(可接受來源) - 線上檔案的網路連結
  • xs(絕對資源)- P2P連結
  • kt(關鍵字)- 用於搜尋的關鍵字
  • mt(檔案清單)- 連結到一個包含磁力連結的元檔案 (MAGMA - MAGnet MAnifest
  • tr(Tracker位址)- BT下載的Tracker URL

xt參數[編輯]

磁力連結的這部分最重要。用於尋找和驗證包含著磁力連結中的檔案。

TTH(Tiger Tree雜湊函式)

TigerTree雜湊函式被用在包括Direct ConnectGnutella2在內的幾個網路中。

xt=urn:tree:tiger:[ TTH HashBase32)]
SHA-1(安全雜湊演算法1)

GnutellaGnutella2使用的雜湊函式。

xt=urn:sha1:[ SHA-1 HashBase32)]
BitPrint

這種雜湊函式包含一個SHA-1雜湊函式和一個TTH雜湊函式,用"."隔開。

GnutellaGnutella2使用。

xt=urn:bitprint:[ SHA-1 HashBase32)].[ TTH HashBase32)]
eD2k Hash(eDonkey2000)雜湊函式

eDonkey2000使用的雜湊函式演算法。

xt=urn:ed2k:[ ED2K HashHex)]
AICH(高階智慧型損壞處理)

不是正式的磁力連結的一部分。eDonkey2000使用的雜湊函式演算法,用於儲存和控制下載完成、正在下載的檔案的完整性。

xt=urn:aich:[ aich HashBase32)]
Kazaa雜湊函式

FastTrack使用的雜湊函式演算法。

xt=urn:kzhash:[ Kazaa HashHex)]
BTIH(BitTorrent Info Hash)

BitTorrent使用的雜湊函式演算法。

xt=urn:btih:[ BitTorrent Info HashHex)]
MD5(資訊-摘要演算法5)

Gnutella2支援的雜湊函式演算法。

xt=urn:md5:[ MD5 HashHex)]
CRC-32(迴圈冗餘校驗)

不是正式的磁力連結的一部分。沒有任何已知的P2P網路使用。

xt=urn:crc32:[ CRC-32(Base10)]

網路連結至檔案[編輯]

有兩種可以插入到磁力連結的下載連結作為直接或者備用資源。

普通連結(as)[編輯]

"as"的意思是"acceptable source"。這種連結指向從網路伺服器的直接下載。只有在指定的超時後才會連結,防止伺服器過載。客戶端在考慮向伺服器傳送下載請求前會先花一定時間在P2P網路中定位檔案。

as=[文件的网络链接(已编码URL)]
P2P連結(xs)[編輯]

連結可以是連結到磁力連結的檔案的HTTP(SHTTP、FTP、SFTP等)下載源、檔案的P2P源位址或是hub(使用DC++時)位址。對於這一連結,客戶端嘗試直接連結,並請求檔案或其來源,有時會同時請求二者。這一欄位常被P2P客戶端用來儲存源。參照中可能包含檔案hash。

內容定址網路(CAN)URL

這類連結被Gnutella還有G2應用程式使用,基於RFC 2168

xs=http://[ 客户端地址]:[客户端端口]/uri-res/N2R?[包含一个文件hashURN ]

例:

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]/[文件大小]/

檔案清單(mt)[編輯]

這是一個導向一系列連連結清單(也許是個網頁)的連結……

mt=http://weblog.foo/all-my-favorites.rss

或者是一個URN

mt=urn:sha1:3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ

關鍵字(kt)[編輯]

該部分代表了一串用於P2P網路搜尋用的關鍵字

kt=martin+luther+king+mp3

Tracker位址(tr)[編輯]

Tracker URL.用於在不需要DHT支援下下載BitTorrent資源。

tr=http://example.com/announce

補充格式(x.)[編輯]

對於實驗性且自補的非正式選項,可以使用字首x後加已選擇的第二個字母

x.[新参数名]=[新参数数据(已编码URL)]

參陣列[編輯]

透過在每個參數後編號並用"."來分隔允許一個Magnet連結中包含多個檔案及它們URN,檔案名和雜湊函式值。

magnet:?xt.1=[第一個檔案的URN]&xt.2=[第二個檔案的URN]

範例[編輯]

連結到一個0位元組長度的檔案。

magnet:?xt=urn:ed2k:31D6CFE0D16AE931B73C59D7E0C089C0
&xl=0&dn=zero_len.fil
&xt=urn:bitprint:3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ
.LWPNACQDBZRYXW3VHJVCJ64QBZNGHOHHHZWCLNQ
&xt=urn:md5:D41D8CD98F00B204E9800998ECF8427E

mediawiki-1.15.1.tar.gz

magnet:?xt=urn:ed2k:354B15E68FB8F36D7CD88FF94116CDC1
&xl=10826029&dn=mediawiki-1.15.1.tar.gz
&xt=urn:tree:tiger:7N5OAMRNGMSSEUE3ORHOKWN4WWIQ5X4EBOOTLJY
&xt=urn:btih:QHQXPYWMACKDWKP47RRVIV7VOURXFE5Q
&tr=http%3A%2F%2Ftracker.example.org%2Fannounce.php%3Fuk%3D1111111111%26
&as=http%3A%2F%2Fdownload.wikimedia.org%2Fmediawiki%2F1.15%2Fmediawiki-1.15.1.tar.gz
&xs=http%3A%2F%2Fcache.example.org%2FXRX2PEFXOOEJFRVUCX6HMZMKS5TWG4K5
&xs=dchub://example.org

url magnet

http://sure-raza.com/magnet:?xl=10826029&
dn=mediawiki-1.15.1.tar.gz&
xt=urn:tree:tiger:7N5OAMRNGMSSEUE3ORHOKWN4WWIQ5X4EBOOTLJY

客戶端[編輯]

客戶端 起始支援版本
μTorrent 1.8[1]
BitComet 1.17[2]
BitSpirit 3.6.0.126[3]
迅雷 5.9.17[4]
Transmission 1.80
qBittorrent 1.5.0
NeoLoader 0.10 Public Beta Release[5][6][7]

此外,支援磁力連結的應用程式還包括VuzeBearShareDC++Delugegtk-gnutellaKazaaLimeWireFrostWireMP3 RocketMorpheusShareazaMLdonkeyaMuleKCeasyTrustyFiles

參見[編輯]

參考文獻[編輯]

  1. ^ (英文)µTorrent 1.8 released - Announcements - µTorrent Community Forums. Firon. [2014-12-13]. 
  2. ^ (英文)The lastest 1.17 version is released[20091228] - Comet Forums. sophia0316. [2014-12-13]. 
  3. ^ 更新歷史 比特精靈. sophia0316. [2014-12-13]. 
  4. ^ 關於磁力鏈接(Magnet URI)的簡單介紹 – 迅雷陽台-曬出新鮮事. 強伊文. [2014-12-13]. 
  5. ^ NeoLoader v0.10公開測試版發布 eMule Fans 電騾愛好者. author. [2014-12-13]. 
  6. ^ (英文)NeoLaoder 0.10 Public Beta Release. DavidXanatos. [2014-12-13]. 
  7. ^ (英文)NeoLoader ChangeLog. DavidXanatos. [2014-12-13]. 

外部連結[編輯]