Авторский вариант. Оригинал опубликован в журнале "Домашний компьютер" №3/2003
5.01.2003

Рождённые равными

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

Кажется невероятным, но всего-то пять лет назад, в 1998-м году, файлообменных сетей попросту не существовало. Формат MP3, позволяющий уместить 10-минутную музыкальную запись в файл объёмом менее десяти мегабайт, уже существовал, но обмен цифровой музыкой вёлся весьма странным способом. Центральное место в нём занимали крупные музыкальные хранилища – отдельные серверы, вмещавшие сотни музыкальных файлов. В случае, если пользователь хотел заполучить какую-то композицию, он был вынужден сперва искать такой сервер с помощью обычной поисковой системы (тогда была особенно популярна Yahoo!), а после скачивать нужный файл с помощью веб-браузера или специальной программы (т.н. FTP-клиента). Конечно, такой способ обмена не был единственным, существовала и масса иных – как, к примеру, пересылка музыкальных новинок друзьям через электронную почту, Интернет-чаты и системы мгновенного обмена сообщениями (ICQ тоже уже существовала). Но общая ситуация была незавидной: ведь даже если нужная вам композиция уже лежала на компьютере одного из миллионов пользователей Сети, никакой гарантии, что вы сумеете её заполучить, не было. Всё волшебным образом изменилось с появлением первой настоящей сети по обмену файлами, безусловно известной и вам: Napster.

Центральное звено

Автором Napster стал 18-летний американский студент Шон Фэннинг. Поступив в Северовосточный университет Бостона (вообще-то Шон мечтал о Карнеги-Миллоне, но завалил вступительные экзамены) и с трудом одолев полтора курса, зимой 99-го, во время очередного прогула занятий в офисе у отца, он задумался над тем, сколь здорово было бы сразу получить доступ ко всей музыке, что хранилась, к примеру, на машинах его родного университета. Так Фэннинг наткнулся на идею, впоследствии принёсшую ему мировую известность. Собственно суть её была проста: вместо того, чтобы собирать всю музыку на одном сервере, Шон предложил оставить её на компьютерах пользователей, а центральному серверу поручить лишь сбор названий композиций с обязательным указанием того, на чьём компьютере та или иная композиция хранится. Обратившись к такому серверу, можно было быстро узнать, на каких компьютерах есть нужная музыка, после чего скачать её с одной из этих машин.

Воплотив идею в код, Шон быстро понял, что наткнулся на настоящую золотую жилу. Заручившись поддержкой своего отца, Джона Фэннинга, весьма предприимчивого человека, он организует настоящую компанию (отец стал её директором). Название было произведено от университетской клички Шона – Nap (“соня”; впрочем, на этот счёт существует и другая легенда, утверждающая, что кличка была “napster” – “пушистик”, данная P2P-пионеру за крайне скудный волосяной покров на его голове). Napster становится владельцем центрального сервера, собирающего списки композиций, имеющихся на компьютерах его пользователей – и первой и единственной файлообменной сетью в мире. Первая бета-версия одноимённой программы, выпущенная компанией 1 июня 1999-го года, была роздана лично Шоном трём десяткам его знакомых. Естественно, с условием, что никто никому ничего не расскажет. Однако, шила в мешке не утаишь – и уже через несколько дней с сайта napster.com были выкачаны 15 тысяч копий новинки. В следующие два года число пользователей Napster достигнет полусотни миллионов человек и поставит под угрозу само существование многомиллиардной индустрии звукозаписи и звукоиздания, идею Napster подхватят и разовьют тысячи энтузиастов и сотни компаний, а Шон Фэннинг (кстати, покинувший университет ради развития своего бизнеса) войдёт в мировую историю как пионер файлообменных систем. Впрочем, давайте не будем торопиться, а подробно рассмотрим как именно работала Napster и какую терминологию породила.

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

Для участия в Napster от каждого пользователя требовалось, во-первых, подключение к Интернет, а во-вторых, специальная программа. Эта программа, получившая в P2P-сетях название программы-клиента, была одинакова для каждого пользователя и в каждом отдельном случае выполняла одну и ту же работу: запустившись в первый раз, она собирала информацию о хранящихся на данной машине MP3-файлах и отсылала её на центральный сервер. После этого программа превращалась в инструмент для связи с центральным сервером и другими участниками сети: пожелав скачать к себе на компьютер какую-либо композицию, пользователь вводил её название в поисковую строку своей программы-клиента, которая передавала его центральному серверу, получала от него список подключенных к Napster компьютеров, на которых эта композиция имеется, и отображала его на экране. Далее требовалось лишь выбрать из списка один компьютер, с которого файл начиналась перекачка файла.

Такой механизм получил название централизованного пирингового файлового обмена, а сама сеть - пиринговой сети с централизованной структурой. Термины эти сегодня чрезвычайно распространены и смущаться их не стоит, поскольку происхождение каждого из них очевидно. Упоминание централизованности подразумевает всего лишь наличие выделенного сервера или группы серверов, без которых данная сеть работать не сможет. Термин же “пиринговый” и равнозначное ему сокращение P2P (читается как “пи-ту-пи” - вы, наверняка, встречали его в комбинациях вроде “P2P-сеть”) происходят от английского “peer-to-peer” (peer - англ. ровня, равный) и подразумевают наличие равноправия среди пользователей сети: в Napster у всех пользователей есть одинаковое право скачивать файлы, кроме того, исключая некоторую помощь со стороны центрального сервера, весь обмен информацией ведётся между ними самими (т.е. каждый пользователь выступает и клиентом, потребляющим информацию, и сервером, информацию предоставляющим).

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

Став безусловным техническим прорывом, централизованный пиринговый файловый обмен в чистом виде – в таком, в каком он был реализован в системе Napster – обладал и рядом серьёзных недостатков, омрачавших жизнь пользователям. Прежде всего, список файлов, переданных клиентом на центральный сервер при подключении к сети, уничтожался сразу же, как только клиент от неё отключался. Поэтому отыскать редкую композицию, хранящуюся, к примеру, всего на одном компьютере, работающем через модемное соединение, другим пользователям Napster было почти нереально. Кроме того, в Napster не существовало возможности докачки “оборванных” файлов – и если пользователь, с компьютера которого перекачивали композицию, уходил в оффлайн, весь процесс поиска/получения файла приходилось начинать с нуля. Всё это, а также, конечно, желание отхватить кусочек популярности Napster (весной 2000-го Napster становится призёром Webby Awards в категории “Музыка”), стало причиной появления новых, более совершенных пиринговых систем файлового обмена. Один из самых замечательных потомков - система AudioGalaxy, сумевшая достичь почти той же популярности, что и её прототип.

AudioGalaxy была такой же централизованной сетью, как и Napster, с тем лишь отличием, что её клиентское программное обеспечение подверглось серьёзной переработке для большего удобства пользователей. Если в Napster задачи выбора компьютера и слежения за процессом перекачки файла возлагались на пользователя, то в AudioGalaxy всю чёрную работу взяла на себя программа-клиент. Здесь человеку достаточно было задать имя искомой композиции и подать команду на начало перекачки – об остальном заботился компьютер, включая поиск альтернативных источников и докачку при обрыве соединения. Кроме того, центральный сервер AudioGalaxy хранил списки файлов, лежащих на компьютерах пользователей, даже после того, как эти пользователи уходили в оффлайн. Так была решена проблема поиска редких композиций. Впрочем, сколь ни хитры были разработчики централизованных файлообменных систем, сам принцип их действия обладал рядом серьёзных недостатков, устранить которые помогла лишь радикальная смена механизма, произведённая изобретателями децентрализованных пиринговых сетей.

Полная децентрализация

В самом деле, представьте себе, что центральный сервер системы Napster по какой-то причине “завис”. Будь то случайная ошибка в программном обеспечении, перегрузка из-за наплыва пользователей, действия злобных хакеров – результат во всех случаях будет один: работа всей файлообменной сети неминуемо остановится. Лишённые возможности поиска нужных файлов, все работающие на пользовательских машинах программы-клиенты окажутся бесполезны. И такое нередко случалось на практике. Исключив из схемы пиринговой сети столь уязвимое звено, как центральный сервер, можно было бы намного повысить надёжность всей сети. Первыми, весной 2000-го года до этого додумались программисты маленькой, но чрезвычайно известной компании Nullsoft – той самой, что разработала плейер Winamp.

Программа, написанная ребятами из Nullsoft, называлась Gnutella. Просуществовала она совсем недолго, лишь несколько месяцев, а время её жизни на сайте Nullsoft было и того меньше – считанные часы. Дело в том, что к тому времени Nullsoft уже принадлежала гиганту AOL, а руководство последнего, прослышав про эксперименты подчинённых, приказало прекратить своевольничать и убрать любые упоминания о поделке с официальных сайтов (к тому моменту битва между звукозаписывающими компаниями и файлообменными сетями – подробней речь о ней пойдёт ниже – уже разгорелась, ссориться же с музыкальной индустрией AOL было ни к чему). Но нескольких часов, в течение которых Gnutella лежала на сайте Nullsoft, вполне хватило тысячам энтузиастов – быстро оценвших по достоинству потенциал нового инструмента. Силами добровольцев был проведён “обратный инжиниринг”, вскрыт код программы и восстановлен сетевой протокол, который она использовала. Сама программка вскоре умерла, сменившись множеством более удобных программ-клиентов от других разработчиков, а вот протокол прижился и известен по сей день под тем же именем, Gnutella. Он предполагает обмен информацией только между клиентами сети, с отсутствием необходимости в центральном сервере. В отличие от рассмотренной выше централизованной схемы (Napster, AudioGalaxy), где существует элемент, без которого функционирование сети невозможно, в децентрализованной Gnutella функции такого элемента поровну распределены между клиентами. Такую схему часто называют ещё “истинным P2P” или “истинной P2P-сетью”, подразумевая тем самым отсутствие малейшего неравноправия среди её участников.

Детальное устройство и принцип действия децентрализованных P2P-систем ненамного сложнее, чем централизованных. Представить её наглядно можно в виде компании из четырёх друзей - Вани, Пети, Димы и Лены, с которой, для поиска понравившейся ему композиции, знакомится пятый человек – Саша. Саша заводит знакомство лишь с Ваней, передавая ему название интересующей его песни. Ваня проверяет наличие песни на своём компьютере, не обнаруживает её и передаёт запрос дальше, своим знакомым Пете и Диме. Петя и Дима поступают совершенно так же, проверяя содержимое своих компьютеров и передавая запрос своим знакомым. Так запрос попадает к Лене, у которой нужная песня есть и которая связывается напрямую с Сашей для того, чтобы ему эту песню передать.

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

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

Но есть у децентрализованных систем и недостатки. Из-за отсутствия центрального сервера, на котором поиск нужной композиции среди списка всех, доступных в сети, выполнялся моментально, децентрализованные P2P-сети работают заметно медленнее. По той же причине клиенты таких сетей вынуждены пропускать через себя значительное количество запросов от других пользователей, что уменьшает скорость передачи их собственных файлов – особенно, если они работают через медленное Интернет-соединение. Существует даже предположение, что децентрализованные P2P-сети, в которых одновременно работают больше нескольких сотен тысяч клиентов, окажутся неработоспособны, будучи “задавлены собственным весом”. Впрочем, разработчики на месте тоже не стоят: к примеру, скорость поиска в децентрализованных P2P-сетях можно повысить благодаря введению частичной централизации (возвращаясь к нашему примеру с пятью друзьями, это означает объединение трёх из них, владеющих самыми быстрыми Интернет-соединениями, в группу, которая принимает на себя значительную часть работы по обработке запросов соседних пользователей с более медленными соединениями. Конечно, всё это выполняет программное обеспечение, поэтому сами пользователи ничего не видят). Так или иначе, сегодня большинство децентрализованных файлообменных сетей основываются на протоколе, разработанном ещё авторами первой Gnutella. Поскольку протокол один, все эти сети совместимы между собой и, фактически, являются одной большой сетью, называемой опять же по имени её прародителя. Как правило, клиентские программы для Gnutella-сети разрабатываются на принципах открытых исходников (Open Source) и бесплатны для пользователя. Популярность их пока несколько ниже, чем централизованных систем, но ближайшее будущее обещает эту ситуацию исправить: в пиршество технарей вмешались посторонние силы в виде звукозаписывающих компаний.

Отовсюду понемножку

Впрочем, прежде, чем перейти к тому, как на технический прогресс повлияли далёкие от него гиганты музыкального бизнеса, давайте рассмотрим ещё один класс файлообменных систем, появившийся сравнительно недавно, но к сегодняшнему дню ставший самым популярным. Это гибридные системы, в которых децентрализация смешивается с элементами централизации. Самый яркий пример такого рода – известная всем и каждому KaZaA. Оценки количества её пользователей сильно разнятся, но даже по самым скромным подсчётам это десятки миллионов человек (по нескромным – до полутора сотен миллионов), а число пользователей, находящихся в онлайне в каждый момент времени никогда не опускается ниже пятисот тысяч. Огромная популярность системы обуславливает огромное количество файлов, которые в ней можно отыскать, но при всём своём величии, KaZaA – колосс на глиняных ногах. Дело в том, что вообще-то в основу программы-клиента KaZaA положен децентрализованный механизм (известный как “P2P-движок FastTrack”), однако, разработчики (компания Consumer Empowerment) встроили в него специальную закладку, которая позволяет притормозить работу программы-клиента по желанию владельца сети. Такой сценарий отыгрывался на практике как минимум один раз, зимой 2002-го года, когда сеть KaZaA меняла своего владельца, переходя из рук голландской компании KaZaA в руки австралийской Sharman Networks: продавец подал команду, сеть остановилась и – неделю пользователи были вынуждены сидеть сложа руки.

Примечательно, что в ходе своей эволюции файлообменные системы быстро утратили узкую “музыкальную специализацию”. Почти все сети, появившиеся на свет после рождения Gnutella, позволяют меняться любыми файлами, так что к MP3 прибавились и копии фильмов, и программное обеспечение, и фотографии, и многое другое. Это даже породило расхожую шутку о расшифровке P2P как “porno-to-porno”. Обмен порнографическими материалами на самом деле занимает немалую часть трафика, проходящего через современные P2P-сети. Есть даже такой любопытный факт: в сетях, где количество узлов сравнительно мало, – Gnutella, Freenet (речь о ней пойдёт ниже) – легко отыщутся сотни файлов по ключевому слову “porno”, но ни одного по слову “music”. Впрочем, самым популярным типом контента в большинстве файлообменных сетей сегодня всё же остаётся музыка, так что и удивляться вниманию, проявленному к ним со стороны музыкальной индустрии вряд ли стоит.

Что такое хорошо и что такое плохо

А сражение между компаниями, зарабатывающими на записи и продаже музыки, и файлообменными сетями началось почти сразу же после того, как первая P2P-сеть обрела достаточную популярность. В ноябре 1999-го года Американская ассоциация звукозаписывающих компаний (RIAA) подала судебный иск против компании Napster, обвинив её создателей в нарушении авторских прав. Дело здесь в том, что подавляющее большинство файлов, проходивших через Napster, представляли из себя копии композиций, эксклюзивные права на распространение которых принадлежали компаниям, входящим в RIAA. Массовый обмен музыкой без разрешения правообладателей, естественно, пришёлся последним не по душе. Можно или нет называть обмен цифровыми копиями чужой музыки воровством – вопрос, до конца так и не прояснённый, но факт остаётся фактом: RIAA, а вслед за нею и другие крупные ассоциации и компании, начали бороться с файлообменными сетями. Способ борьбы с такими сетями вырабатывался без малого два года и сопровождался различными казусами. Так, к примеру, группа Metallica, потребовав от Napster весною 2000-го отключить от системы 335 тысяч пользователей, уличённых в обмене нелегальными копиями песен группы, была вынуждена предоставить информацию о каждом обвиняемом. И сделала это, доставив в суд на грузовике… десяток коробок, содержащих в общей сложности 60 тысяч страниц с IP-адресами “пиратов”. Впрочем, то были первые неуклюжие попытки. Позже RIAA сотоварищи выработала простой, однотипный метод: против владельца P2P-сети подаётся судебный иск, после чего тот (владелец) либо идёт на уступки, прикрывая свободный обмен файлами, либо неизбежно гибнет, не вынеся дорогостоящих разборок. Napster, AudioGalaxy и многие другие сети пали жертвами такой борьбы - разорившись, либо добровольно прекратив свою работу.

Как вы понимаете, в случае с децентрализованными сетями такой способ не пройдёт – поскольку подавать в суд тут вроде бы не на кого, разве что на производителя программы-клиента, что часто бессмысленно, поскольку многие Gnutella-клиенты создаются сообществами независимых энтузиастов. Но звукоиздатели нашли лазейку и здесь – воспользовавшись техническим несовершенством существующих файлообменных систем. А именно – открытостью Интернет-адресов их участников. Вспомните пример с компанией друзей из иллюстрации работы Gnutella: каждый участник сети знает адреса своих соседей и адрес того участника, с которым он меняется файлами. Это т.н. IP-адрес, комбинация из четырёх чисел, уникальных для каждого компьютера, подключенного к Интернет. Преобразовать IP-адрес в настоящее имя пользователя и его место жительства очень просто: достаточно обратиться к Интернет-провайдеру, которым этот адрес выдан, запасшись судебным ордером, обязывающим провайдера раскрыть данные о клиенте. Именно так в декабре, в Дании были идентифицированы и оштрафованы полторы сотни пользователей файлообменных сетей Kazaa и eDonkey (за более подробным описанием инцидента обратитесь к новостям в начале журнала). Таким образом, сегодня участие в файлообменных сетях стало небезопасным: в тюрьму за это не сажают, но получить счёт на тысячу долларов в некоторых странах уже вполне реально. Так что же, тупик? Нет, лишь временное препятствие, обойти которое позволяют децентрализованные пиринговые сети второго поколения, обеспечивающие, в числе прочего, абсолютную анонимность своих пользователей.

Я не я и песня не моя

Первый и пока единственный известный действующий пример такой сети – Freenet. Основу её заложил ещё в середине 1998-го года аспирант Университета Эдинбурга, что в Англии, Ян Кларк, специализировавшийся тогда на искусственном интеллекте. Он же вместе с единомышленниками (общаясь с ними лишь через Сеть) создал и первый рабочий код, запустив Freenet весной 2000-го. По принципу действия эта система очень похожа на Gnutella, с той разницей, что все операции с данными в ней могут быть совершенно анонимны, а сами данные зашифрованы и многократно копированы на компьютерах участников. Возвращаясь к нашему примеру с компанией из пяти друзей, это можно проиллюстрировать следующим образом: подключаясь к сети, Саша приносит с собой некий файл с песней. Программа-клиент на компьютере Саши автоматически дублирует файл, рассылая его на несколько других компьютеров сети – таким образом гарантируется надёжность хранения информации (даже если Саша заболеет или, не дай Бог, скончается от скуки на институтских лекциях, принесённая им песня по-прежнему будет доступна с компьютеров его друзей). Одновременно файл шифруется, так что внести в него какие-то изменения никто не сможет. Кроме того, никакой информации о том, кто принёс файл в обменную сеть, не сохраняется – поэтому Саша может быть спокоен за будущее не только своего файла, но и своё тоже. Кто-либо, скачивая песню Саши в дальнейшем, будет получать её по кускам с нескольких компьютеров (их автоматически соберёт и расшифрует программа-клиент), поэтому за своё будущее могут быть спокойны и владельцы тех компьютеров, на которых куски файла хранятся. Наконец, анализируя информацию, проходящую через сеть, нет никакой возможности определить, что именно выкачивает отдельно взятый пользователь.

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


P2P,Napster,Gnutella,файлообмен,копирайт,право,ностальгия,Freenet,Шон_Фэннинг,Ян_Кларк,KaZaA,eDonkey,RIAA,Nullsoft




Евгений Золотов, 1999-2018. Личный архив. Некоторые права защищены