Gnutella2, G2 — файлообменный OpenSource P2P-протокол, используемый программой Shareaza. Разработан её автором как форк протокола Gnutella; не был положительно оценён участниками gnutella‐форума.
Работа сети
Только что установленный клиент получает список хабов со специального сервера, который производит мониторинг сети и учёт активных хабов (это происходит только при пустом кэше хабов у клиента) и записывает их в кэш. Клиент пытается установить постоянное соединение с двумя активными хабами, проходя по адресам в кэше. Клиент запрашивает список активных хабов, соединённых с ним, и поочерёдно отправляет поисковый запрос на них. Клиент получает ответы напрямую от клиентов, у которых есть файл или информация о нём (призрак). Клиент соединяется с другими клиентами и получает от них информацию: о других источниках файла; о файле (разрешение, частота кадров, длительность и т. д.); превью файла (маленькое изображение кадра из видео либо миниатюра изображения); мнение других о файле и его оценку. Клиент соединяется с источниками и начинает параллельную загрузку файла по протоколу HTTP с несколькими новыми хедерами.
Источниками файла могу служить и обычные HTTP-серверы, но обмен адресами этих серверов отключён в клиентах.
Через некоторое время клиент оценивает возможности системы и при достаточном их уровне переключается в режим хаба, подключается к множеству хабов и обслуживает сотни клиентов.
Отличие Gnutella2 от Gnutella
Протокол Gnutella2 не является более новой версией Gnutella, а является его форком (ответвлением). Приведённые преимущества, в основном, относятся ко времени создания Gnutella2.
В общем, две сети похожи между собой, отличаясь форматами пакетов и методом поиска. Формат пакета сети Gnutella в течение долгого времени подвергался критике из‑за того, что в нём изначально не планировалось расширение возможностей. Со временем различные разработчики добавляли новые возможности в формат пакета и его структура стала неэффективной и сложной для использования. Сеть Gnutella2 создавалась с учётом ошибок тогдашней сети Gnutella и изначально разрабатывалась с возможностью расширения. Кроме того, сеть изначально включила в себя расширения, добавленные различными разработчиками к сети Gnutella.
Другое серьёзное отличие одной сети от другой было в алгоритме поиска. Сеть Gnutella 0.4 использовала метод поиска query flooding, а сеть Gnutella2 использует метод обхода сети. При этом методе узел, с которого осуществляется поиск, собирает список узлов (hub) и связывается с ними напрямую, по одному за раз. Такой способ поиска имеет несколько преимуществ. Он более эффективен, так как продолжение поиска в сети не увеличивает сетевой трафик экспоненциально. Современная версия протокола Gnutella, 0.6, не имеет такой проблемы. Запросы не направляются через большое количество посредников, и это позволяет клиенту остановить поиск при получении требуемого количества информации. Одновременно повышается сложность созданной сети, поэтому может потребоваться специализированное обслуживание сети.
Также появилось различие в терминологии. Узлы, поддерживающие работу сети в Gnutella, называются Ultrapeer, а в сети Gnutella2 — Hub. Также изменилась топология сети. В Gnutella Ultrapeer поддерживают небольшое количество связей с листьями (leaf) и большое количество связей с другими узлами сети (c ultrapeer и peer). В Gnutella2, наоборот, Hub поддерживает связь с большим количеством листьев (leaf) и малое количество связей с другими узлами (hub). Такое различие в топологиях вызвано тем, что различные методы поиска имеют различные оптимальные топологии сети.
Клиенты
Список клиентов сети Gnutella2: Shareaza (Windows), открытые исходные тексты на языке C++ под лицензией GPL; Kiwi Alpha (Windows), закрытые исходные тексты; Morpheus (Windows), закрытые исходные тексты; Gnucleus (Windows), открытые исходные тексты ядра на языке C/C++ под лицензией LGPL; Adagio (Cross Platform), открытые исходные тексты на языке Ada под лицензией GPL; Pocket G2 (Windows Pocket PC), закрытые исходные тексты; FileScope (Cross Platform), открытые исходные тексты на языке C# под лицензией GPL; MLDonkey (Cross Platform), открытые исходные тексты на языке Ocaml под лицензией GPL; TrustyFiles (Windows), закрытые исходные тексты; Sharelin (Cross Platform), открытые исходные тексты на языке C++ под лицензией GPL.
См. также Анонимные сети Одноранговые сети Gnutella
Примечания
Ссылки Статистика сети Gnutella2 Официальный сайт
Категория:Gnutella Категория:Анонимные файлообменные сети Категория:Файлообменные протоколы