마그넷 URI 스키마

[섬네일|[파이러트베이에서 사용되는 둥근 마그넷 아이콘]]

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

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

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

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

다음 매개변수들이 지원된다.

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

### 정확한 항목 (xt)
xt 매개변수는 주어진 P2P 프로토콜에 대한 URN을 지정한다. 그 목적은 토렌트의 메타데이터를 찾기 위한 검색 식별자를 제공하는 것이다. 이는 .torrent 파일을 대체하는 효과를 가지는데, .torrent 파일 자체가 메타데이터를 직접 포함하는 반면, 마그넷 링크는 P2P 네트워크에서 (URN을 사용해) 해당 메타데이터를 검색한다. 각 프로토콜은 URN을 고유하게 처리한다.

예를 들어 `xt=`는 btih(비트토렌트 v1 프로토콜)를 사용하므로, 비트토렌트 클라이언트는 이 해시를 이용해 비트토렌트 DHT에서 토렌트 메타데이터를 찾을 수 있다. DHT의 경우, 클라이언트는 미리 알려진 노드들을 검색하고 해당 info 해시에 대한 메타데이터를 요청한다. 이 노드들은 동일한 요청을 다른 노드에 전달하며, 결국 스웜이 발견되고 메타데이터가 반환된다.

xt는 그룹 설정도 지원한다. 각 링크 매개변수에 점(.)으로 시작하는 번호를 붙여 여러 파일을 지정할 수 있다.
:`[ 첫 번째 파일의 [[URN]] ]&xt.2=[ 두 번째 파일의 URN ]`

; 타이거 트리 해시 (TTH): 주로 다이렉트 커넥트 및 G2에서 사용된다.
:`xt=:[ [[TTH]] [[해시 합계|해시]] ([[Base32]]) ]`

; 보안 해시 알고리즘 1 (SHA-1): 그누텔라 및 G2에서 사용된다.
:`xt=:[ [[SHA-1]] [[해시]] ([[Base32]]) ]`

; 비트프린트: SHA-1 해시와 TTH 해시를 점(.)으로 구분해 결합한 형태. 그누텔라 및 G2에서 사용된다.
:`xt=:[ [[SHA-1]] [[해시]] ([[Base32]]) ].[ [[TTH]] [[해시]] ([[Base32]]) ]`

; ED2K 해시: 이동키2000에서 사용된다.
:`xt=:[ [[ED2K]] [[해시]] ([[십육진법|Hex]]) ]`

; 고급 지능형 손상 처리기 (AICH): 마그넷 링크의 공식 URN은 아니지만, 이동키2000에서 다운로드 중이거나 다운로드된 파일의 무결성을 검증·복원하는 데 사용된다.
:`xt=:[ [[AICH]] [[해시]] ([[Base32]]) ]`

; 카자 해시: 패스트트랙에서 사용되며, 해시 충돌 공격에 취약하다.
:`xt=:[ [[카자 (애플리케이션)|카자]] [[해시]] ([[십육진법|Hex]]) ]`

; 비트토렌트 정보 해시 (BTIH): 비트토렌트에서 파일 또는 파일 세트를 식별하는 데 사용되며, 비트토렌트 메타파일의 "정보" 섹션에 대한 SHA-1 해시 값이다. 기존 링크와의 호환성을 위해 Base32 인코딩 버전도 지원된다.
:`xt=:[ [[비트토렌트]] 정보 [[해시]] ([[십육진법|Hex]]) ]`
: 일부 클라이언트는 info_hash의 Base32를 요구한다 (예: Vuze).

; 비트토렌트 정보 해시 v2 (BTMH): 비트토렌트 v2는 SHA-1을 SHA-256 기반 해시로 대체한다. v2 토렌트는 v1 및 v2 스웜에 모두 참여할 수 있으며, 새로운 접두사 `btmh`를 사용한다.
:`xt=:[1220: (v2 접두사) [[SHA-256]] [[해시]] ([[십육진법|Hex]]) ]`

; MD5: G2에서 지원되며, 해시 충돌 공격에 취약하다.
:`xt=:[ [[MD5]] [[해시]] ([[십육진법|Hex]]) ]`

### 파일에 대한 웹 링크
마그넷 링크에는 직접 다운로드 또는 백업 소스로 사용할 수 있는 두 가지 유형의 다운로드 링크를 포함할 수 있다.

; "as" ("허용 가능한 소스"): 대부분의 클라이언트는 "as"를 "xs"와 동일하게 취급하며, 명세에 규정된 "as" 소스 접속 지연을 무시한다.

; 콘텐츠 주소 지정 가능한 웹 URL:  기반 링크로, 그누텔라 및 G2 애플리케이션에서 사용된다.
:`xs=http://[클라이언트 주소]:[클라이언트 포트]/uri-res/N2R?[ [[URN]]을 포함한 파일 [[해시]] ]`
:`xs=`

; 다이렉트커넥트 허브 링크: 해당 클라이언트를 지정된 허브에 즉시 연결한다.
:`xs=dchub://[허브 주소]:[허브 포트]`

; 그누텔라2 웹 기반 소스 캐시 참조: 이는 직접 소스 대신 동일 파일을 공유하는 다른 클라이언트의 IP를 저장·전달하는 캐시를 가리킨다. 클라이언트가 캐시에 연결하면 대체 소스를 받아오며, 자신의 IP도 캐시에 기록되어 이후 다른 클라이언트에게 전달된다. 비트토렌트 트래커와 유사한 방식으로 작동한다.
:`xs=http://cache.freebase.be/[ [[SHA-1]] [[해시]] ]`

; ED2K 소스 참조:
:`xs=ed2kftp://[클라이언트 주소]:[클라이언트 포트]/[ed2k 해시]/[파일 크기]/`

### 보충 형식 (x.)
실험적이거나 특정 애플리케이션용 확장 매개변수의 경우, 접두사 `x.` 뒤에 이름을 붙여 사용할 수 있다. 이 이름은 공식적으로 표준화되지 않는다.
:`x.[새 매개변수 이름]=[새 매개변수 데이터 ([[URL]] 인코딩됨)]`

## 클라이언트

## 같이 보기
* 비트토렌트
* 번빗
* ed2k URI 스키마
* InterPlanetary File System
* 메탈링크
* Named data networking
* P2P

## 설명 각주

## 각주

## 외부 링크
* , 형식에 대한 초기 정의 (최종 업데이트 2002)
* CHK SHA1-Base32 및 ED2K를 지원하는 프리웨어 체크섬 유틸리티
* , 마그넷 링크를 계산할 수 있는 오픈 소스 명령줄 도구

분류:파일 공유
분류:URI 스킴