• 磁力链接 结构解析


    https://blog.csdn.net/cony_14/article/details/50888073

    磁力链接由一组参数组成,参数间的顺序没有讲究,其格式与在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 hash(Base32)]

    参数

    • 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
    
    参考资料:维基百科https://zh.wikipedia.org/wiki/%E7%A3%81%E5%8A%9B%E9%93%BE%E6%8E%A5
  • 相关阅读:
    POJ 1981 Circle and Points (扫描线)
    UVA 1514 Piece it together (二分图匹配)
    CodeForces 140D New Year Contest
    HDU 4863 Centroid of a Tree
    HDU 4865 Peter's Hobby
    HDU 4870 Rating
    HDU 4864 Task
    CodeForces 766E Mahmoud and a xor trip
    CodeForces 766D Mahmoud and a Dictionary
    CodeForces 767D Cartons of milk
  • 原文地址:https://www.cnblogs.com/linuxws/p/10166685.html
Copyright © 2020-2023  润新知