Михаил Браво
В то время как Napster, признанный судом запрещённым, пытается сохранить своё существование, в интернете продолжают работать иные p2p-системы для обмена и поиска файлов. Одной из таких является Gnutella. Её ключевым преимуществом считается децентрализованная архитектура, которая практически исключает возможность полного закрытия системы.
В феврале федеральный Апелляционный суд Северного округа Калифорнии запретил деятельность неоднократно проблемного сервиса Napster. Сейчас компания борется за выживание, но шансы на успех остаются весьма сомнительными, хотя и не полностью исключены. Если Napster удастся сохранить работу, то это произойдёт в преобразованном виде, существенным образом отличающемся от прежнего.
Стоит подчеркнуть, что потенциальный крах Napster не означал бы исчезновение технологии в целом. Напротив, Napster строился на базе одного центрального сервера, что и делало систему уязвимой. При этом программное обеспечение для сервера — OpenNap — распространяется свободно с открытым исходным кодом. Благодаря этому существует множество серверных копий, схожих с Napster. Хотя базы данных у них значительно скромнее, и не существует единого протокола для их объединения, они продолжают работать.
Появление Napster стимулировало развитие нового понятия из области P2P (peer-to-peer) технологий, или, как предлагает Роман Лейбов, Ч2Ч (человек-to-человек). Этим понятием стала Gnutella.
Gnutella представляет собой протокол, послуживший основой первой в своём роде распределённой системы поиска файлов. Для её функционирования не требуется центральный сервер — каждая копия программы, использующая Gnutella, одновременно выступает в роли клиента и сервера.
История создания Gnutella весьма интересна. Команда Nullsoft, известная разработкой WinAmp, была приобретена корпорацией AOL. Gnutella была создана именно этой группой разработчиков тайно от AOL. После того, как программа появилась в открытом доступе, в AOL потребовали её убрать, что было сделано, но на тот момент распространение уже набрало силу. Это произошло в марте 2000 года и вызвало волну слухов и обсуждений новой системы, которая, возможно, превзойдёт Napster.
С усилением правовых проблем Napster многим стала пророчить роль его наследника система Gnutella. Однако после стремительного четырёхмесячного роста развитие протоколов и самой системы замедлилось. Спустя месяц после пика число пользователей превысило возможности системы, начался спад. Поиск и скачивание файлов стали серьёзно замедляться, что повлекло за собой сокращение аудитории и, соответственно, уменьшение эффективности поиска.
Тем не менее, ближе к концу года были найдены пути улучшения ситуации, разработчики получили новый импульс, и система вновь начала развиваться.
Ниже приведены основные характеристики Gnutella, которые обусловили её непростой путь:
- В начале была доступна только бинарная версия программы — без исходного кода или официальной спецификации протокола. Последующие независимые разработки опирались на результаты обратной инженерии протокола.
- Первоначальный дизайн программы не предполагал масштабирования на неограниченное число пользователей — максимальное количество планировалось на уровне нескольких сотен, возможно тысяч.
- Протокол Gnutella предназначен для поиска компьютеров и файлов, а передача самих данных осуществляется напрямую между пользователями по протоколу HTTP (в отличие от Napster, где используется собственный протокол передачи). Многие популярные клиенты, отдающие файлы, имеют встроенные миниатюрные веб-серверы.
- Множество независимых разработчиков создали собственные приложения, использующие протокол Gnutella.
Из перечисленного вытекают основные сложности, часть из которых уже устранена, а над частью ещё продолжают работать создатели системы.
- Появление несовместимых версий клиентов. Несовместимые или частично совместимые программы способны искажать сообщения и нарушать маршрутизацию. Полностью исключить это нельзя, но строгая фильтрация сообщений в соответствии с официальными стандартами значительно снижает проблему. Наиболее популярные Gnutella-клиенты реализуют такую фильтрацию.
- Трудности подключения к серверам. Первые версии клиентов не имели списков серверов для запуска, а часто случайно найденные адреса были неработающими. В ответ появились сервисы с адресами стабильных серверов и автоматическим подключением к ним в клиентах.
- Ограниченное число результатов поиска. Из-за перегрузки сети компьютеры с медленным интернетом стали узким местом, прерывая дальнейшую трансляцию запросов. Это привело к фрагментации сети на небольшие подсети с ограниченным охватом и снижению результата поиска. Проблему частично решают специальные сервера-«отражатели» с быстрыми подключениями, выступающие в роли прокси для пользователей с медленными каналами.
- Невозможность скачать найденный файл — пожалуй, самый серьёзный изъян. Несмотря на большое число результатов, пользователи часто не могут получить нужный контент. Главная причина — дисбаланс между числом скачивающих и отдающих файлы. Поскольку пользователя, предоставляющих контент, значительно меньше, пропускная способность используется крайне неравномерно, что вызывает недоступность файлов или обрывы загрузок. Разработчики пытаются технически компенсировать эту асимметрию.
Некоторые веб-сайты предлагают поиск и скачивание файлов через Gnutella, не предоставляя возможности отдавать файлы обратно. В последних версиях популярных клиентов, таких как LimeWire и BearShare, запросы с таких сайтов блокируются — пользователю предлагают скачать полнофункциональный двусторонний Gnutella-клиент. Более того, развивается практика введения коэффициента соотношения между скачанными и выданными файлами, стимулирующая пользователей активнее делиться контентом. Это напоминает прежние BBS с соотношением download/upload или современные проекты вроде MojoNation.
Таким образом, несмотря на то, что Gnutella почти исчезла из заголовков новостей в контексте паники вокруг Napster, она продолжает работать и развиваться, число её пользователей растёт, а перспективы остаются многообещающими. Скорее всего, будущее системы зависит от успеха разработчиков в объединении усилий для предотвращения фрагментации развития и направления его либо на полную стандартизацию протоколов, либо хотя бы на децентрализованную, но чётко организованную структуру, схожую с моделью развития ядра Linux.
В настоящее время ежедневная аудитория Gnutella оценивается от 80 до 200 тысяч пользователей.