BitTorrent의 DHT 사용은 동료가 대상 파일을 찾는 데 어떻게 도움이 됩니까?

BitTorrent의 DHT 사용은 동료가 대상 파일을 찾는 데 어떻게 도움이 됩니까?

나는 Kademlia에 대해 읽고 그 기본 개념을 이해했습니다. BitTorrent의 기본 개념도 간단하게 이해되었습니다. 그러나 둘 다 함께라면 전혀 의미가 없습니다.

내가 온라인에서 찾을 수 있었던 것에서 대상 파일의 파일 해시는 DHT에서 조회할 대상 ID를 생성하는 데 사용되었으며, 그런 다음 해당 조회는 대상 ID에 가까운 피어를 찾아야 합니다. 알았어, 말이 되네. 전혀 그렇지 않다는 점을 제외하면 대상 ID에 가까운 ID를 가진 피어가 네트워크의 시더나 다른 피어에 대해 어떻게 알 수 있습니까?

관련성을 조사하려는 모든 시도는 DHT 알고리즘이 Kademlianess를 사용하여 피어 ID가 대상 ID에 가까운 피어에 도달한다는 동일한 설명으로 이어졌지만 이는 질문에 대답하지 않습니다.

답변1

내가 이해하는 바에 따르면 '대상 ID를 가진 피어'는 시더 또는 다른 피어에 대해 알고 있습니다. 왜냐하면 해당 피어도 동일한 절차를 사용하여가게해당 위치에 있는 자신에 대한 정보. 해당 ID를 가진 피어는 단순히 무언가 또는 다른 것과 관련된 데이터를 저장/검색하기 위해 다른 모든 피어가 동의하는 위치입니다.


DHT는 "분산 해시 테이블"입니다.해시 테이블"는 {key⇒value} 매핑(dict, 연관 배열, 조회 테이블 등이라고도 함)을 저장하는 데이터 구조를 의미합니다. 해시 테이블을 사용하는 프로그램은put(키, 값)해시테이블은 주소 X에 {key⇒value} 정보를 저장합니다. 그러면 프로그램의 다른 부분이get(키)해시테이블은 주소 X에서 값을 검색합니다.

일반적인 해시테이블이 프로그램 내에서 사용되는 경우 유사한 절차를 사용하여 저장된 조회 키(해시)에 대한 메모리 위치를 생성하고 검색해야 할 때 동일한 작업을 수행합니다. 데이터베이스, 파일 시스템, Git 등도 다양한 수준에서 동일한 작업을 수행합니다. 예를 들어 Git의 .git/objects/.

DHT는 네트워크 수준("분산" 부분)에서만 동일합니다. BitTorrent의 DHT는 일부 BT 관련 사항을 알고 있지만 기본적으로는 BitTorrent 클라이언트가 합의된 위치에 저장해야 하는 데이터만 저장합니다. Kad 사양에 따르면 다음과 같습니다.

<키, 값> 쌍을 저장하기 위해 참가자는 다음 위치를 찾습니다.

이는 일반적으로 다음과 같이 파일 공유 프로토콜에 통합될 수 있음을 의미합니다.

  1. 소스 노드 S(파일이 있음)는 ID를 계산하고 DHT 네트워크를 통해 "저장" 작업을 전송하여 정보 {key: fileID ⇒ value: "available at node S"}를 저장합니다. 이 정보는 X가 가장 가까운 노드로 이동합니다. 키(파일 ID)에 대해.

  2. 그러면 {key: fileID ⇒ value: "available at node S"} 정보가 노드 X에 저장됩니다.

  3. 다른 피어/클라이언트 노드 C는 파일의 ID를 학습하고 DHT 네트워크를 통해 "검색" 작업을 보냅니다. 이 작업은 노드 X에서 "노드 S에서 사용 가능" 값을 검색합니다.

그만큼비트토렌트 DHT해당 예와 유사한 방식으로 구현되며 "store" 작업만 호출되며 announce_peer값을 완전히 덮어쓰지 않고 이미 저장된 피어 목록에 아나운서의 데이터만 추가합니다.

관련 정보