Пиринговые сети: что такое и с чем кушать

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

В чем суть?
Как вы знаете, большинство компьютерных сетей строится по технологии “клиент-сервер”. В этом случае два клиента обмениваются данными при посредничестве сервера, что требует от последнего большой мощности, а от канала — высокой пропускной способности.
А что, если построить сеть без сервера, соединив клиенты напрямую? Именно такую архитектуру имеют так называемые пиринговые (или p2p) сети (от английского выражения peer-to-peer, что значит “равноправный обмен”). Устанавливаемое на машину, включенную в такую сеть, клиентское ПО работает и как клиент, и как сервер. Топология типичной p2p-сети представлена на рисунке.

Суть в следующем: я, любитель халявы, в поисках жизненно необходимого контента запускаю программу-клиент пиринговой сети и ввожу в ней свой запрос. Программа в свою очередь отправляет запрос на сервер, который ищет необходимое в своей­ базе данных, где, возможно, указан адрес, с которого я могу скачать искомое. Этот адрес получает мой клиент — и соединяется напрямую с машиной, где лежит нужный файл, и скачивает его. Скорее всего, сервер выдаст несколько адресов, и мой клиент будет с каждого из них получать по кусочку файла. Примерно так работают менеджеры закачки, только они получают куски с одного сервера.
Очевидно, что скачанный кусок тут же становится достоянием общественности, и с моей машины также могут начать его закачку. Воспротивиться я просто не вправе, так как здесь действуют свои правила…
1. Если вы скачали файл, не удаляйте его в течение некоторого времени, дайте скачать его другим пользователям;
2. Без необходимости не следует тормозить исходящий канал. Да, это нагрузка на вашу машину, но ведь другие тоже хотят что-нибудь скачать;
3. Делитесь имеющимися у вас файлами, которые могут представлять интерес для остальных.
Естественно, пиринговую сеть можно использовать не только для поиска и скачивания музыки, фильмов и софта, но и как сеть распределенных вычислений. Ярким примером является проект SETI@HOME, который продемонстрировал огромный вычислительный потенциал для хорошо распараллеленных задач.
Пиринговые сети могут использоваться для передачи мгновенных сообщений — вспомним AOL и ICQ.
В настоящее время существует и прекрасно функционирует несколько файлообменных сетей, которые можно разделить на два типа:
1) сети, в которых взаимодействие клиентов происходит напрямую, центрального сервера нет;
2) сети, в которых есть центральный сервер.
Самые известные пиринговые сети: eDonkey 2000, Kazaa, Gnutella, BitTorrent, Napster. О них мы сейчас и поговорим.

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

eDonkey 2000
Данная сеть, клиент которой называют попросту “Ослом”, относится ко второму типу, но с некоторой поправкой: серверов сразу несколько. Свеженький список действующих серверов можно найти по ссылке ocbmaurice.dyns.net/pl/slist.pl.
Серверы играют роль “адресной книги”, а сама закачка производится напрямую между клиентами. Интересной особенностью данной сети является то, что как только пользователь начал качать какой-то файл, его машина становится “местом, где этот файл можно скачать”. Причем даже если файл переименован, он все равно будет опознан по своеобразному индексу.
Естественно, для присоединения к обществу “ословодов” необходима программа-клиент, которая существует в версиях для Windows, MacOS и Linux. Любую из них можно скачать с сайта www.edon­key.com. Для тех, кого не устроит основной вариант клиента под Linux, существует альтернатива, лежащая на сайте ed2k-gtk-gui.sourceforge.net.

eMule
Появление сети eMule (в народе — “мул”) было спровоцировано нежеланием разработчиков eDonkey обращать внимание на жалобы пользователей на работу клиента.eMule использует те же порты, что и eDonkey (4661—4665), прекрасно уживается со старыми версиями eDonkey и без проблем откликается на «ослиные» ссылки. В целом eMule весьма схож с eDonkey, но предоставляет пользователю гораздо больше информации: например, при подключении к серверам и в процессе работы можно наблюдать динамически меняющиеся данные о недобросовестных клиентах.
К безусловным преимуществам eMule можно отнести: возможность получения списка серверов не только от сервера, но и от других клиентов; полезную систему рейтинга, обеспечивающую определенный консенсус между процессами скачивания и закачивания; встроенную функцию предварительного просмотра фильмов (если загружены куски файла с началом и концом фильма); встроенный IRC-клиент; гибкое регулирование скорости скачивания с вашей машины (исходящий трафик можно разбить на относительно равные порции между заданным числом скачивающих).
К сожалению, сайт www.emule.com, как бы так выразиться помягче, совсем не информативен, поэтому найти клиент для Windows проще всего здесь: prdownloads.sourceforge.net/emule, для Linux — здесь: www.amule.org. Если хочется что-нибудь почитать, зайдите на сайт www.emule-project.net.

Kazaa
Сеть процветает и является самой большой и популярной из ныне действующих. “Народное” название — “коза рогатая”. К достоинствам данной сети относят возможность качать файл по кусочкам у разных пользователей, возможность докачки, исчерпывающую информацию о файле (размер, битрейт, размер экрана, артист, название), выводимую в результате поиска. Недостатки здесь не отстают от достоинств: поиск выводит только 100 вариантов, недокачанные файлы обзываются как kazaaXXXXXXXXX.dat (именно так!), где XXXXXXXXX — дата и еще какая-то информация. И как прикажете разбирать склад из таких файлов?!
Как это ни странно, но на официальном сайте (kazaa.com) я нашел клиент­ только для Windows. Найти клиенты под другие платформы не удалось…

Gnutella
Gnutella — протокол, передающий запрос пользователя не центральному серверу, а другому пользователю. В этом случае машина пользователя является и клиен­том, и сервером одновременно. Очевидно, что количество опрошенных машин разрастается в геометрической прогрессии. В настоящий момент протокол Gnutella не пользуется популярностью у пользователей. Причина этого — протокол FastTrack (база пиринговых сетей, использующих центральный сервер) четче обрабатывает запрос, быстрее осуществляет поиск и является более стабильным. Также на (не)популярность влияет тот факт, что половина контента предоставляется всего лишь сотой частью пользователей, остальные просто пользуются!
На сайте www.gnutella.com выложено огромное число программ для работы с этой сетью. Для каждой из ОС (Windows, Linux и MacOS) есть не менее трех альтернативных Gnutella-клиентов. Однако под Windows у меня согласилась работать только одна — Phex.

BitTorrent
BitTorrent — еще одна популярная сеть. Конечно, в ней нет такого количества пользователей, как в eDonkey и Kazaa, но этого и не требуется. Сеть предназначена в основном для передачи больших файлов. В сети имеется так называемый сервер-“тракер”, хранящий специальные “торрент”-файлы и распределяющий нагрузку. “Торрент”-файл — это специальный файл, в котором хранится информация об имени и размере файла, хэш-коды сегментов (обычно размер сегмента равен 256 Кбайт) и адрес машины, с которой данный файл можно скачать. Если пользователь начал качать файл, на его машине автоматически открываются для скачивания уже полученные части.
В этой сети есть свое именование пользователей: пользователь, предостав­ляющий на скачивание файл, носит имя Seed, пользователь, скачивающий данный файл и предоставляющий его части на скачку всем остальным, именуется Peer.
Если кто-то заинтересовался этой сетью, то на сайте (www.bittorrent.com) лежит последняя версия клиента под Windows. Пользователи Linux срочно отправляются на сайт ktorrent.pwsp.net за клиентом под любимого Пингвина.

Заключение
Может сложиться впечатление, что подключение к пиринговой сети позволяет забыть о постоянном рыскании по FTP-серверам и поисковикам, но это не так. Здесь, как и во всяком новом начинании, появляются проблемы, требующие своего решения на благо всех сетян.
Например, существует проблема так называемого паразитического подключения: в сети появляются серверы, предостав­ляющие своим пользователям возможности по поиску контента без установки программы-клиента. Таким образом, получая информацию и генерируя гигантский трафик, такие серверы ничего не предоставляют сетевому сообществу взамен. Впрочем, последние версии ряда программ уже способны с этим справляться — они распознают запросы “паразитов” и либо их игнорируют, либо предлагают установить-таки клиентскую часть.
Другая проблема p2p-сетей связана с тем, что обмен информацией осуществляется между “незнакомыми” узлами (отсутствует опыт по обмену в прошлом), что порождает вполне объяснимые сомнения в качестве и достоверности предоставляемого контента. Здесь приходится подключать все средства обороны — брандмауер, антивирус, голову…
Но, тем не менее, технология p2p лишний раз доказывает, что история имеет тенденцию повторяться. Подзабытые во времена эйфории по поводу клиент-серверных технологий одноранговые модели возвра­щаются, превращаясь в популярные и самое главное — востребованные решения.
Напоследок замечу, что клиент BitTorrent “весит” 6.7 Мбайт, клиент eDonkey — 3.1 Мбайт. Скачанный клиент для Kazaa на поверку оказался инсталлятором, который берет установочные файлы из Интернета, а программа Phex требует Java 2 Runtime Enviroment (весит ~14 Мбайт). Так что, господа, приготовьтесь потратить определенную сумму на скачивание. Конечно, кое-чем могу поделиться я сам…
P.S. В следующий раз мы рассмотрим клиенты указанных пиринговых сетей под Windows…


Рекомендуем почитать: