For faster navigation, this Iframe is preloading the Wikiwand page for Advanced Direct Connect.

Advanced Direct Connect

Материал из Википедии — свободной энциклопедии

Эта статья должна быть полностью переписана.На странице обсуждения могут быть пояснения.

Advanced Direct Connect (ADC) — протокол для пиринговых сетей, основанный на протоколе Direct Connect (DC). ADC-клиенты подключаются к центральному серверу и обмениваются файлами напрямую между участниками сети.

История создания

[править | править код]

Протокол ADC был создан как логическое развитие протокола Direct Connect c целью устранения его недостатков. Инициаторами создания нового протокола стали Jacek Sieka в сотрудничестве с Jan Vidar Krey’s. Ими были подготовлены черновики стандарта DCTNG . Первая версия протокола появилась в 2004 году, а первый официальный релиз состоялся 1 декабря 2007 года. 2 декабря 2007 года вышла финальная версия протокола ADC 1.0[1].

Версия 1.0 описывает и предлагает следующие функции:

  • разные шары[что?] для каждого хаба;
  • сквозная идентификация пользователей;
  • изменение псевдонима пользователя без необходимости переподключения;
  • непосредственный поиск между клиентами (на 18 февраля 2012 ни в одном DC клиенте не реализован);
  • улучшенная вместимость хаба;
  • передача, защищённая паролем (Tiger Hash) (при включении сильно нагружается процессор, поэтому на практике не используется);
  • кодировка UTF-8.
  • поддержка работы по протоколу IPv6.
  • шифрование трафика.

Недостатки протокола ADC 1.0.1

[править | править код]
  • экранирование часто встречающихся символов (например символа пробела), увеличивающее трафик.
  • количество разделителей по сравнению с протоколом NMDC уменьшено, но не сведено к одному, что необходимо для максимально простой обработки команд.
  • лимит пользователей одного хаба — 1 048 575 пользователей (ограничение 20-битного SID’а). Данное ограничение невозможно обойти, поэтому ADC строго фиксирован в плане масштабирования.
  • из-за непродуманной системы Feature broadcast клиенты часто вынуждены отправлять несколько команд подряд. Пример — пассивный пользователь с поддержкой Nat-Traversal:

FSCH AAER +TCP4-NAT0 TO4172403789 ANdvdrip

FSCH AAER +NAT0 TO4172403789 ANdvdrip

В первом случае пользователь отправляет запрос всем активным пользователям, во втором всем пассивным, поддерживающим Nat Traversal. Эти запросы нельзя объединить в один, так как поддержка/неподдержка всех перечисленных команд обязательна. Для простой интерпретации между ними можно поставить логическое «и». Возможности указать «или» в протоколе не предусмотрено. Большинство хабов не пропускает вторую команду из-за лимита на количество запросов в единицу времени, и пользователи получают неполные списки ответов. Хабы, пропускающие два идущих подряд поисковых запроса, увеличивают свой трафик вдвое.

  • протокол ADC, как и NMDC, является излишне централизованным: хабы заведуют установкой всех соединений между пользователями.

Это увеличивает частоту пересылок команд и исходящий трафик хабов, что является не необходимым, и даже излишним. В протоколе предусмотрен прямой поиск между клиентами, минуя хаб, однако, на практике он не был реализован и не поддерживается ни одним клиентом.

  • протокол является полностью текстовым, что делает его наглядным для разработчиков (без преобразования), однако, увеличивает трафик и вычислительную нагрузку в несколько раз. В протоколе в бинарной форме можно было бы передавать все числа, ключи команд, ключи параметров, ip-адреса, порты, tth хеши, SID, CID, PID, и другие данные. Бинарные протоколы обладают существенным преимуществом, в них данные передаются и принимаются без преобразований, в той форме, в которой они хранятся у клиентов и хабов в памяти. Это значит, что если бы использовался бинарный протокол, при получении очередной команды клиент или хаб могли бы просто скопировать участки команды в соответствующие участки памяти и сразу начать работать с ними. Одновременно с этим данные в бинарной форме максимально компактны, поэтому в бинарных протоколах не используется повышающее нагрузку на процессор сжатие. Разработчики не смогли обосновать данный выбор, однако, для рядовых пользователей и держателей хабов эффективность протокола гораздо предпочтительнее наглядности.
    Частично проблема трафика текстового протокола решена zlib-сжатием тел команд, которое также присутствует и в протоколе NMDC. Однако оно ещё больше увеличивает вычислительную нагрузку, так как, помимо преобразования типов данных, необходимо также производить распаковку и упаковку конечных команд. В протоколе NMDC из-за большой вычислительной нагрузки сжатие получается использовать только на небольших хабах.
  • проверка CID’а пользователей, для которой необходимо вычислять хеш от PID’a, также увеличивает вычислительную нагрузку на хабы.

Дальнейшая разработка протокола ADC

[править | править код]

Версия протокола 1.0.1 была опубликована 2 мая 2008 года. Последнее дополнение для протокола было опубликовано в июне 2013 года (версия 1.0.3). Официальных заявлений об окончании разработки протокола не поступало.

Серверное ПО

[править | править код]

ADCH++ — это хаб для сетей, использующих ADC-протокол. Он работает на Windows / Unix платформах, поддерживает скрипты lua и python, а также плагины, написанные на C++. Начиная с версии 2.5.2 добавлена поддержка выполнения плагинов от PtokaX

Сайт проекта ADCH++

Для хаба активно разрабатывается графический интерфейс в проекте ADCH++ GUI.

Сайт проекта ADCH++ GUI в данное время не актуален

Файлы доступные для скачки

DSHub написан на кроссплатформенном языке программирования Java (требуется JRE 1.6 и новее). Может управляться через интерфейс командной строки на сервере, графический интерфейс, чат ADC-клиента. Имеется возможность осуществлять фильтрацию чата/личных сообщений/поиска через механизм chatcontrol с использованием regex-правил. Хаб находится в активной разработке. На данный момент ПО хаба достаточно стабильно и подходит для организации хабов до 1000 пользователей (на лето 2008 г.). Имеется интерфейс для расширений на языках Java и python. В январе 2009 года автор приостановил (недоступная ссылка) работу над данным хабом.

DSHub Website

luadch — ADC-хаб, написанный на C, C++, Lua и функционирует в операционных системах MinGW/MSYS/NT/2000/XP и Linux/BSD/UNIX-like. Для сценариев используется язык Lua, что позволяет легко вносить дополнительную функциональность. Имеются небольшие проблемы со стабильностью (в версии 0.08). Подходит для организации хабов до 1000 пользователей и выше.

luadch веб-сайт

µHub (micro-Hub) — ADC хаб написанный на C под лицензией GPLv3. Работает в операционных системах Linux, Windows, BSD и других. Имеет только базовую функциональность для p2p. Крайне нетребователен к ресурсам — при 350 пользователях занимает в памяти несколько десятков килобайт ОЗУ. Возможна работа на устройствах поддерживающих ПО OpenWRT. Начиная с версии 0.3.2 поддерживает шифрование server-client, так называемую ADCS-mode. Начиная с версии 0.4.0 введена система плагинов с простым API и добавлены некоторые особо востребованные плагины.

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
123 uhub      15   0  5984 4636 1044 S  0.0  0.9   4:08.93 uhub

µHub веб-сайт

Быстрый запуск в Ubuntu | Пакеты для Debian и Ubuntu

EADC-hub (Erlang ADC) — ADC-хаб, написанный на Erlang. Реализация ADC не является полной, есть команды чата и поддержка плагинов (на языке Erlang). Компиляция возможна на всех платформах, поддерживаемых Erlang, включая Windows, Linux, Mac OS X. (К сожалению, автор ещё не добавил существующий код расчета TIGER на Erlang в свой проект, и программа до сих пор используется библиотеку, написанную на C). Возможности языка Erlang позволяют хабу иметь свойства, подобные Ejabberd, в частности кластеризацию и обновление кода без остановки сервера.

страница на github.com

StarLet ADC Hub — ПО ADC хаба под OpenVMS соответствие со спецификацией ADC 1.0, написан на C с использованием средств OpenVMS, что обуславливает высокую нагрузочную способность хаба, а также надёжность функционирования, в настоящий момент находится в разработке. Тестовая P2P-сеть, поддерживаемая StarLet ADC Хаб-ом — доступна по ссылке [adc://adc.deltatel.ru:412] (Nick/Username и пароль может быть любым и непустым). StarLet ADC — доступен в исходных текстах.

Одной из отличительных возможностей Хаб-а является «виртуальная P2P-сеть», что позволяет строить P2P-сети на одной платформе (OpenVMS Cluster) для различных групп пользователей.

Рабочий каталог проекта StarLet ADC

Клиентское ПО

[править | править код]

Примечания

[править | править код]
  1. ADC Protocol. Дата обращения: 18 июля 2008. Архивировано 24 ноября 2010 года.
В статье не хватает ссылок на источники (см. рекомендации по поиску). Информация должна быть проверяема, иначе она может быть удалена. Вы можете отредактировать статью, добавив ссылки на авторитетные источники в виде сносок. (14 июля 2021)
{{bottomLinkPreText}} {{bottomLinkText}}
Advanced Direct Connect
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?