문제

분산화를 만들고 싶은 P2P 구현을 코딩하고 있지만 Bittorrent와 같은 프로토콜에서 DHT가 방법을 파악하는 데 어려움이 있습니다. 추적기가없는 경우 고객은 동료가 어디에 있는지 어떻게 알 수 있습니까? 피어는 실제 토렌트 파일에 저장되어 있습니까?

도움이 되었습니까?

해결책

트래커리스/DHT 급류를 사용하면 피어 IP 주소는 비트 토렌트 정보 해시를 키로 사용하여 DHT에 저장됩니다. 모든 트래커가 기본적으로 PUT/GET 요청에 응답하기 때문에이 기능은 DHT (분산 해시 테이블)가 제공하는 인터페이스에 정확히 일치합니다. InfoHash에 의해 DHT에 IP 주소를 찾고 저장할 수 있습니다.

따라서 "GET"요청은 BT InfoHash를 찾아 IP 주소 세트를 반환합니다. "PUT"은 주어진 정보 해시에 대한 IP 주소를 저장합니다. 이는 트래커에게 피어 IP 주소 사전을 받기 위해 추적기에 제공하는 "알림"요청에 해당합니다.

DHT에서, 피어는 주요 공간의 작은 부분에 속하는 저장 값에 무작위로 할당됩니다. 해싱은 키가 참여하는 동료에 무작위로 배포되도록합니다. DHT 프로토콜 (Kademlia BitTorrent의 경우)는 Put/Get 요청이 주어진 키의 IP 주소 목록을 유지 관리하는 동료들에게 효율적으로 라우팅되도록합니다.

다른 팁

일반 이론은 Wikipedia의 기사에서 찾을 수 있습니다. Kademlia. Bittorrent에 사용 된 특정 프로토콜 사양은 다음과 같습니다. http://wiki.theory.org/bittorrentdraftdhtprotocol

Bittorrent와 DHT에서 발생하는 것은 처음에 BitTorrent가 토런트 파일에 내장 된 정보를 사용하여 추적기 또는 DHT의 노드 세트 중 하나로 이동한다는 것입니다. 그런 다음 하나의 노드를 찾으면 다른 노드를 찾아서 계속 유지하기 위해 중앙 추적기를 사용하지 않고도 DHT를 사용하여 지속될 수 있습니다.

원래 정보는 나중에 DHT의 사용을 부팅합니다.

DHT 노드에는 노드 ID라고 불리는 고유 식별자가 있습니다. 노드 ID는 BitTorrent Info-Hashes와 동일한 160 비트 공간에서 무작위로 선택됩니다. 근접성은 노드 ID의 라우팅 테이블을 비교하여 측정됩니다. 노드가 가까워 질수록 더 자세하게

그런 다음 간단한 서명되지 않은 정수를 사용한 전임자 "Kademlia"보다 더 최적화하는 이유 : 거리 (a, b) = | a xor b | 작은 값이 더 가깝습니다. xor. 안전하지 않은 것 외에도 논리가 결함이있었습니다.

클라이언트가 DHT를 지원하는 경우 0x09와 UDP 포트 및 DHT 노드가 포함 된 2 바이트 페이로드가 포함 된 8 바이트가 있습니다. 핸드 셰이크가 성공하면 위는 계속 될 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top