2012-02-16 6 views
5

최근에 나는 Kademlia Protocol의 문서를 읽었으므로 프로토콜을 이해하려고 시도했지만 여전히 질문이 있습니다. 노드가 다른 노드를 발견해야하는 이유 신분증이나 IP 또는 포트? 그가 신분증을 가지고있는 이유는 그가 신분증이나 항구를 모르는 사이, 신분증을 어디에서 얻었습니까? 두 개의 다른 노드 사이의 "거리"는 라우팅 거리 또는 실제 거리가 아니라고 생각합니다. 노드를 빨리 찾기 위해 알고리즘을 사용할 수있는 가상 거리 일뿐입니다.Kademlia (KAD) 프로토콜을 이해하는 방법

어쩌면 내 영어가 모국어가 아니기 때문에 영어가 분명하지 않을 수도 있지만 필요한 경우 분명히 표현하려고 노력할 것입니다. 대단히 감사합니다!

+1

Checkout http : // gleamly. –

답변

14

cHao가 말했듯이 네트워크의 분산 특성은 노드가 자신의 ID와 연락처 정보를 상대방 노드에 게시해야한다는 것을 의미합니다. ID가 연락처 정보에 매핑되는 중앙 위치가 없으므로 각 노드는 자체 라우팅 테이블에서 네트워크의 노드 하위 집합에 대해이 매핑을 유지해야합니다.

Kademlia 라우팅 테이블은 노드가 네트워크에 대한 상세한 지식을 가지며 기하 급수적으로 지식을 멀리 떨어지게 구성됩니다.

ID 간의 개념적 거리의 척도로서 비트 XOR을 사용하면 주어진 대상 ID에 대해 두 ID가 대상까지 동일한 거리를 가질 수 없다는 이점이 있습니다.

ID가 00에서 63 사이의 간단한 예제를 상상해보십시오. 순수한 수학적 차이는 거리의 척도로서 15와 35가 25에서 동일한 거리가 될 것입니다. 둘 다 거리가 10입니다. XOR을 사용하면 15와 25 사이의 거리는 22이고, 25와 35 사이의 거리는 58입니다.

이렇게하면 대상 ID에 대한 k 개의 가장 가까운 ID 그룹을 명확하게 계산할 수 있습니다.

상수 k에는 Kademlia에서 몇 가지 용도가 있지만 주로 복제 요소입니다. 즉, 데이터 조각은 k 개의 가장 가까운 노드에 데이터 ID에 저장됩니다.

룩업 프로세스는 k 노드 그룹을 반환하거나 (각 노드에 데이터를 저장하기 전에) 조회 젃차에서 첫 번째 노드에서 단일 데이터를 반환하도록 설계되었습니다.

이 때문에 순수한 Kademlia는 단일 노드를 찾는 데 적합하지 않으므로 귀하의 질문 중 일부가 너무 적합하지 않은 것으로 확신하지 못합니다. 단일 노드를 찾기 위해 Kademlia를 사용하려는 경우, 노드가 대상 노드의 연락처 세부 정보를 반환하면 조기에 조회 프로세스를 수정할 가치가 있습니다 (대상 값 프로세스 중에 발견됨).

8

네트워크가 정의상 분배되므로 ID-> 주소 매핑의 마스터 테이블이 하나도 없습니다. 노드는 모든 다른 노드에 대해 알 필요는 없습니다. 노드를 "찾는"프로세스는 기본적으로 대상 노드에 대해 "가장 가까운"알려진 노드에 대상 노드를 직접 물어 보는 것이 아니라 대략 노드가 대상에 더 가까운 노드 인을 묻는 것입니다. 이 쿼리의 결과는 쿼리 할 다음 노드 그룹을 제공하며 프로세스가 반복됩니다. 노드가 그보다 더 가까운 결과를 반환하기 때문에 각 반복은 마침내 대상에 더 가깝고 가까운 노드를 찾는 경향이 있습니다 "오, 노드 X? 저기 저기있어."라고 말할 수있는 노드에 도달하십시오.

적어도 나는 그것이 그것을 이해하고있다.

+0

답장을 보내 주셔서 감사합니다.하지만 노드 X를 찾아야하는 이유와 X의 ID 또는 이름을 얻은 곳을 알고 싶습니다. 두 노드 사이의 "거리"의 실제 의미는 무엇입니까? X가 내가 원하는 파일을 가지고 있기 때문입니까? –

+0

멀리 그것을 이해, 두 노드 사이의 "거리"단순히 그들의 XOR XOR입니다. 또한 노드 ID와 "값"(즉, 콘텐츠, 파일, 조회 정보 등)의 ID가 동일한 키 공간을 공유하는 것으로 보이며 "가장 가까운"노드를 키에 연결하는 점 중 하나는 정보. 값을 찾는 것은 노드 찾기와 동일하지만, 노드가 ID에 해당하는 값을 가지면 노드 목록 대신 응답합니다. – cHao

+0

그래서 거리는 빠른 검색 알고리즘을 사용하는 값일뿐입니다. 당신의 대답은 도움이됩니다, 고마워요! –