Клиент для файлообменной сети Gnutella.

gtk gnutella 001

Gtk-Gnutella — простой C (си) / GTK+ графический клиент для файлообменной сети Gnutella.

gtk gnutella 002

Gnutella — полностью децентрализованная файлообменная сеть, отличающаяся принципиальным отсутствием центрального сервера. Сеть является потомком первой в мире пиринговой файлообменной сети Napster работавшей в рамках Интернета, созданной Napster"ом (ник человека создавшего сеть). Сеть индексировала на своём центральном сервере в основном звуковые файлы зарегистрированных пользователей и позволяла скачивать их (была основана на протоколе IRC).

gtk gnutella 003

Название сети Gnutella первоначально было игрой слов GNU (так как разработчиками планировалось выпустить исходный код под лицензией GNU GPL) и "Nutella" (марка любимых конфет разработчиков). Однако ни самая первая версия клиента, ни большинство современных клиентов сети не являются свободным ПО.

gtk gnutella 004

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

gtk gnutella 005

Обмениваться в сети Gnutella можно файлами любых форматов, а в результате полной децентрализации сеть практически невозможно уничтожить, так как для этого потребуется вывести из строя каждый узел сети (устройство соединённое с другими устройствами как часть компьютерной сети).

gtk gnutella 006

Создавать сеть Gnutella начала американская компания America-on-Line (AOL), с корыстными целями. Были собраны лучшие сетевые программисты, из подразделения Nullsoft (компания разработчик ПО, купленная AOL и ставшая её подразделением), которые и придумали это непобедимое чудо сетевых технологий.

gtk gnutella 007

14 марта 2000 года появилась программа размером 104Кб, которая давала возможность пользователю искать и обмениваться всеми видами файлов с другими пользователями сети Gnutella без всяких серверов. Но получилось так что AOL объединилась со звукозаписывающей компанией и поняла какую ошибку совершила создав Gnutella.

gtk gnutella 008

Сеть сразу попытались закрыть, но она оказалась непобедимой! Плюс ко всему непосредственные создатели сети (Джастин Френкель, Том Пеппер и др..) воспротивились закрытию Gnutella, ушли из AOL и стали строить эту сеть сами.

gtk gnutella 009

Gnutella построена по собственной, особой технологии, позволяющей обходится без центральных узлов, узлами сети служат сами пользователи (поэтому пока у сети есть пользователи, сеть закрыть никто не сможет).

gtk gnutella 010

При первом запуске клиента сети, пользователь сообщает ему IP-адрес одного из функционирующих узлов (без адреса хотя бы одного из работающих в данный момент узла, пользователь не сможет подключится). При подключении клиент получает от узла, с которым ему удалось соединится, список из пяти активных узлов. Данная процедура может и не повторяться в будущем, но при первом запуске клиента она обязательна (это один из самых "скользких" моментов в реализации сети).

gtk gnutella 011

Gtk-Gnutella это простой, эффективный, надёжный и быстрый клиент для сети Gnutella. Он был оптимизирован для минимального потребления системных ресурсов, что бы обеспечить комфортную работу в сети даже на слабом оборудовании. Клиент имеет множество настроек, полную поддерживает работу в сети Gnutella (в том числе и многие её альтернативные реализации), DNT (класс децентрализованных распределённых систем), имеет поддержку протокола UPnP, поддержку Magnet-ссылок и TLS шифрования.

gtk gnutella 012

Для начала использования пользователь Gtk-Gnutella вводит поисковый запрос (определив формат файла), клиентом рассылается запрос на поиск файла всем узлам в списке, а далее просто ждёт входящих сообщений. Каждый узел, получивший запрос на поиск, ищет в своём фонде указанный файл. Если файл не найден, то узел просто не отвечает...

gtk gnutella 013

Если фал найден, то узел отсылает инициатору запроса ответ с информацией о файле и о себе (IP-адрес). Получив ряд ответов, выбирается один из узлов, устанавливается с ним стандартное HTTP-соединение и загружается файл. При этом все сообщения (от Ping-запроса до скачивания файла) посылаются по HTTP, что затрудняет их отслеживание и блокировку.

gtk gnutella 014

В Gtk-Gnutella можно задавать несколько поисков одновременно, ещё не получив результат поиска на один запрос (для экономии времени) можно задать другой запрос... Результаты поиска достаточно подробны и ограничивается только пользовательскими настройками.

gtk gnutella 015

Gtk-Gnutella имеет все функциональные возможности характерные для большинства файлообменных клиентов, интегрируется в область уведомлений (системный трей), поддерживает докачку, имеется возможность ограничения скорости загрузки и отдачи (глобально и по каждому файлу), каждый загружаемый файл может быть оценён, а по его оценке (баллам) можно приблизительно оценить как будет загружаться файл.

gtk gnutella 017

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

gtk gnutella 018

gtk gnutella 019

Лицензия: GNU General Public License (GPL)

gtk gnutella 016

Домашняя страница

Страница на sourceforge.net