카뎀리아
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
카뎀리아는 분산 해시 테이블(DHT)을 구현하는 프로토콜로, 피어 투 피어(P2P) 네트워크에서 노드 간의 효율적인 통신과 정보 검색을 가능하게 한다. 노드 간의 "거리"를 계산하기 위해 배타적 논리합(XOR)을 사용하며, 각 노드는 자신의 라우팅 테이블을 통해 네트워크의 다른 노드 정보를 관리한다. 카뎀리아는 PING, STORE, FIND_NODE, FIND_VALUE의 네 가지 메시지를 사용하여 노드와 리소스를 탐색하며, 새로운 노드는 부트스트래핑 과정을 통해 네트워크에 참여한다. 파일 공유 네트워크에서 파일 해시를 기반으로 파일을 검색하고, 키워드를 사용하여 파일 이름을 검색하는 데 활용된다. XOR 메트릭의 특성으로 인해, 다른 DHT 프로토콜보다 분석이 용이하며, I2P, Kad 네트워크, 이더리움 등 다양한 네트워크에서 구현되어 사용되고 있다.
더 읽어볼만한 페이지
- 분산 자료 구조 - I2P
I2P는 2003년 Freenet에서 분기된 익명 P2P 분산 통신 계층으로, IP 주소 노출을 방지하며 다양한 소프트웨어와 익명성 응용 프로그램을 지원하고, 기부금으로 운영되며 6~8주마다 릴리스를 진행한다. - 분산 자료 구조 - 분산 해시 테이블
분산 해시 테이블(DHT)은 중앙 조정 없이 자율적이고 분산적으로 작동하며 결함 허용 및 확장성을 갖춘 분산 컴퓨팅 시스템으로, 일관성 해싱 등을 통해 키를 노드에 매핑하여 파일 공유, 콘텐츠 배포 네트워크 등 다양한 애플리케이션에 활용된다. - 해시 자료 구조 - I2P
I2P는 2003년 Freenet에서 분기된 익명 P2P 분산 통신 계층으로, IP 주소 노출을 방지하며 다양한 소프트웨어와 익명성 응용 프로그램을 지원하고, 기부금으로 운영되며 6~8주마다 릴리스를 진행한다. - 해시 자료 구조 - 분산 해시 테이블
분산 해시 테이블(DHT)은 중앙 조정 없이 자율적이고 분산적으로 작동하며 결함 허용 및 확장성을 갖춘 분산 컴퓨팅 시스템으로, 일관성 해싱 등을 통해 키를 노드에 매핑하여 파일 공유, 콘텐츠 배포 네트워크 등 다양한 애플리케이션에 활용된다. - 파일 공유 - 음악 다운로드
음악 다운로드는 인터넷을 통해 디지털 음원 파일을 구매하여 개인 기기에 저장하는 방식으로, 2000년대 초 불법 복제 문제 심화 이후 합법적인 온라인 뮤직 스토어 등장으로 디지털 음악 시장이 성장했으나, 2010년대 이후 스트리밍 서비스 보편화로 다운로드 판매량이 감소하는 추세이다. - 파일 공유 - 메가업로드
메가업로드는 한때 전 세계적으로 인기 있었던 파일 호스팅 서비스였으나 저작권 침해 혐의로 폐쇄되고 운영진이 기소되면서 법적 논쟁과 사회적 파장을 일으켰다.
카뎀리아 | |
---|---|
기본 정보 | |
유형 | 분산 해시 테이블(DHT) |
설계 | 페타르 마이문코프, 데이비드 마지ieres |
발표 | 2002년 |
상태 | 활성 |
개요 | |
설명 | 키를 노드에 할당하는 분산 해시 테이블(DHT) 모든 노드가 네트워크에 대한 정보를 포함할 필요 없이 네트워크를 효율적으로 라우팅하고 찾을 수 있도록 설계됨 |
주요 특징 | 노드는 서로에 대한 정보의 제한된 하위 집합만 유지 XOR 메트릭 사용 거리를 계산하여 네트워크를 효율적으로 라우팅 |
사용 예시 | I2P 네트워크 데이터베이스 BitTorrent의 분산 해시 테이블(DHT) GNUnet 파일 공유 네트워크 |
특징 | |
확장성 | 수천 또는 수백만 개의 노드로 확장 가능 |
효율성 | 특정 노드 또는 리소스를 매우 빠르게 찾을 수 있음 |
내결함성 | 일부 노드가 오프라인 상태가 되더라도 계속 작동 |
보안 | 악의적인 공격에 저항하도록 설계됨 |
라우팅 | |
라우팅 테이블 | 각 노드는 다른 노드에 대한 정보를 저장하는 라우팅 테이블 유지 |
k-버킷 | 라우팅 테이블은 k-버킷이라는 여러 버킷으로 구성 |
거리 | 각 k-버킷은 특정 거리 범위 내의 노드에 대한 정보를 저장 |
XOR 거리 메트릭 | XOR 거리 메트릭은 두 노드 간의 거리를 계산하는 데 사용 |
동작 방식 | |
노드 검색 | Kademlia 네트워크에서 노드를 찾으려면 소스 노드가 대상 노드에 가장 가까운 k-버킷에서 노드 집합을 선택 그런 다음 소스 노드는 선택한 노드에 대상 노드에 대한 정보를 요청 선택한 노드는 라우팅 테이블을 통해 대상 노드에 더 가까운 노드를 찾음 소스 노드는 대상 노드를 찾을 때까지 이 프로세스를 반복 |
노드 삽입 | Kademlia 네트워크에 새 노드를 삽입하려면 새 노드가 네트워크에서 일부 연락처 노드를 알아야 함 그런 다음 새 노드는 연락처 노드에 자체적으로 알림 연락처 노드는 라우팅 테이블에 새 노드를 추가하고 새 노드에 대한 정보를 알고 있는 다른 노드에 새 노드를 알림 |
데이터 저장 | Kademlia 네트워크에 데이터를 저장하려면 노드가 데이터에 대한 키를 계산해야 함 그런 다음 노드는 키에 가장 가까운 k 노드를 찾고 해당 노드에 데이터를 저장 |
데이터 검색 | Kademlia 네트워크에서 데이터를 검색하려면 노드가 데이터에 대한 키를 계산해야 함 그런 다음 노드는 키에 가장 가까운 k 노드를 찾고 해당 노드에서 데이터를 검색 |
2. 시스템 상세
카뎀리아 네트워크는 노드들로 구성되며, 노드 간 통신 및 정보 검색을 위한 프로토콜은 시간이 지남에 따라 발전해왔다. 초기 냅스터는 중앙 데이터베이스를, 그누텔라는 플러딩 방식을 사용했지만, 비트토렌트와 같은 3세대 P2P 네트워크는 분산 해시 테이블을 활용하여 리소스 위치를 저장한다.
카뎀리아는 노드 간 거리를 XOR 연산으로 계산하며, 이는 삼각 부등식을 만족하는 거리 함수 역할을 한다.[1] 노드 ID와 키는 동일한 형식과 길이를 가지므로, 거리 계산 방식 또한 동일하다. 노드 ID는 일반적으로 UUID와 같이 고유한 큰 임의의 숫자로 선택된다. 지리적으로 멀리 떨어진 노드라도 유사한 노드 ID를 가지면 "이웃"이 될 수 있다.
XOR 거리의 특징은 다음과 같다:
- 노드 자신과의 거리는 0이다.
- A에서 B로의 거리와 B에서 A로의 거리는 같다(대칭성).
- A에서 B로의 거리는 A에서 C를 거쳐 B로 가는 거리보다 짧거나 같다(삼각 부등식).
이러한 특징 덕분에 XOR은 계산 비용이 저렴하면서도 실제 거리 함수의 중요한 특징들을 모두 만족한다.
카뎀리아 검색 알고리즘의 복잡성은 ''O(log₂n)''이다.[1] 즉, 2n개의 노드로 구성된 네트워크에서 특정 노드를 찾는 데 최대 n단계가 소요된다. 각 검색 단계마다 대상에 한 비트씩 더 가까워진다.
2. 1. 라우팅 테이블
카뎀리아 라우팅 테이블은 노드 ID의 각 비트에 대해 ''k-버킷''이라는 "목록"으로 구성된다.[4] k-버킷은 자신으로부터 특정 거리에 있는 다른 노드들의 정보를 담고 있다. 이 정보는 일반적으로 다른 노드의 ''IP 주소'', ''포트'', ''노드 ID''로 구성된다.네트워크에서 노드를 발견하면 k-버킷에 추가되는데, 여기에는 저장 및 검색 작업, 다른 노드가 키를 찾는 데 도움을 주는 것 등이 포함된다. 발견된 모든 노드는 k-버킷에 포함될지 고려 대상이 된다. 따라서 노드가 네트워크에 대해 알고 있는 정보는 매우 동적이어서 네트워크를 지속적으로 업데이트하고 장애나 공격에 대한 복원력을 높인다.
k-버킷은 보통 20과 같은 시스템 전체 숫자인 ''k''개의 항목을 가진다. 예를 들어 k=20인 네트워크에서 각 노드는 특정 비트에 대해 최대 20개의 노드를 포함하는 k-버킷을 갖는다.
예를 들어, 2^3(최대 8개)의 키와 노드를 가진 네트워크에서 7개의 노드가 참여하고 있고, 고려 대상 노드가 6(이진수 110)이라면, 각 노드는 3개의 k-버킷을 갖는다. 노드 0, 1, 2 (이진수 000, 001, 010)는 가장 먼 k-버킷의 후보가 되고, 중간 k-버킷에는 노드 4와 5 (이진수 100, 101)가 배치되며, 세 번째 k-버킷에는 노드 7 (이진수 111)만 포함될 수 있다.
k-버킷의 크기가 2라면, 가장 먼 2-버킷은 세 노드 중 두 개만 포함할 수 있다. 노드 6이 가장 먼 2-버킷에 노드 1과 2를 가지고 있다면, 이 노드들에게 노드 ID 조회를 요청하여 노드 0의 위치(IP 주소)를 찾는다. 각 노드는 자신의 이웃을 잘 알고, 다른 멀리 떨어진 노드를 찾는 데 도움이 될 수 있는 몇몇 멀리 떨어진 노드와 접촉한다.
오랫동안 연결된 노드는 앞으로도 오랫동안 연결될 가능성이 높다는 통계적 분포를 이용해,[5][6] 카뎀리아는 오랫동안 연결된 노드를 k-버킷에 보관하여 안정적인 네트워크를 제공한다.
k-버킷이 가득 차고 새 노드가 발견되면, k-버킷에서 가장 최근에 보이지 않은 노드를 PING하여 활성 상태를 확인한다. 응답하면 새 노드는 대체 캐시에 배치되고, k-버킷의 노드가 응답하지 않을 때만 사용된다. 즉, 새 노드는 이전 노드가 사라질 때만 사용된다.
원래 논문의 사전 회의 버전에서는 고정 크기 라우팅 테이블이 제시되었지만,[4] 실제 구현에서는 동적으로 크기가 조정되는 라우팅 테이블을 사용한다.
2. 2. 프로토콜 메시지
카뎀리아는 다음 네 가지 메시지를 사용한다.- '''PING''' — 노드가 아직 작동하는지 확인하는 데 사용된다.
- '''STORE''' — (키, 값) 쌍을 노드에 저장한다.
- '''FIND_NODE''' — 요청을 받은 노드는 요청된 키에 가장 가까운, 자체 버킷에 있는 k개의 노드를 반환한다.
- '''FIND_VALUE''' — FIND_NODE와 동일하지만, 요청을 받은 노드가 해당 키를 저장하고 있다면 해당 값을 반환한다.
각 RPC 메시지는 시작 노드에서 생성된 임의의 값을 포함한다. 이렇게 하면 응답을 받았을 때 이전에 전송된 요청과 일치하는지 확인할 수 있다. (매직 쿠키 참조)
2. 3. 노드 및 리소스 탐색
노드 조회는 비동기적으로 수행된다. 동시 조회 수는 α로 표시되며, 일반적으로 3이다. 노드는 원하는 키에 가장 가까운 자신의 ''k-버킷''에 있는 α개의 노드에 쿼리를 보내 FIND_NODE 요청을 시작한다. 요청을 받은 노드는 자신의 ''k-버킷''을 확인하고, 자신이 알고 있는 원하는 키에 가장 가까운 ''k''개의 노드를 반환한다. 요청자는 받은 결과(노드 ID)로 결과 목록을 업데이트하고, 쿼리에 응답하는 가장 좋은 ''k''개(검색된 키에 더 가까운 ''k''개의 노드)를 유지한다. 그런 다음 요청자는 이 가장 좋은 ''k''개의 결과를 선택하고 해당 노드에 요청을 보낸 후 이 과정을 반복한다. 모든 노드는 다른 노드보다 자신의 주변 환경을 더 잘 알고 있기 때문에, 수신된 결과는 검색된 키에 점점 더 가까워지는 다른 노드일 것이다. 반복은 이전 최상의 결과보다 더 가까운 노드가 반환되지 않을 때까지 계속된다. 반복이 중단되면, 결과 목록에 있는 가장 좋은 k개 노드가 전체 네트워크에서 원하는 키에 가장 가까운 노드이다.노드 정보는 왕복 시간(RTT)으로 보강될 수 있다. 이 정보는 각 참조 노드에 대한 특정 시간 초과를 선택하는 데 사용된다. 쿼리가 시간 초과되면 다른 쿼리를 시작할 수 있으며, 동시에 α 쿼리를 초과하지 않는다.
정보는 키에 매핑하여 찾는다. 일반적으로 이 매핑에는 해시가 사용된다. 저장 노드는 이전의 STORE 메시지로 인해 정보를 가지게 된다. 값을 찾는 것은 키에 가장 가까운 노드를 찾는 것과 같은 절차를 따르지만, 노드가 요청된 값을 저장하고 이 값을 반환할 때 검색이 종료된다.
값은 여러 노드(k개)에 저장되어 노드가 오가더라도 일부 노드에서 값을 사용할 수 있도록 한다. 주기적으로 값을 저장하는 노드는 네트워크를 탐색하여 키 값에 가까운 k개의 노드를 찾고 그 노드에 값을 복제한다. 이는 사라진 노드를 보완한다.
또한, 많은 요청을 받을 수 있는 인기 있는 값의 경우, 검색 노드가 k개에 가장 가까운 노드가 아닌, 그 바깥에 있는 일부 노드에 이 값을 저장함으로써 저장 노드의 부하가 감소된다. 이 새로운 저장을 캐싱이라고 한다. 이러한 방식으로 값은 요청 수에 따라 키에서 점점 더 멀리 저장된다. 이렇게 하면 인기 있는 검색이 저장소를 더 빠르게 찾을 수 있다. 값은 키에서 더 멀리 떨어진 노드에서 반환되므로 가능한 "핫 스팟"을 완화한다. 캐싱 노드는 키로부터의 거리에 따라 일정 시간이 지나면 값을 삭제한다.
일부 구현(예: Kad)은 복제도 캐싱도 하지 않는다. 이러한 목적은 오래된 정보를 시스템에서 빠르게 제거하는 것이다. 파일을 제공하는 노드는 주기적으로 네트워크에서 정보를 새로 고친다(FIND_NODE 및 STORE 메시지 수행). 파일을 가진 모든 노드가 오프라인 상태가 되면 아무도 해당 값(소스 및 키워드)을 새로 고치지 않으며 정보는 결국 네트워크에서 사라진다.
2. 4. 네트워크 참여
새로운 노드는 부트스트랩 노드를 통해 네트워크에 참여한다. 이때 참여 노드는 부트스트랩 노드의 IP 주소와 포트를 알고 있어야 한다. 참여 노드는 아직 네트워크에 참여하지 않았으므로, 무작위 ID를 생성하여 사용한다.참여 노드는 부트스트랩 노드를 자신의 ''k-버킷''에 넣고, 부트스트랩 노드를 대상으로 자체 ID에 대한 노드 조회를 수행한다. 이 "자체 조회"를 통해 다른 노드의 ''k-버킷''을 채우고, 참여 노드의 ''k-버킷''도 채운다. 이후 참여 노드는 부트스트랩 노드가 속한 ''k-버킷''보다 더 멀리 떨어진 모든 ''k-버킷''을 새로 고친다. 이 새로 고침은 해당 ''k-버킷'' 범위 내의 무작위 키를 조회하는 방식으로 이루어진다.
처음에는 노드에 하나의 ''k-버킷''이 있으며, ''k-버킷''이 가득 차면 분할될 수 있다. ''k-버킷''의 노드 범위가 노드 자체 ID를 포함할 때 분할이 발생한다. 카뎀리아는 "가장 가까운 노드" ''k-버킷''에 대해서는 이 규칙을 완화하는데, 이는 노드 근처에 불균형한 이진 서브 트리가 존재할 수 있기 때문이다. 예를 들어 ''k''가 20이고, 특정 접두사를 가진 노드가 21개 이상이며, 새 노드의 ID가 그 접두사와 가까운 경우, 새 노드는 21개 이상의 노드에 대한 여러 ''k-버킷''을 가질 수 있다. 이는 네트워크가 가장 가까운 영역의 모든 노드를 알 수 있도록 하기 위함이다.
2. 5. 가속화된 조회
카뎀리아는 ''XOR 거리''를 사용하여 거리를 정의하며, 이 XOR 거리를 통해 라우팅 테이블을 확장하여 조회 횟수를 줄일 수 있다.[4] 비트 그룹을 ''k-버킷''에 배치하여 조회 성능을 향상시킬 수 있다.''m비트'' 접두사를 사용하는 경우, 2m-1개의 ''k-버킷''이 존재한다. 누락된 ''k-버킷''은 노드 ID를 포함하는 라우팅 트리의 추가 확장이다. ''m비트'' 접두사는 최대 조회 횟수를 ''log2n''에서 ''log2mn''으로 줄인다. 이는 '''최대''' 값이며, 평균값은 이보다 훨씬 적은데, 대상 키와 접두사 이상의 비트를 공유하는 노드를 ''k-버킷''에서 찾을 가능성이 높기 때문이다.[4]
노드는 eMule에서 사용되는 Kad Network처럼 라우팅 테이블에서 접두사의 혼합을 사용할 수 있다.
3. 알고리즘의 수학적 분석
카뎀리아 검색 알고리즘은 대상에 한 비트씩 더 가까워지는 방식으로 동작한다. 기본 카뎀리아 검색 알고리즘의 복잡도는 ''O(log2(n))''이며, 이는 2n개의 노드가 있는 네트워크에서 해당 노드를 찾는 데 최대 ''n'' 단계가 걸린다는 것을 의미한다.[1]
각 노드의 ID를 x1, ..., xn으로, 각 ID는 1과 0으로만 구성된 길이 d의 문자열인 n개의 노드로 구성된 카뎀리아 네트워크를 생각해보자. 이는 각 리프(leaf)가 노드를 나타내고, 루트에서 리프까지 레이블이 지정된 경로가 해당 ID를 나타내는 트라이로 모델링할 수 있다.
노드 x ∈ {x1, ..., xn}에 대해, Di(x)를 x와 접두사를 공유하는 노드(ID)의 집합(길이 d - i)으로 정의한다. 그러면 x의 i번째 버킷을 채우는 것은 리프 x에서 Di(x)에서 균일하게 무작위로 선택된 k개의 리프(ID)로 포인터를 추가하는 것으로 모델링할 수 있다. 따라서 라우팅은 각 단계가 가능한 한 목표 ID를 향하도록, 즉 탐욕적인 방식으로 이러한 포인터를 따라 리프 사이를 이동하는 것으로 볼 수 있다.
Txy를 리프 x에서 목표 ID y로 이동하는 데 필요한 점프 횟수라고 하자. x1, ..., xn이 {0,1}d에서 결정적으로 선택되었다고 가정하면, 다음이 증명되었다.
: supx1,..., xn supx ∈ {x1,..., xn} supy ∈ {0,1}d E[Txy] ≤ (1+o(1)) log n / Hk
여기서 Hk는 k번째 조화수이다. k → ∞일 때 Hk/log k → 1이므로, k가 클 때 E Txy는 약 logk n으로 상한을 가지며, ID와 목표는 어떻게 선택되든 상관없다. 이는 카뎀리아에서 목표 노드를 검색할 때 O(log n)개의 노드만 접촉한다는 직관을 뒷받침한다.
실제 카뎀리아 네트워크에 더 가깝게 만들기 위해, x1, ..., xn은 {0,1}d에서 중복 없이 균일하게 무작위로 선택된 것으로 가정할 수도 있다. 그러면 모든 x ∈ {x1, ..., xn} 및 y ∈ {0,1}d에 대해 다음이 증명될 수 있다.
Txy →p log n / ck |
E[Txy] → log n / ck |
여기서 ck는 k에만 의존하는 상수이며, k → ∞일 때 ck/Hk → 1이다. 따라서 k가 클 때, E Txy / logk n은 1에 가까운 상수로 수렴한다. 이는 목표 노드를 검색하는 데 필요한 노드 수가 평균적으로 실제로 Θ(log n)임을 의미한다.
4. 파일 공유 네트워크에서의 사용
카뎀리아는 파일 공유 네트워크에서 파일을 검색하고 다운로드하는 데 사용된다. 중앙 인덱스 서버 없이 분산된 방식으로 파일 정보를 관리하고 검색할 수 있다.
파일을 공유하려는 노드는 파일의 해시를 계산하여 파일 공유 네트워크 내에서 파일을 식별하는 고유한 숫자를 생성한다. 파일 해시와 노드 ID의 길이가 같기 때문에, 클라이언트는 XOR 거리 함수를 사용하여 파일 해시에 가까운 ID를 가진 노드를 찾는다. 이 노드들은 해당 파일의 게시자(소스) IP 주소 목록을 저장하고 있으며, 클라이언트는 이 정보를 통해 파일을 다운로드할 수 있다.
파일을 다운로드하려는 클라이언트는 파일의 해시만 알면 된다. Kademlia를 사용하여 파일 해시에 가장 가까운 ID를 가진 노드를 검색하고, 해당 노드에 저장된 소스 목록을 가져온다. 여러 노드가 동일한 파일에 대한 정보를 가질 수 있으므로, 키에 가까운 여러 노드(k 노드)로부터 정보를 요청한다.
파일 이름 검색은 키워드를 사용하여 구현된다. 파일 이름은 여러 단어로 나뉘고, 각 키워드는 해당 파일 이름 및 파일 해시와 함께 해싱되어 네트워크에 저장된다. 검색 시에는 키워드 중 하나를 선택하고, 해당 키워드 해시에 가장 가까운 ID를 가진 노드에 연락하여 해당 키워드를 포함하는 파일 이름 목록을 가져온다. 이 목록에 있는 파일 해시를 통해 파일을 다운로드할 수 있다.
5. 학술적 의의
XOR 연산은 닫힌 분석을 가능하게 하는 아벨 그룹을 형성하여 프로토콜 분석에 매우 중요하다. DHT 프로토콜 및 알고리즘은 네트워크 동작과 정확성을 예측하기 위해 컴퓨터 시뮬레이션 또는 복잡한 형식적 분석이 필요하지만, 카뎀리아는 XOR 메트릭을 사용하여 이를 단순화한다. 비트 그룹을 라우팅 정보로 사용하는 것 또한 알고리즘을 단순화한다.[1]
6. 구현
카뎀리아 알고리즘은 다양한 P2P 네트워크 및 분산 시스템에서 구현되어 사용되고 있다. 다음은 카뎀리아를 사용하는 주요 네트워크 및 응용 프로그램 목록이다.
이름 | 설명 |
---|---|
I2P | 익명 오버레이 네트워크 계층.[9] |
Kad 네트워크 | eMule 커뮤니티에서 eDonkey 네트워크의 서버 기반 아키텍처를 대체하기 위해 개발됨. |
이더리움 | 이더리움 블록체인 네트워크 스택의 노드 검색 프로토콜은 카뎀리아를 일부 수정하여 구현함.[10] |
Overnet | KadC는 카뎀리아 처리를 위한 C 라이브러리를 제공했으나, 현재 Overnet 개발은 중단됨. |
메인라인 DHT | 비트토렌트에서 트래커 없이 토렌트를 이용하기 위한 DHT로, 카뎀리아 알고리즘을 기반으로 구현됨. |
오시리스 | 분산 및 익명 웹 포털 관리에 사용됨. |
Retroshare | 안전한 VOIP, 인스턴트 메시징, 파일 전송 등을 갖춘 F2F 분산 통신 플랫폼. |
Tox | 완전 분산 메시징, VoIP 및 비디오 채팅 플랫폼. |
그누텔라 DHT | 원래 LimeWire에서 그누텔라 프로토콜을 보완하여 대체 파일 위치를 찾기 위해 개발되었으며, 현재 다른 그누텔라 클라이언트에서도 사용됨.[11][12][13] |
IPFS | libp2p를 기반으로 하는 P2P 분산 파일 시스템.[14] |
TeleHash | 당사자 간의 직접 연결을 해결하기 위해 카뎀리아를 사용하는 메시 네트워크 프로토콜.[15] |
iMule | I2P용 파일 공유 유틸리티 소프트웨어. |
OpenDHT | Jami 등에서 사용하는 카뎀리아 구현을 제공하는 라이브러리.[16] |
GNUnet | 안전하고 분산된, 개인 정보를 보호하는 분산 응용 프로그램 구축을 위한 대체 네트워크 스택. R5N이라는 카뎀리아의 무작위 버전을 사용.[17] |
Dat | Hypercore Protocol을 기반으로 하는 P2P 파일 공유 도구.[18] |
6. 1. 네트워크
카뎀리아 알고리즘을 사용하는 공용 네트워크들은 다음과 같으며, 이 컴퓨터 네트워크들은 서로 호환되지 않는다.- I2P: 익명 오버레이 네트워크 계층.[9]
- Kad 네트워크: eMule 커뮤니티에서 eDonkey 네트워크의 서버 기반 아키텍처를 대체하기 위해 개발되었다.
- 이더리움: 이더리움 블록체인 네트워크 스택의 노드 검색 프로토콜은 카뎀리아의 약간 수정된 구현을 기반으로 한다.[10]
- Overnet: KadC는 카뎀리아를 처리하기 위한 C 라이브러리를 제공한다. (Overnet의 개발은 중단됨)
- 메인라인 DHT: 트래커가 없는 토렌트를 위한, 카뎀리아 알고리즘 구현을 기반으로 하는 비트토렌트용 DHT.
- 오시리스 (모든 버전): 분산 및 익명 웹 포털을 관리하는 데 사용된다.
- Retroshare: 안전한 VOIP, 인스턴트 메시징, 파일 전송 등을 갖춘 F2F 분산 통신 플랫폼.
- Tox: 완전 분산 메시징, VoIP 및 비디오 채팅 플랫폼
- 그누텔라 DHT: 원래 LimeWire에서[11][12] 대체 파일 위치를 찾기 위해 그누텔라 프로토콜을 보완하기 위해 개발되었으며, 현재 다른 그누텔라 클라이언트에서도 사용하고 있다.[13]
- IPFS: libp2p를 기반으로 하는 P2P 분산 파일 시스템.[14]
- TeleHash: 당사자 간의 직접 연결을 해결하기 위해 카뎀리아를 사용하는 메시 네트워크 프로토콜.[15]
- iMule: I2P용 파일 공유 유틸리티 소프트웨어.
- OpenDHT: Jami 등이 사용하는 카뎀리아 구현을 제공하는 라이브러리.[16]
- GNUnet: 안전하고 분산된, 개인 정보를 보호하는 분산 응용 프로그램을 구축하기 위한 대체 네트워크 스택. R5N이라는 카뎀리아의 무작위 버전을 사용한다.[17]
- Dat: Hypercore Protocol을 기반으로 하는 P2P 파일 공유 도구.[18]
참조
[1]
웹사이트
Kademlia: A Peer-to-peer Information System Based on the XOR Metric
https://pdos.csail.m[...]
2023-12-28
[2]
웹사이트
Papers by David Mazières
http://www.scs.stanf[...]
[3]
웹사이트
The Network Database - I2P
https://geti2p.net/e[...]
[4]
웹사이트
Kademlia: A Peer-to-peer Information System Based on the XOR Metric
https://www.scs.stan[...]
2023-12-28
[5]
간행물
A Measurement Study of Peer-to-Peer File Sharing Systems
University of Washington, Department of Computer Science and Engineering
2001-07
[6]
논문
Understanding Churn in Peer-to-Peer Networks
http://www.barsoom.o[...]
2006-10
[7]
서적
Algorithms and Computation
[8]
논문
The Analysis of Kademlia for Random IDs
[9]
웹사이트
Intro - I2P
https://geti2p.net/e[...]
[10]
웹사이트
GitHub - ethereum/wiki: The Ethereum Wiki.
https://github.com/e[...]
2019-03-25
[11]
웹사이트
Slyck News - LimeWire Regains Top Download.com Position
https://web.archive.[...]
2007-06-20
[12]
웹사이트
Mojito - LimeWire
http://wiki.limewire[...]
[13]
웹사이트
Gtk-gnutella changelog
https://web.archive.[...]
2010-01-23
[14]
웹사이트
IPFS Paper
https://github.com/i[...]
[15]
웹사이트
"#7: Jeremie Miller - TeleHash"
http://redecentraliz[...]
2016-03-12
[16]
웹사이트
Home
https://github.com/s[...]
Savoir-faire Linux
2021-03-19
[17]
웹사이트
R5N: Randomized Recursive Routing for Restricted-Route Networks
https://git.gnunet.o[...]
[18]
웹사이트
Hypercore Protocol
https://web.archive.[...]
2020-12-27
[19]
문서
Kademlia: A Peer to peer information system Based on the XOR Metric
http://pdos.csail.mi[...]
[20]
문서
Kademlia: A Peer-to-peer information system based on the XOR Metric
http://pdos.csail.mi[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com