Information.svg
Стиль этой статьи неэнциклопедичен или нарушает нормы русского языка.
Статью следует исправить согласно стилистическим правилам проекта.

Gnutella — полностью децентрализованная файлообменная сеть в рамках Интернета, потомок Napster, отличается принципиальным отсутствием центрального сервера. Сеть формируется, когда один пользователь Gnutella соединяется с другим пользователем, после чего они могут обмениваться доступной информацией. Обмениваться можно файлами любых форматов, есть множество удобных функций. Система позволяет задавать несколько поисков одновременно: получив результаты поиска на один запрос, можно задать другой, и он будет искать, пока вы разбираетесь с предыдущим, это экономит время. Результаты поиска достаточно подробны и неограниченны. Поддерживается докачка. Каждому файлу в результатах поиска выставляет баллы, которые показывают, как хорошо будет качаться файл. Сеть действительно большая, хотя то, насколько вы ее сможете осмотреть, зависит от скорости канала и мощности компьютера. Это связано с тем, что каждый подключенный пользователь — есть узел, обрабатывающий и пропускающий поисковые запросы. Вы можете даже наблюдать за этим сами. Количество связанных с вами хостов зависит также от мощности компьютера и скорости сети.

История появления сети GnutellaПравить

America-on-Line началa создавать сеть Gnutella с корыстными целями. Собрали лучших сетевых программистов из подразделения Nullsoft, которые и придумали непобедимое чудо сетевых технологий. 14 марта 2000 г. появилась программа размером 104 килобайта, которая давала возможность пользователю искать и обмениваться всеми видами файлов с другими владельцами Gnutella без всяких серверов. Но так получилось, что AOL объединилась со звукозаписывающей компанией и поняла, какую свинью она себе подложила. Сеть попытались закрыть, но она оказалась непобедимой, плюс, непосредственно создатели (Джастин Френкель и Том Пеппер) сопротивлялись. От AOL они ушли и стали строить эту сеть сами. Поиск в Gnutella построен по собственной особой технологии без центральных узлов gPulp. Узлами здесь служат сами пользователи, а саму программу вывести из строя невозможно. Поэтому, даже если самих программистов «раскулачат», сеть закрыть никто не сможет.

Механизм работыПравить

  1. Пользователь загружает программу.
  2. При первом запуске программы (назовем наш узел — A), пользователь сообщает клиенту IP-адрес одного из функционирующих узлов (условно узел B). Данная процедура может и не повторяться в будущем, но при первом запуске она обязательна. Это один из самых «скользких» моментов в реализации данной сети: без адреса хотя бы одного из работающих в данный момент узла пользователь не сможет подключиться. В принципе, существует целый ряд централизованных серверов, предоставляющих подобную информацию (connect1.gnutellanet.com:6346, gnutella.hostscache.com и др.), но такая схема уже приводит к некой централизованности.
  3. Программа посылает запрос узлу B на предмет подтверждения активности.
  4. Узел В подтверждает свою активность, если нет — см. шаг 2.
  5. Узел А посылает узлу В так называемый Ping-запрос. В этом запросе указывается, помимо прочей информации, TTL (Time To Live) — число, означающее, сколько переходов от узла к узлу данный запрос может совершить. Обычно TTL равняется 7.
  6. Другие узлы, получив Ping-запрос, посылают Pong-ответ, в котором содержится IP-адрес отправителя, номер порта и минимальная информация о файлах в фонде обмена.
  7. Кроме того, узлы, получившие Ping-запрос, уменьшают TTL данного запроса на единицу, и если TTL больше 0, а также если данный запрос они не получали ранее (защита от зацикливания), рассылают его своим соседям.
  8. Каждый узел, получивший Ping-запрос, отсылает Pong-ответ, тем же путем, которым этот запрос получил.
  9. Когда Pong-ответы доходят до своего источника (то есть нашего узла А), программа составляет список доступных узлов. Как правило, этот список насчитывает от 2 до 10 тысяч узлов и от 500 тысяч до миллиона файлов в обменном фонде.
  10. Пользователь вводит запрос (например, название mp3-файла). Программа рассылает запрос на поиск файла всем узлам в списке, а далее просто ждет входящих сообщений.
  11. Каждый узел, получивший запрос на поиск, ищет в своем фонде указанный файл. Если файл не найден, то узел просто не отвечает.
  12. Если файл найден, узел отсылает инициатору запроса ответ с информацией о файле и о себе (IP-адрес).
  13. Получив ряд ответов, программа выбирает один из узлов, устанавливает с ним стандартное HTTP-соединение и загружает файл. При этом все сообщения (от Ping-запроса до скачивания файла) посылаются по HTTP, что затрудняет их отслеживание и блокировку.

Некоторые клиенты Gnutella работают в соответствии с приведенным алгоритмом, а некоторые нет. Связано это с тем, что Gnutella — это, прежде всего, протокол взаимодействия узлов (такой же, как HTTP, например), и в нем не определены некоторые из аспектов этого взаимодействия.

КлиентыПравить

На данный момент Gnutella является одной из наиболее популярных файлообменных сетей. Работа сети Gnutella непрерывно совершенствуется благодаря усилиям разработчиков множества клиентов сети:

СпециализированныеПравить

МультисетевыеПравить

Реакция со стороны FSFПравить

Название Gnutella первоначально было игрой слов GNU, так как разработчики планировали выпустить исходный код под лицензией GNU GPL, и “Nutella” - марки любимых конфет этих разработчиков. Однако, ни самая первая программа, ни соответствующие современные проекты не являются свободным ПО, включая использующие протокол Gnutella gtk-gnutella, mutella и gnucleus. Кроме того, Фонд свободного программного обеспечения сосредоточен на свободе копирования и изменения программного обеспечения, в то время как Gnutella - это, прежде всего, сеть обмена музыкальными файлами. И хотя существует некоторое сходство в вопросах этики копирования программного обеспечения и музыкальных записей, FSF попросила разработчиков Gnutella изменить название программы для избежания путаницы.[1]


См. такжеПравить

СсылкиПравить