Более подробная информация предоставлена в неофициальной спецификации протокола.
Сеть Direct Connect – централизованная. Архитектура сети и ее философия сходны с OpenNap. Также как и в Napster, создатели Direct Connect разрабатывают клиентское и серверное ПО. Отличие состоит в том, что поддержка сети возлагается на ее участников, некоторые из которых организуют хабы. В сети Direct Connect не предусмотрены система хэширования или взаимодействие серверов между собой для создания общей файловой базы. Direct Connect является отличным решением для локальной файлообменной P2P сети.
· DC++;
· StrongDC++;
· LinuxDC++;
DC++ | StrongDC++ | LinuxDC++ | |
Бесплатный | + | + | + |
Открытые исходные тексты | + | - | + |
Windows | + | + | - |
Linux | - | - | + |
Mac OS X | - | - | - |
Русский язык интерфейса | + | + | - |
Шифрование соединений | - | - | - |
Многопоточная закачка | + | + | + |
U/D лимиты | -/- | +/+ | - |
Ограничение скорости передачи данных | - | + | + |
Поддержка приоритетов | + | + | + |
Наличие чата | + | + | + |
Удаленное управление через web-интерфейс | - | - | - |
Интеграция с плеером | - | Winamp | - |
Проверка расшареного | - | + | + |
Автоматическое обновление продукта | + | + | - |
Gnutella — это одна из первых P2P сетей, которая была создана в 2000 г. Каждый подключенный к сети пользователь — является узлом, обрабатывающим и пропускающим поисковые запросы – поэтому возможности, предоставляемые сетью ограничиваются скоростью канала и мощностью компьютера, именно от этих параметров зависит количество связанных хостов.
Протокол, на котором работает Gnutella, не предназначен для передачи файлов - это протокол, обеспечивающий поиск компьютеров и файлов, на его базе построена поисковая система InfraSearch. В связи с серьезными недостатками сети Gnutella пользователи сейчас отдают предпочтение сети Gnutella2, однако сеть Gnutella продолжает функционировать. Протокол Gnutella2 не является более новой версией Gnutella, а является его ответвлением.
Протокол Gnutella2 был создан в 2003. В соответствии с этим протоколом часть узлов становится концентраторами, остальные же - обычные узлы(листья). Каждый обычный узел соединен одним или несколькими концентраторами. А сам концентратор соединен с десятками других концентраторов и с множеством листьев. Узлы периодически отправляют концентратору список идентификаторов ключевых слов, по данным спискам осуществляется определение публикуемых данным узлом ресурсов. Эти идентификаторы хранятся в общей таблице на концентраторе. Списки идентификаторов и запросы пересылаются на концентраторы по протоколу UDP.
Одно из отличий Gnutella2 заключается в возможность размножения в сети информации о файле, при этом копирование самого файла не осуществляется. Обе сети имеют много общего и отличаются в основном только форматами пакетов и методом поиска. Формат пакета сети Gnutella2 изначально разрабатывался с возможностью расширения в отличии от формата пакета сети Gnutella, для которого возможность расширения не предусматривалась разработчиками изначально. Для пакетов, передаваемых внутри сети, создан собственный формат, реализующий возможность увеличения функциональности сети в результате добавления дополнительной служебной информации, данный формат похож на XML.
Другое серьёзное отличие одной сети от другой было в алгоритме поиска. Сеть Gnutella 0.4 использовала метод поиска query flooding, а сеть Gnutella2 использует метод обхода сети или метод блужданий. Ключевая идея метода случайных блужданий (Random Walkers algorithm, RWA) заключается в том, что каждый узел случайным образом пересылает сообщение с запросом, именуемое «посылкой», одному из своих соседних узлов. Чтобы сократить время, необходимое для получения результатов, идея одной «посылки» расширена до «k посылок», где k — число независимых посылок, последовательно запущеных от исходного узла.
Ожидается, что «k посылок» после T шагов достигнет тех же результатов, что и одна посылка за kT шагов. Этот алгоритм напоминает метод RBFS(Метод случайного широкого первичного поиска), но в RBFS предполагается экспоненциальное увеличение пересылаемых сообщений, а в методе случайных блужданий — линейное. Оба метода — и RBFS, и RWA — не используют никаких явных правил, чтобы адресовать поисковый запрос к наиболее релевантному содержанию.
Еще одной методикой, подобной RWA, является адаптивный вероятностный поиск (Adaptive Probabilistic Search, APS). В APS каждый узел развертывает локальный индекс, содержащий значения условных вероятностей для каждого соседа, который может быть выбран для следующего перехода для будущего запроса. Главное отличие от RWA в данном случае — это то, что в APS узел использует обратную связь от предыдущих поисков вместо полностью случайных переходов. Такой способ поиска имеет несколько преимуществ. Он более эффективен, так как продолжение поиска в сети, не увеличивает сетевой трафик экспоненциально. Запросы не направляются через большое количество посредников, и это позволяет клиенту остановить поиск при получении требуемого количества информации. Одновременно повышается сложность созданной сети, поэтому может потребоваться специализированное обслуживание сети.
Также появилось различие в терминологии. Узлы, поддерживающие работу сети в Gnutella, называются Ultrapeer, а в сети Gnutella2 — Hub. Также изменилась топология сети.
Спецификация Gnutella2 состоит из двух основных частей: Gnutella2 Network, в которой описывается архитектура сети, и Gnutella2 Standard, где содержатся требования к приложениям, работающим на базе Gnutella2. Обмен информацией в сети может вестись с помощью двух протоколов - UDP и TCP. Сама сеть будет состоять из двух типов узлов: центральных (hub) и концевых (leaf). Главная роль в организации работы сети принадлежит центральным узлам. Они выбираются из наиболее мощных и наиболее доступных компьютеров, способных выполнять функции обслуживания большого числа запросов.
В качестве базового сетевого протокола Gnutella применяет IP, тогда как коммуникации между узлами определяются протоколом прикладного уровня, поддерживающим четыре типа сообщений: