В то время, как запрещенный решением суда Napster пытается извернуться и выжить, в Сети продолжают работать и другие p2p-системы поиска и обмена файлами. Одна из них - Gnutella. Очевидным преимуществом Gnutella является ее децентрализованность - поэтому такую систему закрыть практически невозможно.
12 февраля текущего года Апелляционный суд Северного округа Калифорнии запретил деятельность многострадального сервиса Napster. Сейчас 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, Gnutell'у стали прочить в преемники. Однако,
после четырех месяцев бурного развития разработка системы и протоколов, на которых
она базировалась, постепенно затормозилась. Еще через месяц все
увеличивающееся количество пользователей превзошло технические возможности
системы и наступил коллапс. Поиск, а особенно скачивание файлов, стали
происходить чудовищно медленно, а так как из-за этого стало уменьшаться число
пользователей, то и возможность найти что-то нужное в системе стала сходить на
нет.
Тем не менее, ближе к концу года было найдено несколько способов
исправить положение, разработчики воодушевились, и система снова пошла в
гору.
Попробуем перечислить характерные особенности Gnutella, обеспечившие достаточно замысловатый путь ее эволюции:
Первоначально была выпущена только бинарная версия программа - без исходных
текстов или спецификаций протоколов. Все, что разрабатывалось позднее независимыми разработчиками, никак уже не связанными с "нульсофтовцами",
базировалось на результатах reverse engineering (реконструкции протокола).
Первоначальный дизайн программы не был рассчитан на неограниченную
аудиторию пользователей - скорее на несколько сотен, в крайнем случае -
тысяч человек.
Протокол, на котором работает Gnutella, не предназначен для передачи
данных. Его "специальность" - находить компьютеры и их файлы. Передача
найденного осуществляется непосредственно между запрашивающим и "отдающим"
по протоколу HTTP (у Napster - собственный протокол для передачи файлов). Популярные приложения, отдающие файлы, содержат внутри
себя свои собственные миниатюрные веб-серверы.
Многие независимые разработчики выпустили приложения, использующие протокол
Gnutella.
Взглянув на этот список, можно вывести и основные проблемы, часть из которых в
той или иной степени решена, а над частью которых продолжают думать разработчики.
Появление несовместимых версий. Несовместимое или не полностью совместимое
приложение может исказить передаваемое сообщение или нарушить маршрутизацию
сообщений. К сожалению, полностью исключить вероятность
этого невозможно, однако, реализация строгой фильтрации сообщений на предмет
полного соответствия опубликованным стандартам протокола сводит этот нежелательный эффект к
минимуму. Наиболее популярные из используемых Gnutella-приложений
осуществляют такую фильтрацию.
Плохая связь с серверами. Первые версии приложений не имели никакого дефолтного списка серверов, с которыми можно связаться при старте программы. Случайно
же найденные в результате поиска адреса часто указывали на нефункционирующие в данный момент
сервера. Решением стала организация нескольких служб, выдающих адреса
устойчиво работающих серверов, и реализация авто-коннекта с использованием
этих служб в самих приложениях.
Недостаточное количество результатов поиска. По мере перегрузки системы компьютеры пользователей с обычными модемами стали узкими местами, в которых часто
обрывалась дальнейшая передача запросов. Это привело к фрагментации системы
на множественные подсистемы меньших размеров, а это, в свою очередь, к
меньшему числу результатов поиска. Данная проблема была частично решена
введением специальных серверов-"отражателей", расположенных на компьютерах с
быстрым подключением к Сети, и действующих как proxy для пользователей с
медленным каналом.
Невозможность скачать найденный файл. Это, пожалуй, считается самым
серьезным недостатком. Ваш поиск возвращает массу привлекательных
результатов - но вы ничего из найденного не можете получить. Это изрядно
раздражает. Основной причиной этого видится асимметрия между
аудиторией "скачивающих" и аудиторией "делящихся своим". Поскольку пользователей системы, предоставляющих файлы для скачивания, значительно меньше, чем тех, кто хочет их скачать, пропускная способность каналов доставки используется крайне неравномерно. Это и приводит к недоступности файлов или обрывам при скачивании. Разработчики пытаются принять технологические меры для преодоления такой асимметрии.
Существует несколько веб-сайтов, которые предлагают возможность поиска и скачивания файлов через Gnutella, но не дают возможности закачать свои файлы в систему. В
последних версиях популярных Gnutell'овских приложений, таких как LimeWire и
BearShare, запросы с этих сайтов блокируются - вместо файла пользователь
получает предложение скачать версию нормального двустороннего (клиент-серверного) Gnutella-приложения. Более
того, намечается тенденция к тому, чтобы ввести коэффициент соответствия
количества скачиваемых файлов к количеству отданных для скачивания
другими, что, предположительно, будет стимулировать пользователей активнее "делиться". Это напоминает старые добрые BBS с их download/upload ratio, или,
из более современных систем, MojoNation.
Таким образом, несмотря на исчезновение из новостей (во многом из-за глобальной истерии вокруг Napster), Gnutella живет и
развивается, количество пользователей увеличивается и перспективы
неплохи. Вероятнее всего, будущее системы зависит от того, насколько плотно
смогут объединиться разработчики, чтобы дальнейшее развитие не пошло в разнос,
а либо пошло по пути "полной" стандартизации протоколов, либо, как минимум, по
децентрализованной, но движущейся в одном четко определенном направлении схеме
(а-ля разработка ядра Linux).
Количество пользователей Gnutella в настоящий момент оценивается в 80-200 тысяч человек в течение суток.