비트 토런트 자석 링크 식별하여 격류 1 은 "infohash"라고하는 SHA-1, SHA-256 절단 해시 값. 이는 트래커 또는 다른 피어와 통신 할 때 피어 (클라이언트)가 토렌트를 식별하는 데 사용하는 것과 동일한 값입니다. 기존의 .torrent 파일에는 두 개의 최상위 키가있는 데이터 구조가 포함되어 있습니다. announce
, 다운로드에 사용할 추적기 식별 info
및 토렌트의 파일 이름 및 해시. "infohash"는 인코딩 된 info
데이터 의 해시입니다 .
일부 자석 링크에는 트래커 또는 웹 시드가 포함되지만 종종 그렇지 않습니다. 고객은 정보 해시를 제외하고 토런트에 대해 아무것도 모를 수 있습니다. 가장 먼저 필요한 것은 토런트를 다운로드하는 다른 동료를 찾는 것입니다. "분산 해시 테이블"(DHT)을 운영 하는 별도의 피어 투 피어 네트워크 2 를 사용하여이를 수행합니다 . DHT는 급류 (infohashes로 식별)를 해당 급류 (데이터 또는 메타 데이터 업로드 / 다운로드)에 참여하는 피어 (IP 주소 및 포트로 식별) 목록에 매핑하는 큰 분산 인덱스입니다.
클라이언트가 DHT 네트워크에 처음 가입하면 infohash와 동일한 공간에서 임의의 160 비트 ID를 생성합니다. 그런 다음 클라이언트 개발자가 제어하는 클라이언트의 하드 코딩 된 주소 또는 토런트 떼에서 이전에 발견 된 DHT 지원 클라이언트를 사용하여 DHT 네트워크에 대한 연결을 부트 스트랩합니다. 주어진 토런트에 대한 떼에 참여하고 싶을 때, ID가 infohash에 가능한 한 3에 가까운 다른 여러 클라이언트를 DHT 네트워크에서 검색합니다 . 이 클라이언트는 웜에 참여하고 싶다고 알리고, 웜에 참여하고있는 사람을 이미 알고있는 동료의 연결 정보를 요청합니다.
동료가 특정 토렌트를 업로드 / 다운로드 할 때, 동일한 토런트 떼에 참여하고있는 다른 모든 동료에 대해 서로 이야기하려고합니다. 이렇게하면 추적 기나 DHT를 지속적으로 요청하지 않고도 피어가 서로를 빠르게 알 수 있습니다. DHT에서 몇 명의 동료에 대해 알게되면 클라이언트는 필요한 모든 동료를 확보 할 때까지 토런트 떼에서 더 많은 동료의 연결 정보를 해당 동료에게 요청할 수 있습니다.
마지막으로 info
파일 이름과 해시 목록이 포함 된 토런트의 메타 데이터 를이 피어에게 요청할 수 있습니다 . 이 정보를 다운로드하고 알려진을 사용하여 올바른지 확인한 후에는 infohash
일반 .torrent
파일로 시작 하여 포함 된 추적기에서 피어 목록을 얻은 클라이언트와 거의 같은 위치 에 있습니다.
다운로드가 시작될 수 있습니다.
1 infohash는 일반적으로 16 진으로 인코딩되지만 일부 오래된 클라이언트는 대신 32를 사용했습니다. v1 ( urn:btih:
)은 SHA-1 다이제스트를 직접 사용하는 반면 v2 ( urn:bimh:
)는 멀티 해시 접두사를 추가 하여 해시 알고리즘과 다이제스트 길이를 식별합니다.
2 "기본"DHT와 Azureus에서 사용하는보다 복잡한 프로토콜의 두 가지 주요 DHT 네트워크가 있습니다.
3 거리는 XOR로 측정됩니다.
추가 자료