Почему умер Napster и выжил Gnutella

9

Всё происходило стремительно. Это единственное, чем можно описать взлёт Napster. Менее чем за двенадцать месяцев сайт вырос с нуля до 60 миллионов ежемесячных посетителей. Он был не просто популярен. В период своего пика это был самый посещаемый сайт в интернете. Затем вмешались суды. Один единственный судебный запрет положил конец его работе из-за массовых нарушений авторских прав. Napster не появлялся на свет снова до 2003 года, когда был ребрендингован как легальный сервис по продаже музыки под брендом Roxio.

Привлекательность была простой. Вы получали бесплатную музыку. Вам не нужно было ехать в магазин. Вам не нужно было покупать CD, вставлять его в привод и ждать, пока трек будет скопирован. Вы просто нажимали кнопку. Огромная база данных содержала практически все когда-либо созданные песни. Это было легко. Это было бесплатно.

Но эта простота имела свою цену. Архитектура стала фатальным недостатком.

Napster опирался на центральный сервер для индексации и соединения пользователей. Эта централизованная модель облегчала поиск музыки, но также делала его лёгкой целью для уничтожения. Когда суды постановили, что Napster способствует нарушению авторских прав, выключение было хирургически точным. Отключите сервер, и вся сеть исчезнет. Никакой резервной копии. Никакого децентрализованного резервного варианта. Только тишина.

Пользователей не волновали юридические нюансы. Их волновал доступ. Большинство мигрировало на другую систему обмена файлами. На ту, которую нельзя было так легко уничтожить.

Восхождение Gnutella

На сцену выходит Gnutella.

Это была альтернатива. Это был не просто инструмент; это была иная философия. Вместо центрального узла Gnutella использовала одноранговую (P2P) сеть. Каждый компьютер в сети был одновременно и сервером, и клиентом. Не было единой точки отказа. Чтобы отключить её, пришлось бы отключить компьютер каждого отдельного пользователя.

Именно эта децентрализованная архитектура позволила Gnutella выжить. Даже по мере того, как суды ужесточали борьбу с другими сервисами, Gnutella продолжала существовать. Она адаптировалась. Она эволюционировала. Она стала основой для многих современных P2P-протоколов.

Оригинальный Napster был магазином без замков. Gnutella была лабиринтом без центра. Один легко ограбить. Другого трудно поймать.

Новый Napster

К 2003 году ландшафт изменился. Roxio купила права на название Napster и перезапустила его. Версия 2 была легальной. Вы платили за свою музыку. Никаких больше нарушений. Это был более чистый продукт. Более безопасный. Но в нём не хватало сырой, хаотичной энергии оригинала. Магия заключалась не только в музыке. Она была в свободе.

Старый Napster научил нас кое-чему. Централизация эффективна, пока не перестаёт таковой быть. Децентрализация хаотична, но она устойчива. Мы узнали об этом на собственном горьком опыте.

Теперь, каждый раз, когда вы слушаете песню в потоковом режиме, вы платите за удобство. Вы используете централизованный сервис. Spotify. Apple Music. YouTube Music. Они просты в использовании. Они безопасны. Они также уязвимы. Одна компания контролирует библиотеку. Одна компания контролирует доступ.

Gnutella показала нам другой путь. Путь, где сеть является продуктом. Где пользователи являются инфраструктурой. Это медленнее. Это сложнее. Но это свободно от единой точки контроля.

Какой

Стандартный просмотр веб-страниц — это простая транзакция. Вы запрашиваете файл у сервера, и сервер отправляет его обратно. Для крупных сайтов это требует сотен машин, чтобы просто поддерживать работу инфраструктуры. Napster полностью разрушил эту модель. Он не просто размещал файлы; он превратил компьютер каждого пользователя в узел огромной децентрализованной сети распространения.

Первоначальная версия Napster была гибридной системой. Она использовала одноранговый (P2P) обмен файлами для фактической передачи данных, но опиралась на центральный орган для поиска. При запуске программного обеспечения ваш компьютер регистрировался на центральных серверах Napster. По сути, вы добавляли свои доступные MP3-файлы в глобальный каталог.

Вот как это работало:

  • Вы устанавливали клиентскую программу. Ваш ПК становился мини-сервером.
  • Ваш компьютер отправлял запросы на центральные серверы, передавая список всех треков на вашем жестком диске.
  • В центральной базе данных теперь хранился индекс миллиардов песен.
  • Вы искали «Roxanne» группы The Police.
  • Центральный сервер возвращал список IP-адресов пользователей, у которых был этот файл.
  • Вы выбирали однорангового узла. Ваш компьютер подключался напрямую к его компьютеру и скачивал песню.

Эта архитектура решила две насущные проблемы. Во-первых, хранение. Ни одна компания не могла купить достаточно места на жестких дисках, чтобы вместить весь мировой музыкальный каталог. Во-вторых, пропускная способность. Распределение нагрузки среди миллионов домашних подключений было бесконечно дешевле, чем потоковая передача с дата-центра.

Здесь также присутствовала юридическая стратегия. Создатели утверждали, что они используют лазейку в законодательстве об авторском праве, касающуюся частного обмена между друзьями. Суды в конечном итоге отвергли эту логику. Но ущерб уже был нанесен. Концепция была доказана. Сеть стала слишком большой, чтобы ее игнорировать.

Недостаток дизайна Napster был очевиден задним числом. Центральная база данных была единой точкой отказа. Это была ахиллесова пята. Когда суд приказал закрыть сеть, вся инфраструктура рухнула. Вы не можете иметь одноранговую сеть, если индекс для нее принадлежит одному субъекту, которого можно юридически заставить молчать.

К моменту падения Napster около 100 миллионов пользователей привыкли свободно обмениваться файлами. Инфраструктура для такого поведения уже была готова. На подступах ждала более устойчивая архитектура.

Почему Gnutella изменила правила игры

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

Различия носят структурный и существенный характер.

Во-первых, нет центральной базы данных. Концепция глобального индекса мертва. Вместо этого Gnutella использует распределенный подход к поиску. Когда пользователь ищет файл, запрос передается от узла к узлу, перепрыгивая по сети, пока не найдет совпадение. Это эффект ряби запросов.

Во-вторых, экосистема фрагментирована. Не существует единого «клиента Gnutella». Многие различные приложения могут получать доступ к сети Gnutella. Это разнообразие затрудняет нацеливание на конкретное программное обеспечение для судебных исков.

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

Переход от централизованного индекса к распределенной системе поиска был не просто техническим улучшением. Это был ответ на хрупкость старой модели.

Napster полагался на единственное, хрупкое клиентское программное обеспечение. У Gnutella не было такой роскоши, или, точнее, у неё было слишком много свободы. Сеть раскололась на десятки конкурирующих приложений. Вы могли выбрать BearShare, Gnucleus, LimeWire, Morpheus, WinMX или XoloX. Интерфейс мог выглядеть по-разному, но лежащая в основе логика была одинаковой: уничтожить центральный авторитет.

Но без центрального индекса сети нужен способ поиска файлов. Именно здесь механизм поиска клиентов Gnutella резко отличается от традиционной модели «сервер-клиент».

Как клиенты Gnutella находят файлы

Представьте, что вы хотите найти конкретный MP3-файл. Библиотеки для проверки не существует. Вместо этого ваше программное обеспечение должно «кричать» в пустоту.

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

Сосед не просто отвечает. Он проверяет свой собственный жесткий диск. Если файл там есть, он отправляет обратно имя файла и ваш IP-адрес. Но он также делает что-то более агрессивное. Он пересылает ваш запрос всем другим машинам, о которых он знает.

Эти машины делают то же самое. Они проверяют свое хранилище. Они пересылают запрос дальше. Это создает эффект ряби, волну запросов, расширяющуюся наружу через сеть.

Система полагается на счетчик «Время жизни» (TTL), чтобы предотвратить бесконечные циклы.

У каждого запроса есть лимит TTL. Думайте об этом как о датчике уровня топлива. Запрос может пройти шесть или семь «хопов» (шагов), прежде чем у него закончится «топливо». Если каждый узел знает всего четырех других пиров, поиск глубиной в семь уровней теоретически может охватить 8000 машин.

Это грубое распределенное вычисление. Просто. Изобретательно. И истощающе.

Компромисс: стабильность против производительности

Эта архитектура решает главную проблему своего предшественника. Napster умер, потому что один сервер владел ключами. У Gnutella нет ключей. Нет единой точки отказа. Никакой судебный приказ не может уничтожить сеть, потому что нечего отрубить. Gnutella работает всегда, при условии, что вы можете связаться хотя бы с одним другим пиром.

Но децентрализация имеет свою цену.

Во-первых, нет гарантии, что файл существует. Вы можете отправить свой запрос на 8000 машин и получить нулевых совпадений. Файл может находиться на машине номер 8001. Вы слепы.

Во-вторых, задержка (латентность) жестока. Поскольку запрос должен распространяться через несколько уровней, вы можете ждать полного ответа минуту или больше. Система не сообщает вам, что она нашла, пока не проверит максимально возможную глубину.

В-третьих, вы являетесь инфраструктурой. Ваш компьютер — это не просто потребитель; это маршрутизатор. Он отвечает на входящие запросы и передает исходящие дальше. Вы тратите свою собственную пропускную способность, чтобы поддерживать сеть живой. Это пиринговая система в буквальном смысле: вы помогаете другим пирам, часто за свой собственный счет.

Эти недостатки кажутся серьезными в теории. На практике пользователям было все равно. Миллионы копий клиентов Gnutella были загружены. Обещание доступа перевешивало стоимость пропускной способности.

Пример XoloX: Поиск

XoloX — это максимально упрощённый клиент для сети Gnutella. Он не пытается поразить вас яркими интерфейсами или сложными функциями. Он просто работает. Размер загрузочного файла крошечный — около 600 килобайт, и что важно, он чистый. Никакого шпионского ПО. Никаких встроенных всплывающих окон. Это простой инструмент, который легко установить, что делает его идеальным кандидатом для изучения механики одноранговых сетей без лишнего «балласта».

Интерфейс сводится к трём основным функциям, доступным через три кнопки в верхней части окна: поиск, передача и управление файлами. Вы переключаетесь между ними по мере необходимости.

Как работает поиск Gnutella в XoloX

При открытии вкладки поиска всё выглядит почти слишком просто. Введите имя файла или несколько ключевых слов. Вы можете отфильтровать результаты по типу медиа — аудио, видео или «Все типы» — если хотите сузить область поиска. Нажмите Enter, и клиент отправит ваш запрос в эфир.

Подождите 30–60 секунд.

Окно поиска начнёт заполняться. Результаты будут поступать от тысяч других компьютеров, обрабатывающих тот же запрос. Это происходит не мгновенно, но эффективно.

Вы заметите столбец с меткой score. Это не рейтинг качества файла. Это количество онлайн-пиров, у которых в данный момент доступен этот конкретный файл. Высокий score означает больше источников. Больше источников означают лучшие шансы успешно завершить загрузку, особенно если речь идёт о популярном файле. Выбирайте wisely.

Пример работы XoloX: Загрузка

Получение файла из одноранговой сети не всегда сводится к простому клику и ожиданию, но XoloX делает этот процесс в основном безболезненным. Просто дважды щелкните по целевому файлу в результатах поиска. Это действие передает имя файла в окно «Передача», которое инициирует фактическое рукопожатие с узлом-источником.

Здесь протокол демонстрирует свои лучшие качества. Если один и тот же файл хранится на нескольких узлах сети, XoloX не выбирает один из них случайным образом. Он подключается к нескольким узлам одновременно. Именно благодаря такой стратегии параллельной загрузки вы можете наблюдать скорости, например, 69,2 КБ/с для крупного видеофайла, при этом оценка времени загрузки более 100 МБ составляет около 43 минут. Это использование избыточности данных позволяет преодолеть узкие места.

Но не всегда всё проходит гладко.

Иногда вы нажимаете на файл, и… ничего не происходит. Клиент не может подключиться к источнику, или хост-машина уже максимально загружена обслуживанием других пользователей. Это классическая пробка в одноранговой сети. У вас есть три способа справиться с этой ситуацией:

  • Подождать. Занятые узлы в конечном итоге освобождаются. Терпение здесь — вполне допустимая стратегия.
  • Выбирать файлы с высоким рейтингом. Файлы с лучшей репутацией с большей вероятностью будут предоставлены отзывчивыми и доступными узлами.
  • Заменить файл. Удалите зависшую загрузку из окна «Передача» и снова выберите файл с тем же именем в результатах поиска. Это заставит клиент попробовать другой узел, который может быть менее загружен.

После завершения загрузки данные сохраняются в указанной вами директории XoloX. Вы также можете просмотреть их в окне «Файлы» внутри приложения. Если вы хотите внести свой вклад в сеть, вы можете поделиться этими загруженными файлами. Однако это не происходит автоматически. Вам необходимо настроить диалог «Настройки», чтобы указать, какие именно каталоги и типы файлов вы готовы предоставлять другим пользователям.

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

Законен ли Gnutella на самом деле?

Сам протолегитимен. Не существует закона, запрещающего обмен файлами из общественного достояния. Незаконным использование сети становится только тогда, когда пользователи применяют ее для распространения защищенной авторским правом музыки и фильмов. Именно этот конфликт привел к краху Napster.

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

Как индустрия пытается разрушить сеть

Текущая стратегия заключается в нарушении архитектуры. В настоящее время применяются две основные атаки:

  • Засорение сети поддельными поисковыми пакетами для ее перегрузки.
  • Заполнение серверов Gnutella поврежденными файлами, не имеющими никакой ценности.

Но разработчики Gnutella уже выдерживали подобные угрозы. Скорее всего, они закроют эти уязвимости. Программное обеспечение адаптируется. Файлы продолжат распространяться.

Является ли обмен просто кражей или бесплатной рекламой?

Главный спор носит не технический, а финансовый характер. Какой реальный ущерб наносит обмен файлами? Является ли общий файл кражей или бесплатной рекламой? Подумайте об этом как о радиоэфире. Способствует ли известность продажам или вредит им?

Часто задаваемые вопросы

Что такое протокол Gnutella?

Это протокол однорангового (P2P) обмена файлами. Он позволяет пользователям искать и обмениваться файлами напрямую с другими компьютерами, без использования центрального сервера для хранения инвентаря.

Дополнительные ресурсы

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

Статьи по теме

  • Как работают MP3-файлы
  • Как работают MP3-плееры
  • Как работал Napster
  • Как работают веб-серверы
  • Как работают жесткие диски
  • Как работают CD-рекордеры
  • Как работает интернет-инфраструктура
  • Как работает домашняя сеть
  • Что такое авторские права и патенты?

Полезные ссылки

  • Каталоги хостов Gnutella
  • Kazaa
  • Часто задаваемые вопросы Gnutella от Knowbuddy
  • Новости Gnutella
  • Код поиска PHP для Gnutella
  • Интернет-катастрофа: Альтернативная точка зрения
  • Embedded.com: Внедрение одноранговых сетей

Последние новости

  • MTV.com: Музыкальная индустрия подает в суд на 32 студентов за незаконный обмен файлами — 10/04
  • Новая волна исков RIAA о незаконном обмене файлами — 4/04
  • Tom’s Hardware Guide: Опрос: Обмен музыкальными файлами снижается — 4/04
  • WiredNews: Roxio покупает Pressplay, Napster продолжает жить — 5/03
  • NewScientist.com: «Случайные блуждающие» могут ускорить одноранговые сети — 7/02
  • Gnutella.com: Лейблы планируют юридическую атаку на частных лиц? — 7/02
  • Gnutella.com: Голливуд хочет закрыть «аналоговую дыру» — 5/02
  • P2P.com: Gnutella и Freenet представляют собой подлинное технологическое новшество — 5/00