Смекни!
smekni.com

работа по дисциплине: «Сети ЭВМ и телекоммуникации» на тему: «P2P сети» (стр. 4 из 6)

Более подробная информация предоставлена в неофициальной спецификации протокола.

Архитектура сети:

Сеть Direct Connect – централизованная. Архитектура сети и ее философия сходны с OpenNap. Также как и в Napster, создатели Direct Connect разрабатывают клиентское и серверное ПО. Отличие состоит в том, что поддержка сети возлагается на ее участников, некоторые из которых организуют хабы. В сети Direct Connect не предусмотрены система хэширования или взаимодействие серверов между собой для создания общей файловой базы. Direct Connect является отличным решением для локальной файлообменной P2P сети.

Особенности Direct Connect сетей по сравнению с другими P2P сетями:

  • развитый чат;
  • возможность получить список файлов пользователя в виде древовидной структуры папок;
  • возможность скачивать целые папки с файлами;
  • присутствие привилегированных пользователей — операторов, обладающих расширенным набором возможностей управления хабом, в частности, следящих за соблюдением пользователями правил чата и файлообмена;
  • идеальное решение для локальных сетей: файлообменная система и чат;
  • скачивание файлов с автоматической докачкой после обрыва связи;
  • ограничения на минимальное количество расшаренного материала;

Наиболее популярные клиенты:

· DC++;

· StrongDC++;

· LinuxDC++;

Сводная таблица №3

DC++

StrongDC++

LinuxDC++

Бесплатный

+

+

+

Открытые исходные тексты

+

-

+

Windows

+

+

-

Linux

-

-

+

Mac OS X

-

-

-

Русский язык интерфейса

+

+

-

Шифрование соединений

-

-

-

Многопоточная закачка

+

+

+

U/D лимиты

-/-

+/+

-

Ограничение скорости передачи данных

-

+

+

Поддержка приоритетов

+

+

+

Наличие чата

+

+

+

Удаленное управление через web-интерфейс

-

-

-

Интеграция с плеером

-

Winamp

-

Проверка расшареного

-

+

+

Автоматическое обновление продукта

+

+

-

Gnutella и Gnutella2

Gnutella — это одна из первых P2P сетей, которая была создана в 2000 г. Каждый подключенный к сети пользователь — является узлом, обрабатывающим и пропускающим поисковые запросы – поэтому возможности, предоставляемые сетью ограничиваются скоростью канала и мощностью компьютера, именно от этих параметров зависит количество связанных хостов.

Протокол, на котором работает Gnutella, не предназначен для передачи файлов - это протокол, обеспечивающий поиск компьютеров и файлов, на его базе построена поисковая система InfraSearch. В связи с серьезными недостатками сети Gnutella пользователи сейчас отдают предпочтение сети Gnutella2, однако сеть Gnutella продолжает функционировать. Протокол Gnutella2 не является более новой версией Gnutella, а является его ответвлением.

Отличия сетей Gnutella и Gnutella2.

Протокол 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). Главная роль в организации работы сети принадлежит центральным узлам. Они выбираются из наиболее мощных и наиболее доступных компьютеров, способных выполнять функции обслуживания большого числа запросов.

Принцип работы:

  1. При первом запуске клиентской программы(узел — A), пользователь передает в клиент IP-адрес одного из работающих в сети узлов (узел B). Не зная ни одного адреса работающих узлов, пользователь не имеет возможности установить соединение с сетью. Данная информация предоставляется рядом централизованных серверов.
  2. Клиент посылает запрос узлу B на подтверждение подключения к сети. Если узел B не активен , то клиент посылает ещё один запрос, иначе узел А также посылает второму узлу Ping-запрос. В котором указывает кроме общей информации, содержится Time To Live(TTL) — число, показывающее, количество переходов, который может совершить данный запрос от узла к узлу. При прохождении узла TTL уменьшается на 1(если TTL больше 0 и при условии что они не получали этот запрос ранее - способ защиты от зацикливания). Далее узел рассылает запрос своим соседям. По умолчанию Time To Live = 7.
  3. Все узлы, получившие Ping-запрос, отправляют Pong-ответ, в котором находятся IP-адрес отправителя ответа, номер порта и информация о файлах в фонде обмена. Pong-ответ отправляется тем же путем, что и пришел Ping-запрос. При получении клиентом(узлом А) ответов - составляется список доступных клиенту узлов.
  4. При отправлении пользователем поискового запроса – данный запрос рассылается программой по всем узлам из списка, а клиент ждет входящих сообщений. Каждый из узлов - получивший этот запрос, ищет указанный файл в своем фонде. Если искомый файл был найден, то узел посылает ответ с информацией о файле и о себе (IP-адрес) источнику запроса. Иначе узел не отвечает. После получения ответов, программа выбирает один узел из всех приславших ответы и устанавливает стандартное HTTP-соединение, после чего происходит загрузка файла. Все сообщения (от Ping-запроса до скачивания файла) посылаются по HTTP, что затрудняет их отслеживание и блокировку.

В качестве базового сетевого протокола Gnutella применяет IP, тогда как коммуникации между узлами определяются протоколом прикладного уровня, поддерживающим четыре типа сообщений: