Gnutella2


Gnutella2, G2 — файлообменный OpenSource P2P-протокол, используемый программой Shareaza. Разработан её автором как форк протокола Gnutella; не был положительно оценён участниками gnutella‐форума.

Источниками файла могу служить и обычные HTTP-серверы, но обмен адресами этих серверов отключён в клиентах.

Через некоторое время клиент оценивает возможности системы и при достаточном их уровне переключается в режим хаба, подключается к множеству хабов и обслуживает сотни клиентов.

Протокол Gnutella2 не является более новой версией Gnutella, а является его форком (ответвлением). Приведённые преимущества, в основном, относятся ко времени создания Gnutella2.

В общем, две сети похожи между собой, отличаясь форматами пакетов и методом поиска. Формат пакета сети Gnutella в течение долгого времени подвергался критике из‑за того, что в нём изначально не планировалось расширение возможностей. Со временем различные разработчики добавляли новые возможности в формат пакета и его структура стала неэффективной и сложной для использования. Сеть Gnutella2 создавалась с учётом ошибок тогдашней сети Gnutella и изначально разрабатывалась с возможностью расширения. Кроме того, сеть изначально включила в себя расширения, добавленные различными разработчиками к сети Gnutella.

Другое серьёзное отличие одной сети от другой было в алгоритме поиска. Сеть Gnutella 0.4 использовала метод поиска query flooding, а сеть Gnutella2 использует метод обхода сети. При этом методе узел, с которого осуществляется поиск, собирает список узлов (hub) и связывается с ними напрямую, по одному за раз. Такой способ поиска имеет несколько преимуществ. Он более эффективен, так как продолжение поиска в сети не увеличивает сетевой трафик экспоненциально. Современная версия протокола Gnutella, 0.6, не имеет такой проблемы.[1] Запросы не направляются через большое количество посредников, и это позволяет клиенту остановить поиск при получении требуемого количества информации. Одновременно повышается сложность созданной сети, поэтому может потребоваться специализированное обслуживание сети.