마그넷 URI 스키마

파이러트베이에서 사용되는 둥근 마그넷 아이콘

마그넷마그넷 링크의 포맷을 정의하는 URI 스키마로, 파일 자체 위치가 아닌 암호화 해시값을 통한 파일의 내용으로 식별하는 (URN) 사실상 표준이다.

마그넷 링크는 여러 컨텍스트에서 사용될 수 있지만, P2P 파일 공유 네트워크에서 특히 유용하다. 이는 지속적으로 사용 가능한 호스트 없이도 자원을 참조할 수 있게 해주며, 파일을 이미 가지고 있는 누구든지 중앙 기관의 발행 없이도 생성할 수 있기 때문이다. 이로 인해 마그넷 링크는 파일 공유 커뮤니티 내에서 "보장된" 검색어로 널리 사용되며, 검색 방법에 관계없이 마그넷 링크를 배포하여 해당 링크로 검색된 자원이 의도된 것인지 확인할 수 있게 한다.

역사

마그넷 URI 표준은 2002년 비트지에 의해 개발되었는데, 부분적으로는 각각 이동키2000하이퍼넷 (구 프리넷)에서 사용되던 ed2k:freenet: URI 스키마의 "벤더 및 프로젝트 중립적인 일반화"로서, 공식 IETF URI 표준을 최대한 따르려 노력한다. 비트토렌트는 2020년 비트토렌트 v2 변경사항의 일부로 btmh: 프로토콜을 도입했다.[1]

형식

마그넷 URI는 하나 이상의 매개변수들로 구성되며, 순서는 중요하지 않고, 일반적으로 HTTP URL의 끝에 오는 쿼리 문자열과 동일한 방식으로 포맷된다.

다음 매개변수들이 지원된다.[2][3]

매개변수 이름 설명
xt 정확한 항목 (eXact Topic) 파일 해시를 포함하는 URN. 이것은 마그넷 링크의 가장 중요한 부분이며, 지정된 파일을 찾고 확인하는 데 사용된다. URN은 프로토콜에 따라 다르므로, btih (비트토렌트) 아래의 파일 해시 URN은 ed2k의 파일 해시 URN과 완전히 다를 것이다.
xt=urn:btih:c12fe1c06bba254a9dc9f519b335aa7c1367a88a
dn 표시 이름 (Display Name) 사용자에게 편의상 표시할 파일명.
xl 정확한 길이 (eXact Length) 파일 크기(바이트)
tr 트래커 주소 (address TRacker) URL 트래커; DHT 지원 없이 비트토렌트 다운로드용 자원을 얻는 데 사용된다.[3] 값은 URL 인코딩되어야 한다.
tr=http%3A%2F%2Fexample.org%2Fannounce
ws 웹 시드 (Web Seed) HTTP(S)를 통해 제공되는 페이로드 데이터
as 허용 가능한 소스 (Acceptable Source) 웹 서버에서 직접 다운로드를 참조한다. 클라이언트가 지원하는 P2P 네트워크에서 링크된 파일을 찾거나 다운로드할 수 없는 경우의 대체 소스로만 간주된다.
as=[파일의 웹 링크(URL 인코딩됨)]
xs 정확한 소스 (eXact Source) 마그넷 링크가 가리키는 파일에 대한 HTTP (또는 HTTPS, FTP, FTPS 등) 다운로드 소스, 파일에 대한 P2P 소스의 주소 또는 허브의 주소(DC++의 경우). 클라이언트는 이 주소를 통해 직접 연결을 시도하며, 파일 및 해당 소스를 요청한다. 이 필드는 일반적으로 P2P 클라이언트가 소스를 저장하는 데 사용되며, 파일 해시를 포함할 수 있다.
xs=http://[클라이언트 주소]:[클라이언트 포트]/uri-res/N2R?[ URN을 포함하는 파일 해시 ]
xs=http://192.0.2.27:6346/uri-res/N2R?urn:sha1:FINYVGHENTHSMNDSQQYDNLPONVBZTICF
kt 키워드 항목 (Keyword Topic) 특정 파일이 아닌 P2P 네트워크에서 검색할 키워드 문자열을 지정한다.
kt=martin+luther+king+mp3
mt 매니페스트 항목 (Manifest Topic) 마그넷 링크 목록(MAGMA – MAGnet MAnifest)을 포함하는 메타파일에 대한 링크; 즉, 링크 목록에 대한 링크이다.
mt=http://example.org/all-my-favorites.rss
mt=urn:sha1:3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ
so[4][5] 선택만 (Select Only) 토렌트 클라이언트가 다운로드해야 할 특정 파일들을 나열하며,[6] 개별 파일 인덱스 또는 (포함) 범위로 표시된다.
so=0,2,4,6-8
x.pe 피어 (PEer) 연결할 고정된 피어 주소를 지정한다. (예를 들어) 트래커나 DHT가 없는 경우 피어 검색을 부트스트랩하는 데 사용된다.[3]
x.pe=hostname:port
x.pe=ipv4-literal:port
x.pe=[ipv6-literal]:port

이 표준은 또한 "x"로 시작해야 하는 애플리케이션별 실험적 매개변수를 허용한다.

정확한 항목 (xt)

xt 매개변수는 주어진 P2P 프로토콜에 대한 URN을 지정한다. 그 목적은 토렌트의 메타데이터를 찾기 위한 검색 매개변수를 제공하는 것이다. 이는 .torrent 파일을 대체하는 효과를 가지는데, .torrent 파일 자체가 토렌트 메타데이터를 포함하는 반면, 대신 P2P 네트워크에서 (URN을 사용하여) 해당 메타데이터를 검색한다. 각 프로토콜은 URN을 고유하게 처리한다. 예를 들어, xt=urn:btih:FFC7E738EAA4CD4ECF51EC6FD669C6CDE2C281A8는 btih(비트토렌트 v1 프로토콜)를 사용하므로, 비트토렌트 클라이언트는 해시를 가져와 비트토렌트 DHT에서 토렌트의 메타데이터를 찾을 수 있다.[7] DHT의 경우 클라이언트는 미리 알려진 노드들을 검색하고 정보 해시에 대한 메타데이터를 요청한다. 이 노드들은 결국 스웜이 발견되고 반환될 때까지 다른 알려진 노드들에게 동일한 요청을 한다.

xt는 또한 그룹 설정도 허용한다. 각 링크 매개변수에 점(.)으로 시작하는 카운트 번호를 추가하여 여러 파일을 포함할 수 있다.

magnet:?xt.1=[ 첫 번째 파일의 URN ]&xt.2=[ 두 번째 파일의 URN ]
타이거 트리 해시 (TTH)
이 해시는 주로 다이렉트 커넥트G2 (그누텔라2) 등에서 사용된다.
xt=urn:tree:tiger:[ TTH 해시 (Base32) ]
보안 해시 알고리즘 1 (SHA-1)
이 해시 합계는 그누텔라G2 (그누텔라2)에서 사용된다.
xt=urn:sha1:[ SHA-1 해시 (Base32) ]
비트프린트
이러한 해시 합계는 SHA-1 해시 다음에 점으로 구분된 TTH 해시로 구성되며, 그누텔라G2 (그누텔라2)에서 사용된다.
xt=urn:bitprint:[ SHA-1 해시 (Base32) ].[ TTH 해시 (Base32) ]
ED2K (이동키2000) 해시
이 해시 합계는 이동키2000에서 사용된다.
xt=urn:ed2k:[ ED2K 해시 (Hex) ]
고급 지능형 손상 처리기 (AICH)
마그넷 링크의 공식 URN은 아니지만, 이러한 해시 합계는 이동키2000에서 다운로드 중이거나 이미 다운로드된 파일의 무결성을 복원하고 제어하는 데 사용된다.
xt=urn:aich:[ AICH 해시 (Base32) ]
카자 해시
패스트트랙에서 사용되는 이 해시 합계는 해시 충돌 공격에 취약하다.
xt=urn:kzhash:[ 카자 해시 (Hex) ]
비트토렌트 정보 해시 (BTIH)
이것은 비트토렌트에서 다운로드 가능한 파일 또는 파일 세트를 식별하는 데 사용되는 비트토렌트 메타파일의 "정보" 섹션에 대한 십육진법 인코딩된 SHA-1 해시 합계이다. 기존 링크와의 하위 호환성을 위해 클라이언트는 해시의 Base32 인코딩 버전도 지원해야 한다.[3]
xt=urn:btih:[ 비트토렌트 정보 해시 (Hex) ]
일부 클라이언트는 info_hash의 Base32를 요구한다 (예: Vuze).
비트토렌트 정보 해시 v2 (BTMH)
비트토렌트 v2구형 SHA-1 해시SHA-256 정보 해시로 대체한다. v2 정보 해시에는 v1 및 v2 스웜에 모두 참여할 수 있는 토렌트를 위해 새로운 접두사(btmh)가 부여된다.[1]
xt=urn:btmh:[1220: (v2 접두사) 비트토렌트 정보 해시 (Hex) ]
메시지 다이제스트 5 (MD5)
G2 (그누텔라2)에서 지원되며, 이러한 해시는 해시 충돌 공격에 취약하다.
xt=urn:md5:[ MD5 해시 (Hex) ]

파일에 대한 웹 링크

마그넷 링크는 직접 또는 백업 소스로 포함할 수 있는 두 가지 유형의 다운로드 링크를 포함할 수 있다.

"as" ("허용 가능한 소스")
대부분의 클라이언트는 "as"를 "xs" 토큰과 우선순위에서 동일하게 취급하며, 스펙에 의해 지정된 "as" 소스에 연락하기 전의 시간 제한을 무시한다.
콘텐츠 주소 지정 가능한 웹 URL
이 유형의 RFC 2168 기반 링크는 그누텔라G2 애플리케이션에서 사용된다.[8]
xs=http://[클라이언트 주소]:[클라이언트 포트]/uri-res/N2R?[ URN을 포함하는 파일 해시 ]
xs=http://192.0.2.27:6346/uri-res/N2R?urn:sha1:FINYVGHENTHSMNDSQQYDNLPONVBZTICF
파일 소스를 찾기 위한 다이렉트커넥트 허브 링크
이 유형의 링크는 다이렉트커넥트 클라이언트를 해당 허브에 즉시 연결한다.
xs=dchub://[허브 주소]:[허브 포트]
그누텔라2에서 파일의 웹 기반 소스 캐시 참조
이 경우, 포함된 링크는 클라이언트 IP나 직접 소스가 아닌, 동일한 파일을 다운로드하기 위해 연결하는 다른 클라이언트의 IP를 저장하는 소스 캐시를 가리킨다. 클라이언트가 캐시에 연결하면, 대체 소스의 IP가 제공되고, 자신의 IP는 캐시 내에 저장되어 캐시에 연결하는 다음 클라이언트에게 전달된다. 이 시스템은 비트토렌트 트래커와 유사하게 작동한다.
xs=http://cache.freebase.be/[ SHA-1 해시 ]
ED2K 소스 참조
xs=ed2kftp://[클라이언트 주소]:[클라이언트 포트]/[ed2k 해시]/[파일 크기]/

보충 형식 (x.)

실험적이고 자체 보완적인 비공식 옵션의 경우, 접두사 x. 뒤에 선택된 접미사 문자를 사용할 수 있다. 이 이름은 표준화되지 않는 것이 보장된다.

x.[새 매개변수 이름]=[새 매개변수 데이터 (URL 인코딩됨)]

클라이언트

클라이언트 dn xl xt tr xs as kt mt ws
어뮬 urn:ed2k: 아니요 알 수 없음 알 수 없음 알 수 없음 알 수 없음 알 수 없음
ApexDC++ urn:bitprint:
urn:tree:tiger:
아니요 dchub:[Note 1] dchub:[Note 1] 아니요 아니요 알 수 없음
비트코멧 urn:btih: 1.76 아니요 아니요 아니요 1.74[9]
Bitflu 아니요 urn:btih: 아니요 아니요 아니요 아니요 알 수 없음
Deluge 아니요 urn:btih: 아니요 아니요 아니요 아니요 알 수 없음
EiskaltDC++ urn:tree:tiger:
urn:bitprint:
urn:btih:[Note 2]
urn:btmh:[Note 2]
아니요 dchub:[Note 1]
adc:[Note 3]
adcs:[Note 4]
dchub:[Note 1] 아니요 알 수 없음
FlylinkDC++ urn:tree:tiger:
urn:bitprint:
urn:btih:
아니요 dchub:[Note 1]
adc:[Note 3]
adcs:[Note 4]
dchub:[Note 1] 아니요 알 수 없음
gtk-gnutella urn:sha1: 아니요 http:
push:
아니요 알 수 없음
K토렌트 아니요 urn:btih: 아니요 아니요 아니요 아니요 알 수 없음
라임와이어 urn:sha1: 아니요 http:
urn:guid:
알 수 없음 아니요 아니요 알 수 없음
모노토렌트 urn:btih: 아니요 아니요 아니요 알 수 없음
뮤토렌트 아니요 urn:btih: 아니요 아니요 아니요 아니요
큐빗토렌트 [10] urn:btih:
urn:btmh:
아니요 아니요 아니요 아니요
Shareaza urn:bitprint:
urn:btih:
urn:ed2k:
urn:md5:
urn:sha1:
urn:tree:tiger:
[Note 5] http:
ftp:
http:
ftp:
(xs와 동일한 우선순위)
아니요 알 수 없음
Tixati urn:btih: 알 수 없음 알 수 없음
Transmission[2][11] 아니요 urn:btih: 아니요 아니요 아니요 아니요 [12]
Vuze urn:btih:
urn:sha1:
5.7.5.0 5.7.5.0 아니요 아니요

같이 보기

설명 각주

  1. dchub://[허브 주소]:[허브 포트]
  2. 외부 소프트웨어로 링크 전달
  3. adc://[허브 주소]:[허브 포트]
  4. adcs://[허브 주소]:[허브 포트]
  5. v2.5.1.0부터

각주

  1. “BitTorrent v2”. BitTorrent. 2020년 9월 7일. 2020년 10월 30일에 원본 문서에서 보존된 문서. 2020년 9월 21일에 확인함. 
  2. “magnet-test.c in trunk/libtransmission; Revision 9531”. Transmission. 2012년 2월 17일에 원본 문서에서 보존된 문서. 2012년 2월 4일에 확인함. 
  3. “BitTorrent Enhancement Proposal 9: Extension for Peers to Send Metadata Files”. 《bittorrent.org》 (2008년 1월 31일에 출판됨). 2017년 3월 26일. 2022년 10월 10일에 원본 문서에서 보존된 문서. 2022년 11월 4일에 확인함. 
  4. Houlihan, Tyler (2017년 5월 24일). “Magnet URI extension - Select specific file indices for download”. 《BitTorrent.org》. 2024년 12월 30일에 확인함. 
  5. “libtorrent/magnet_uri.cpp at 64817e0e8793d0875fc10245de52ffb2540a223d · arvidn/libtorrent”. libtorrent. 2022년 11월 4일에 원본 문서에서 보존된 문서. 2022년 11월 4일에 확인함GitHub 경유. 
  6. “BitTorrent Enhancement Proposal 53: Magnet URI extension - Select specific file indices for download”. 《BitTorrent.org》. 2017년 6월 6일. 2022년 10월 10일에 원본 문서에서 보존된 문서. 2022년 11월 4일에 확인함. 
  7. “bep_0005.rst_post”. 《bittorrent.org》. 2022년 5월 12일에 확인함. 
  8. Chapweske, Justin (2001년 11월 29일). “HTTP Extensions for a Content-Addressable Web”. 《www-talk》. W3C. 2011년 7월 28일에 원본 문서에서 보존된 문서. 2010년 11월 7일에 확인함. 
  9. “v1.74 Core Improve: support ws parameter in Magnet URI, to add web seed”. 《bitcomet》. 2021년 4월 10일에 원본 문서에서 보존된 문서. 2021년 4월 7일에 확인함. 
  10. “Add eXact Length parameter when creating magnet URI”. 《GitHub》. 2024년 12월 29일에 확인함. 
  11. “magnet.c in trunk/libtransmission; Revision 9979”. Transmission. 2012년 2월 17일에 원본 문서에서 보존된 문서. 2012년 2월 4일에 확인함. 
  12. “magnet.c in libtransmission: Commit 5c3fd1b5ccc3a8c4ab68e2c56861df31dd1c720a”. Transmission. 2021년 9월 4일에 원본 문서에서 보존된 문서. 2021년 9월 4일에 확인함. 

외부 링크

Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

Portal di Ensiklopedia Dunia

Kembali kehalaman sebelumnya