Gnutella

Материал из свободной русской энциклопедии «Традиция»
Перейти к: навигация, поиск

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]


См. также[править]

Ссылки[править]