Введение
GTK Gnutella – это приложение для файлообмена по технологии peer-to-peer, работающее в сети Gnutella. GTK Gnutella использует инструментарий GTK+ для создания графического пользовательского интерфейса. Распространяется по лицензии GNU General Public License, что делает GTK Gnutella свободным программным обеспечением.
История
Изначально gtk gnutella был написан с целью имитировать внешний вид оригинального клиента Nullsoft Gnutella. Изначальный автор, Ян Гроссель, прекратил разработку клиента в начале 2001 года. Впоследствии Рафаэль Манфреди стал главным архитектором программного обеспечения, и с тех пор клиент находится в активной разработке. Версии, выпущенные после июля 2002 года, уже не соответствуют внешнему виду оригинального клиента Nullsoft.
Особенности
gtk gnutella программируется на C с акцентом на эффективность и переносимость, не будучи минималистичным, а скорее используя большинство современных функций сети Gnutella. Поэтому он требует меньше ресурсов (таких как процессор и/или оперативная память), чем основные клиенты Gnutella. Он также может использоваться как автономный клиент Gnutella, не требующий GTK+ вообще. gtk gnutella имеет фильтрующий механизм, который может уменьшить количество спама и других нерелевантных результатов. gtk gnutella поддерживает широкий спектр функций современных клиентов Gnutella. gtk gnutella был первым клиентом Gnutella, поддерживающим IPv6 и шифрование с использованием TLS. Он может обрабатывать и экспортировать magnet-ссылки. Он имеет развитые функции интернационализации, поддерживая английский, немецкий, греческий, французский, венгерский, испанский, японский, норвежский, голландский и китайский языки. gtk gnutella также имеет поддержку для предотвращения спама и других враждебных действий пиров. Несколько дистрибутивов программного обеспечения предоставляют предварительно скомпилированные пакеты, но они обычно устарели, поскольку многие дистрибутивы замораживают старые стабильные версии. Сеть Gnutella выигрывает от запуска последней версии, поскольку списки пиров и враждебных IP-адресов быстро меняются, что делает сборку последнего снимка SVN оптимальным вариантом. Также доступны предварительно скомпилированные пакеты для многих дистрибутивов Linux. Пользователи, обеспокоенные безопасностью, могут скомпилировать программу самостоятельно. В gtk gnutella используется dist в качестве системы сборки и конфигурации вместо Autoconf. Большинство пользователей знакомы только с конфигурационными скриптами, генерируемыми последним. Еще одна сложность для новичков – настройка NAT-устройств для обеспечения полной сетевой связности gtk gnutella. gtk gnutella, как и любой клиент Gnutella, пригоден для использования за файрволом или маршрутизатором, но с некоторыми ограничениями, если он не может принимать входящие TCP-соединения или UDP-пакеты. Чтобы облегчить эту задачу для новичков, gtk gnutella реализует протоколы UPnP и NAT PMP. gtk gnutella поддерживает функции для загрузки больших файлов (видео, программ и образов дисков). Версия 0.96.4 поддерживает Tiger tree hash serving, а версии после 0.96.5 поддерживают Tiger tree хеши для загрузки и скачивания. Tiger tree хеширование и другие функции gtk gnutella делают передачу файлов такой же эффективной, как BitTorrent. В частности, gtk gnutella поддерживает частичный обмен файлами, удаленное добавление в очередь и файлы размером более 4 ГБ. Проверка перекрытий была единственным механизмом защиты от поврежденных данных до версий 0.96.4. Проверка перекрытий не защищает от злонамеренного повреждения, как это делает Tiger tree хеширование. Версия 0.96.6 представила предварительную поддержку Kademlia DHT, которая была завершена в версии 0.96.7. DHT заменяет поиск по SHA-1 при поиске альтернативных источников для известного файла или прокси-серверов. В версии 0.96.7 DHT включен по умолчанию. LimeWire впервые разработала DHT и назвала ее Mojito DHT. Версия 0.96.9 представила полную нативную поддержку UPnP и NAT PMP, что значительно упрощает использование с совместимым маршрутизатором, поскольку больше нет необходимости вручную перенаправлять порты в файрволе. В этой версии код также был портирован на Microsoft Windows, однако Windows-порт все еще считается бета-версией из-за недостаточного тестирования. Версия 0.96.9 также ввела важную защиту DHT от Sybil-атак, используя алгоритмы, основанные на статистических свойствах. Версия 0.97 была крупным релизом, представившим клиентскую поддержку HTTP-конвейеризации, запросы "Что нового?", фильтрацию запросов MIME-типов, поддержку GUESS (Gnutella UDP Extension for Scalable Searches) и частичный запрос файлов. Хотя многие поставщики Gnutella уже поддерживали GUESS на серверной стороне, gtk gnutella представила клиентскую поддержку, а также улучшила оригинальные спецификации протокола, чтобы сделать его действительно удобным в использовании. Версия 0.98.2 содержит незначительный патч для исправления выделения памяти malloc и проблем с многопоточностью, в основном на операционных системах Ubuntu 11.10. Эта версия gtk gnutella 2011 года также была посвящена памяти Денниса Ричи (1941–2011). Версия 0.98.4 добавила RUDP (надежный UDP) и улучшила частичную передачу файлов. Версия 1.1 – крупный релиз, добавивший поддержку G2: gtk gnutella теперь будет подключаться к сети G2 в режиме leaf. Это позволяет осуществлять поиск с узлов G2 и передавать локальные запросы в сеть G2. Обмен файлами с хостами G2 полностью совместим и разрешен без ограничений.
Популярность
gtk gnutella не входит в число наиболее популярных клиентов при сканировании сети GnutellaNet. Предложения разработчиков gtk gnutella были учтены во многих gnutella-клиентах. В 2011 году расширения для gtk gnutella занимали третье место по количеству на GDF (Gnutella Developer Forum), уступая только Limewire и Bearshare. В 2002 году Salon включил gtk gnutella в список пяти самых популярных gnutella-приложений. XoloX и Toadnode, также представленные в этом списке, больше не поддерживаются активно.