Kad Network

Материал из Циклопедии
Перейти к навигации Перейти к поиску

Kad Network (Kad) — оверлейная децентрализованная файлообменная сеть, реализация протокол одноранговой связи «Kademlia» (Кадемлия). Кадемлия используется во множестве программного обеспечения. eMule и eDonkey, в частности, пользуются огромным успехом у миллионов пользователей. Однако их реализации довольно сильно отличаются от оригинального протокола[1].

Сеть Kad состоит из нескольких взаимодействующих узлов, которые взаимодействуют друг с другом и хранят информацию друг для друга. Каждый узел имеет NodeID, квазиуникальный двоичный номер, который идентифицирует его в сети. Важно, чтобы идентификаторы узлов были равномерно распределены; на это опирается дизайн сети. Хотя протокол этого не требует, есть возможные преимущества в том, что узел использует один и тот же NodeID всякий раз, когда он подключается к сети, вместо того, чтобы генерировать новый, зависящий от сеанса NodeID[2].

Описание[править]

В виртуальной сети Kad каждый пользователь является небольшим сетевым узлом, через который проходят запросы и служебная информация, такое функционирование весьма эффективно, поскольку отказ одного узла не приводит к сбою всей сети. Серверы, отслеживающие активность клиентов, отсутствуют, а обмен файлами осуществляется каждым клиентом-участником. Фактически, каждый клиент также является небольшим сервером и равен по рангу (отсюда и значение «одноранговой сети»). Kad является полноценной заменой серверной сети eDonkey2000 (ed2k).

Протокол Kad используется в сети Overnet и в файлообменных клиентах: iMule, eMule, aMule и MLDonkey.

Использование[править]

В сети Kad протокол UDP используется для:

  • Поиска источников ed2k-хеша.
  • Поиска ed2k-хеша по ключевым словам в именах файлов.
  • Поиска комментариев и оценок к файлам (хеша).
  • Предоставления услуг узлам, расположенным за межсетевым экраном (Low ID).

Сеть Kad фактически не используется для передачи файлов через Р2Р-сети. Вместо этого при инициировании передачи файла клиенты подключаются друг к другу напрямую (используя стандартные IP-сети). Этот трафик подвержен атаке Сивиллы[3][4], заражению руткитом TDSS, который создает ботнеты[5], а также отслеживанию интернет-провайдером или любым другим предприимчивым посредником. Как и все децентрализованные сети, сеть Kad не требует официальных или общих серверов. Таким образом, его нельзя отключить, отключив определенную основную группу узлов. В то время как децентрализация сети предотвращает её отключение, анализ трафика и глубокая проверка пакетов позволяют легче идентифицировать трафик из-за высокой пропускной способности пакетов с переменным назначением. Большой объем пакетов, а также тот факт, что узлы постоянно взаимодействуют друг с другом, обычно приводит к сокращению доступных ресурсов ЦП и/или сети, обычно связанных с трафиком P2P. Для подключения к этой сети требуются IP-адрес и порт любого клиента, уже подключённого к сети, а также Bootstrap (самонастройка). Как только происходит соединение с сетью, клиент опрашивает других клиентов, чтобы определить, можно ли с ними соединиться. Этот процесс похож на определение HighID/LowID на серверах. Если удастся свободно соединиться, узел получает высокий ID (HighID) и статус open. В противном случае присваивается статус firewalled (и, соответственно, LowID).

Поиск[править]

Каждый узел отвечает за хранение различных типов информации. Во-первых, каждый узел хранит исходную карту, то есть информацию о членах сети, которые готовы поделиться определенным файлом. Карта представляет собой хэш файла в качестве ключа и список источников в качестве значения. Исходная карта узла содержит контактную информацию о хэшах всех файлов, хэш которых соответствует идентификатору узла или близок к нему (с использованием метрики XOR). Например, с помощью хеша файла можно найти узлы с ID, близкими к хэшу файла и запросить у них список источников для загрузки файла. Во-вторых, если нет хэша файла, можно искать его по ключевым словам. Для этого имя опубликованного файла разбивается на несколько последовательных слов, и каждое слово хешируется отдельно. Для поиска по этим ключевым словам у каждого узла есть вторая карта, которая содержит хэши слов, близких к ID узла в качестве ключей и хэши файлов и их имена в качестве значений[6].

Использование в программном обеспечении[править]

Различные вариации протокола Kademlia используются в следующем программном обеспечении:

  • BitTorrent — в протоколе BitTorrent[7].
  • Эфириум — в платформе для создания децентрализованных сервисов на базе блокчейна.
  • IPFS — в одноранговом гипермедийном протоколе связи.
  • Overnet — в одноранговой файлообменной сети.
  • В свободных BitTorrent клиентах для файлообменных сетей: aMule, iMule (анонимный клиент), eMule, MLDonkey, Tribler и Vuze (с поддержкой анонимного обмена данными).
  • В клиенте RevConnect (для частично централизованной файлообменной сети «Direct Connect»), впоследствии — в StrongDC++ и в его клонах (не афишируется, но имеется)[8].

См. также[править]

Примечания[править]

  1. Kademlia. xlattice.sourceforge.net. Проверено 18 марта 2025.
  2. Kademlia: A Design Specification. xlattice.sourceforge.net. Проверено 18 марта 2025.
  3. Peng Wang, James Tyra, Eric Chan-Tin, Tyson Malchow, Denis Foo Kune, Nicholas Hopper, Yongdae Kim Attacking the Kad network // Proceedings of the 4th international conference on Security and privacy in communication netowrks. — New York, NY, USA: Association for Computing Machinery, 2008-09-22. — С. 1–10. — ISBN 978-1-60558-241-2. — DOI:10.1145/1460877.1460907
  4. Evaluation of Sybil Attacks Protection Schemes in KAD. ResearchGate GmbH (2009). Архивировано из первоисточника 20 марта 2025.
  5. TDL4 – Top Bot (en-US). securelist.com (2011-06-27). Проверено 20 марта 2025.
  6. Как работает поиск в Kad Network рус.. Хабр (2013-07-22). Проверено 19 марта 2025.
  7. bep_0005.rst_post. www.bittorrent.org. Проверено 19 марта 2025.
  8. RevConnect. web.archive.org (2015-12-09). Проверено 19 марта 2025.

Ссылки[править]