Пиринговые сети

Даниил Кальченко

Файлообменные сети

   KaZaA

   Gnutella

   eDonkey2000

   eMule

   Shareaza

   BitTorrent

Не только файлы

 

Как работает сеть eDonkey

 

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

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

Тем не менее файлообменники вовсе не являются раем для пользователей нелицензионного программного обеспечения в силу того, что имеют значительное число ограничений, среди которых: размер одного файла и время его хранения, допустимое число потоков с одного IP-адреса, максимальный объем закачиваемых файлов в течение некоторого времени и ограничения на ширину потока.

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

Файлообменные сети

Технология P2P (peer to peer) — это схема построения распределенной сети, каждый узел которой может одновременно выступать как в роли клиента, получающего информацию, так и в роли сервера, информацию предоставляющего. Еще одно возможное определение пиринговой сети — это сеть равных, в которой возможно взаимодействие между всеми узлами.

Явление файлового обмена между компьютерными пользователями, носившее до 1999 года спонтанный и несистемный характер, получило мощный и фантастический толчок с появлением специализированного сервиса для обмена музыкой — файлообменной системы Napster. Именно ее считают прародительницей современных P2P-систем.

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

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

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

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

KaZaA

KaZaA (рис. 1, http://www.kazaa.com/) — это смешанная пиринговая сеть, в которой присутствуют элементы как централизованной, так и децентрализованной сети. Существует несколько центральных узлов, к которым подключаются клиенты. Программа поддерживает закачку и может закачивать различные фрагменты файла у разных пользователей. Есть возможность предварительного просмотра недокачанных файлов.

 

Рис. 1. Окно программы-клиента KaZaA

Рис. 1. Окно программы-клиента KaZaA

KaZaA прежде всего ориентирована на обмен музыкой и видеофильмами, но поддерживает и другие форматы. В списке найденных файлов отображается полная информация о файле: длина, битрейт, исполнитель, название композиции, а для видео — размер экрана и некоторая другая полезная информация.

     

Как работает сеть eDonkey

Для любого файла, помещаемого в eDonkey, вычисляется хеш-сумма (специальная контрольная сумма, зависящая от содержимого файла), в соответствии с которой он однозначно идентифицируется в сети независимо от его названия. Ссылки на файлы в сети E2DK имеют вид «ed2k://|file|SomeFile.zip|43573472|94cb15b58509c52afcf8bed5dd7a4bd|», где имя файла «SomeFile.zip» ни на что не влияет и служит лишь для удобства и указания, под каким именем следует сохранять на диск файл, имеющий соответствующие контрольные суммы.

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

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

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

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

 

Gnutella

Файлообменная сеть Gnutella (http://www.gnutella.com/), первая полностью децентрализованная пиринговая сеть, была разработана в 1999 году компанией NullSoft. Но через некоторое время America Online, которой принадлежала данная компания, объединилась со звукозаписывающей компанией и, как следствие, пересмотрела свое отношение к этому проекту. Несмотря на все приложенные со стороны AOL усилия, сеть Gnutella не прекратила своего существования и продолжила работу.

 

Рис. 2. Окно программы-клиента Morpheus

Рис. 2. Окно программы-клиента Morpheus

Сопровождение и развитие проекта взяла на себя группа энтузиастов. Их добровольным, хотя не всегда скоординированным усилиям Интернет-сообщество обязано возникновению более двух десятков клиентов для сети Gnutella, из которых наиболее известен Morpheus (рис. 2). К главным недостаткам Gnutella относятся медленный и зачастую неточный поиск, что является платой за децентрализованный принцип работы.

К лету 2003 года эффективность сети была успешно сведена на нет усилиями RIAA (Recording Industry Association of America — Ассоциацией американской звукозаписывающей промышленности), которая сумела с помощью третьих фирм заполнить сеть Gnutella фальшивыми файлами, не отличающимися по результатам поиска от настоящих.

Осенью 2002 года был анонсирован новый протокол Gnutella2 (http://www.gnutella2.com/), в котором авторы постарались учесть недостатки и проблемы первой версии. В настоящий момент существует более десяти популярных клиентов, которые поддерживают работу с этой пиринговой сетью.

eDonkey2000

Сеть eDonkey2000 (ED2K, http://www.edonkey2000.com/) — смешанная, построена на распределенных ресурсах и не зависит от какого-либо одного центрального сервера. Серверную часть может скачать и установить себе каждый желающий. Через некоторое время новый сервер появится в общем списке. Благодаря отсутствию центрального сервера система значительно менее уязвима, чем имеющие его пиринговые сети.

Клиентская программа (рис. 3) имеет традиционный для программ данного класса интерфейс. Она позволяет искать файлы и закачивать их от других пользователей сети. eDonkey2000 поддерживает систему обмена между пользователями приватными сообщениями и имеет ряд других полезных особенностей, таких как поддержка технологии Horde (команда), позволяющей объединиться с другими пользователями сети, качающими тот же файл, за счет чего обеспечивается более эффективная работа. Например, партнеры по команде не стоят друг у друга в очереди и для них не действуют ограничения на объем скачивания за одно подключение.

 

Рис. 3. Окно клиентской программы eDonkey2000

Рис. 3. Окно клиентской программы eDonkey2000

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

eMule

eMule (рис. 4, http://www.emule-project.net/) — клиент для сети eDonkey2000, созданный и развиваемый как проект Open Source группой независимых разработчиков, разочаровавшихся в оригинальном клиенте eDonkey. Начиная проект, они и представить себе не могли, что их клиент станет настолько популярным, что практически полностью вытеснит все остальные клиенты для ED2K-сети. Программа использует несколько сетей (ED2K, Source Exchange, Kad), чтобы создать одну более надежную.

 

Рис. 4. Окно программы-клиента eMule

Рис. 4. Окно программы-клиента eMule

Клиент eMule обладает более удобным интерфейсом по сравнению с eDonkey. В нем присутствует встроенная поддержка русского языка и нет рекламы. При создании eMule была переработана и оптимизирована процедура загрузки файлов. Например, в первую очередь загружаются наиболее редкие блоки файла, а при повреждении блока повторно скачивается только его поврежденная часть. Кроме того, был улучшен поисковый механизм. Функция «Предпросмотр» позволяет ознакомиться с фильмами и заглянуть в архивы еще до того, как они скачаны до конца. В состав eMule включен планировщик задач, а также небольшой web-сервер, позволяющий удаленно управлять программой через Интернет или с мобильного телефона, поддерживающего Java.

Специальная система очереди и кредитов действует таким образом: пользователь получает нужные ему файлы гораздо быстрее, если закачивает их кому-нибудь еще. При необходимости можно ограничить доступ к спискам сетевых адресов или к именам конкретных клиентов пиринговой сети. eMule может получить список серверов не только с определенного ресурса, но и от партнеров по сети. Кроме того, партнеры могут обмениваться списками источников скачиваемых файлов, что снижает потребность в серверах.

Shareaza

По отзывам пользователей, Shareaza (рис. 5, http://www.shareaza.com/) является одним из лучших универсальных P2P-клиентов — он быстро завоевал популярность у пользователей. Программа работает с четырьмя пиринговыми сетями (Gnutella2, Gnutella1, eDonkey2000/eMule, BitTorrent) и понимает пять видов ссылок (Magnet, Piolet, Gnutella, eDonkey2000/eMule, BitTorrent). Как и eMule, проект разрабатывается как Open Source, поэтому программа Shareaza бесплатна и не содержит никакой рекламы.

 

Рис. 5. Окно программы-клиента Shareaza

Рис. 5. Окно программы-клиента Shareaza

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

BitTorrent

Технологию BitTorrent — битовый поток (рис. 6, http://www.bittorrent.com/) создал в одиночку американский программист Брэм Коэн (Bram Cohen). Уже в 2001 году у него была готова первая версия Bit Torrent, а через три года, в июне 2004-го, по данным исследования компании CacheLogic, более трети всего трафика в Интернете передавалось с использованием этого протокола. Подобный феноменальный успех обусловлен примененными Брэмом Коэном архитектурными решениями, которые он избрал, изучив проблемы и недостатки других P2P-сетей.

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

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

 

Рис. 6. Сайт BitTorrent

Рис. 6. Сайт BitTorrent

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

И крупные и мелкие компании довольно быстро поняли преимущества, которые они могут получить, работая с этой технологией. Сегодня BitTorrent активно используют многие Open Source-проекты, а такие компании, как Red Hat и Mandrake, на деле убедились в ее достоинствах. Распространяя свои гигабайтные дистрибутивы, они нередко сталкивались с возрастанием нагрузки на серверы, что зачастую приводило к их отказам и соответственно к проблемам с доступом. Когда же раздача файлов стала осуществляться с помощью BitTorrent, то, по словам сотрудников Red Hat, загруженность серверов снизилась примерно в сто раз.

Через BitTorrent можно скачать, например, дистрибутив браузера Opera (http://opera.com/download/torrents/). Поддержка работы с этим протоколом была включена в одну из выпущенных недавно бета-версий программы, но пока не вошла в финальную версию 8.5, доступную для скачивания на момент написания статьи.

В начало В начало

Не только файлы

Не следует думать, что P2P-технологии используются только для неконтролируемого файлообмена. Они находят применение и во многих других областях, например в службе DNS (Domain Name System) — доменных имен Интернета. Пиринговые технологии также используются многими популярными службами мгновенного обмена сообщениями, например ICQ, и системами передачи голосовых сообщений с применением пакетных технологий передачи данных, такой как Skype, использующей собственный протокол, или другими программами, работающими на базе протокола SIP (Session Initiation Protocol).

Технология P2P находит применение в распределенных вычислительных сетях. В качестве примера можно привести SETI@home (Search for Extraterrestrial Intelligence) — научный эксперимент, участники которого занимаются поиском активности внеземного разума в радиочастотном диапазоне. Другим примером распределенных вычислений может послужить такой проект, как distributed.net, участники которого занимаются легальным взломом криптографических шифров, чтобы проверить их стойкость.

Поддержка протокола PNRP (Peer Name Resolution Protocol), также относящегося к peer-to-peer-системам, была включена в состав Windows Vista Beta 1, выпущенной в конце августа текущего года. По заявлению Microsoft, включение данной функции в новую операционную систему было сделано главным образом для использования в онлайновых играх.

Подводя итоги всей статьи, хочется отметить, что технологии, лежащие в основе современных пиринговых сетей, представляют собой весьма сложные, но порой элегантные и эффективные решения. Как и любые другие технологии, они могут применяться как во благо, так и во вред. Но тормозить технический и научный прогресс, запрещая те или иные решения, которые не всегда используются правильно, — нельзя, поскольку это может привести к замедлению развития не только в данной, но и в смежных областях. Например, мы вряд ли могли бы сейчас применять голосовую связь через Интернет с помощью компьютера, если бы в свое время защитники авторских прав настояли на запрещении пиринговых сетей. Можно не сомневаться, что P2P-технологии еще преподнесут нам немало приятных сюрпризов при построении информационной среды будущего.

КомпьютерПресс 10'2005