Где хранятся файлы в пиринговых сетях
Что ни говори, но мы все привыкли делиться определенной информацией самыми различными способами. В современной глобальной сети существуют различные варианты для получения необходимых данных, но сами эти данные бывают разными. Это может быть обычный текст, музыкальная композиция, программа, видеоролик, целый фильм или что-то иное.
Для разных типов данных применяются разные способы их передачи. К одному из таких способов можно отнести пиринговые сети (P2P), с помощью которых можно обмениваться файлами практически любого размера – от совсем небольших, до тех, которые достигают нескольких десятков гигабайт. Конечно, это не единственная сфера применения одноранговых сетей (это исходное название сетей такого типа). Например, с помощью них можно производить распределенные вычисления, позволяющие задействовать удаленные компьютеры пользователей для выполнения сложной обработки данных. Но в рамках нашего материала мы будем рассматривать эту технологию, именно как удобный инструмент для файлообмена в сети между пользователями.
Пиринговые сети имеют свои правила обмена данными между пользователями, а для осуществления самого обмена требуется использование определённых программ. Наверняка многие из вас слышали такие названия, как µTorrent, eMule, Shareaza, KaZaAи прочие, которые упоминаются, как правило, когда речь заходит о получении какой-либо информацией из сети. Но давайте обо все по порядку. В этом материале мы разберемся, что же такое пиринговые сети, а так же обратим внимание на их самые важные и ключевые моменты работы, дабы принцип их существования стал более понятным.
ЧТО ТАКОЕ ПИРИНГОВЫЕ СЕТИ
Для возможности получения доступа к определенной информации, находящейся у разных пользователей, придумали компьютеры объединять в локальные сети, с помощью которых, у людей появилась возможность удаленно обмениваться данными, хранящимися на их устройствах. При этом сами способы организации сетей могут быть разными и иметь свои достоинства и недостатки.
Одним из таковых является вариант, когда все объединённые между собой компьютеры имеют равнозначные функции, то есть, могут, как принимать информацию, выступая в роли сервера, так ее и отдавать, выступая в роли клиента. Такие сети получили название одноранговых или пиринговых (P2P), от английского «peer-to-peer», что дословно можно перевести как, «равный к равному». Еще такие сетевые объединения называют децентрализованными.
ПРИНЦИП РАБОТЫ ПИРИНГОВЫХ СЕТЕЙ
По своей сути пиринговая сеть представляет собой объединение компьютеров, которое базируется исключительно на равноправии всех участников, называемых в таких системах пирами. От клиент-серверной архитектуры, легшую в основу построения Интернета, такие сети отличаются непосредственно тем, что подобная организация способна сохранить работоспособность совершенно всей пиринговой сети при любом количестве доступных узлов (пиров), а также при любом их сочетании. То есть, при работе с обычными сетями все зависит от пропускной способности самого сервера, а в случае пиринговых сетей такого существенного недостатка нет.
Что бы более наглядно понять разницу между клиент-серверной и пиринговой архитектурой, давайте рассмотрим пример передачи файла по сети в каждой из них. Любая информация в сети передается небольшими кусочками, так называемыми пакетами. Чтобы передать файл от одного компьютера другому, его тоже необходимо разделить на множество частей (пакетов), которые после скачивания собираются в единое целое на машине пользователя, который этот файл запросил.
В случае, когда используется клиент-серверная модель, вам необходимо найти в сети какой-то определенный сервер с нужным вам файлом и скачать его оттуда. При этом, скорость отдачи файла сервером, будет напрямую зависеть от его пропускной способности и загруженности в этот момент времени. То есть, если будут тысячи желающих получить единовременно какие-то данные с этого узла, то скорость отдачи в этот момент может быть очень низкой, так как возможности сервера будут поделены между всеми запросами. Так же стоит отметить, что в случае какого-либо сбоя в работе сервера, вся информация на нем станет недоступна и вам придется заняться поиском нового источника нужного файла.
С пиринговой моделью передачи данных по сети дела обстоят несколько по-другому. Здесь не нужно находить конкретный сервер (узел), содержащий необходимый вам файл. С помощью специальных каталогов достаточно просто убедиться, что он где-то присутствует в сети. Если объект найден, то вы легко его можете скачать с помощью специальной программы. Основное отличие от вышеописанного способа заключается в том, что кусочки файла будут приниматься одновременно от нескольких источников. Помните, о чем мы говорили ранее? В одноранговых сетях все компьютеры пользователей являются серверами, а это значит, что закачка файла может вестись одновременно с многих машин, на которых он имеется. Именно поэтому, если каких-то пользователей имеющих нужный вам объект в определенное время не будет в сети, то выручат другие, а скорость получения информации, будет зависеть от количества людей, имеющих ее и конечно, возможностей вашего пропускного канала.
Как уже было сказано ранее, одной из основных сфер применения P2P-сетей является обмен файлами. Описанная выше модель «чистой» одноранговой сети в современной сфере файлообмена практически не встречается. Несмотря на некоторые преимущества такого варианта, например высокую скорость распространения запросов и надежность самой системы, при такой организации обмена данными, существуют и недостатки. Одним из таковых можно назвать сложность поиска именно тех пользователей, у которых имеется нужный в данный момент времени файл и в тоже время находящихся в сети в активном состоянии. Разрешить эту трудность, удалось с помощью использования гибридных сетей, где все же существуют выделенные серверы, на которые возложены функции координации работы, поиска существующих машин в сети, а так же определения их текущего статуса («в сети» или «не в сети»). Именно такая гибридная модель и была положена в основу большинства современных пиринговых файлообменных сетей.
Для того, что бы пользователь смог стать полноправным участником, той или иной файлообменной сети, необходимо установить на свой компьютер специальную программу-клиент, с помощью которой и будет осуществляться обмен файлами. Причем для разных сетей используется разное программное обеспечение.
ПОПУЛЯРНЫЕ ФАЙЛООБМЕННЫЕ P2P-СЕТИ
В глобальной сети существует несколько десятков крупных файлообменных сетей и огромное количество небольших, например, действующих в рамках одного провайдера. Несмотря на то, что все эти системы являются одноранговыми (децентрализованными) или гибридными (частично децентрализованными) и используют общую концепцию передачи данных, характерную для этих сетей, у каждой из них могут быть свои уникальные принципы и критерии существования, протоколы передачи данных, а так же собственное клиентское программное обеспечение.
К наиболее крупным и популярным файлообменным сетям можно отнести:
- ED2K (eDonkey2000). Для обмена файлами по протоколу MFTP используется клиент eMule или более устаревший Edonkey. Поддержка этого проекта была прекращена разработчиками в 2005 году, правда сама сеть продолжает функционировать.
- BitTorrent – самая популярная файлообменная сеть, с высокой скоростью передачи данных. К основным клиентам можно отнести uTorrent, BitComet, BitSpirit, Azureusи прочие.
- Direct Connect – связанные между собой небольшие хабы (сервера), используемые для поиска информации на компьютерах участников этих сетей. Используется для организации файлового обмена в крупных районных или городских локальных сетях. Основной клиент - DC++.
- Gnutella и Gnutella2 – одноранговые сети в чистом виде, использующие для передачи данных свой собственный протокол, разработанный фирмой Nullsoft. Основные клиенты: Shareaza, LimeWire, Phex, Morpheusи прочие.
- FastTrack. Использует классическую версию протокола P2P, правда в передаче информации участвуют только те источники, которые имеют полные версии файлов. Основные клиенты – KaZaA, giFT(KCeasy) и mlDonkey.
ПРАВИЛА ФАЙЛОВОГО ОБМЕНА В ПИРИНГОВЫХ СЕТЯХ
Как и во множестве иных сообществ, в пиринговых сетях имеется определенный набор своих собственных правил, которых стоит придерживаться и стараться не нарушать. Они, вполне просты и очевидны, однако многие не всегда их выполняют, забывая, что грубые нарушения могут привести к исключению вашего компьютера из системы обмена или как минимум к отказу других пользователей делиться с вами информацией.
Как уже было сказано выше, в основе P2P-сетей лежит принцип равноправия, из которого следует, что файлы нужно не только скачивать, но и обязательно ими делиться. Это самое основное правило, нарушать которое нельзя. Если вы желаете только получать информацию, то в таком случае к вашим услугам множественные файлообменные серверы, типа DepositFiles, Rapidshare, Letitbit, Vip-Files и прочих, использующих клиент-серверную архитектуру. Правда, бесплатно скачивать данные с таких серверов получиться только после просмотра кучи рекламы и на низкой скорости.
Участвуя в обмене файлов в пиринговых сетях желательно больше отдавать информации, чем получать или как минимум делать это в равных частях. Если объем скачиваемой информации будет превышать количество отдаваемой в несколько раз, скорее всего к такому участнику будут применены штрафные санкции, не позволяющие получать данные до тех пор, пока пользователь не начнет ими делиться с другими.
Чтобы не попадать в неприятные ситуации, следует придерживаться нескольких элементарных правил:
- После того, как закончилось скачивание файла, не нужно его сразу удалять. Пока есть возможность, продолжайте держать его на вашем компьютере, чтобы дать возможность другим скачивать его.
- Не перемещайте скаченные файлы сразу же после их загрузки, иначе они станут недоступными для других пользователей.
- Без особой необходимости не стоит занижать скорость исходящего соединения. Естественно, это является определенной нагрузкой на компьютер, однако при низкой скорости отдачи и объемы информации, получаемые от вас другими пользователями, будут малы.
- Помните, что ваши интересы могут не совпадать с интересами других пользователей, так что на всякий случай, держите всегда на своем компьютере несколько популярных файлов, которые будут интересны многим.
ЗАКЛЮЧЕНИЕ
На сегодняшний день, в пиринговых сетях можно найти практически любую информацию: музыка, видеоклипы, фильмы любого качества, игры, программное обеспечение и многое другое. При этом получить все это можно абсолютно бесплатно. Конечно, все это способствует активному развитию файлообмена через P2P-сети, а количество данных, кочующих в таких системах, с каждым годом растет в геометрической прогрессии.
Правда, в последнее время над некоторыми пиринговыми сетями стали сгущаться тучи. А всему виной – распространение через них огромного количества пиратского контента. Вопрос о защите авторских прав при использовании таких сетей сейчас стоит очень остро, ведь распространение таким способом некоторых материалов, безусловно, нарушает авторские права владельцев. Некоторые правообладатели, пытаясь запретить бесплатное распространение контента, с переменным успехом добиваются запрета или ограничения на функционирование некоторых популярных серверов (трекеров) пиринговых сетей. Дискуссии на эту тему уже давно ведутся, только к какому-то конкретному выводу, равно как и действию, на данный момент, прийти, еще пока не удалось. Как следствие – защищенные копирайтом файлы как распространялись, так все еще и распространяются.
С появлением онлайн-кинотеатров и стриминговых сервисов популярность торрент-клиентов пошла на спад, однако на момент публикации с помощью торрента файлы скачивают за день около четырех процентов всех пользователей Интернета (это более 100 миллионов человек).
В данной статье я проведу небольшой обзор P2P (пиринговых) файлообменных протоколов, Napster, Gnutella и BitTorrent. В этой последовательности они появились, и каждый был вдохновлён предыдущим, взял от него лучшее и добавил своё. Каждый из этих протоколов в своё время был прорывом в обмене файлами. Первый открыл миру мощь P2P протоколов обмена данными, Gnutella стала протоколом первой действительно децентрализованной файлообменной сети, а BitTorrent на долгие годы закрепил за собой первенство пирингового обмена данными, и по настоящее время с некоторыми модификациями остаётся самым популярным P2P протоколом. Однако добавлю, что это далеко не единственные P2P протоколы обмена данными, и существуют не менее интересные eDonkey,Freenet, Direct Connect и подобные. Но обо всём по порядку.
Для начала необходимо пояснить, что является P2P файлообменным протоколом. Википедия подсказывает, что это протоколы для распространения и обмена информацией с помощью специальной программы для поиска других пользователей в сети, в которой все пользователи (пиры) являются равноправными участниками, в отличие от клиент-серверной модели обмена информацией. Для некоторых протоколов (гибридные P2P, например, Napster или BitTorrent) необходимо подключение к серверу, чтобы узнать информацию о файлах или о пользователях, у которых можно взять определённый файл. Сам же обмен данными производится между пользователями сети, в чём и заключается главная особенность P2P. Сегодня происходит расцвет криптовалют, наблюдается непрерывный рост как в стоимости криптовалют, так и в их количестве. Большая часть существующих криптовалют основывается на P2P протоколах подтверждения транзакций, который также были вдохновлены пиринговыми файлообменными сетями.
BitTorrent
BitTorrent сеть состоит из веб-сервера, который хранит метаинформацию о файлах, BitTorrent tracker (далее просто трекер, он содержит информацию о пользователях, раздающих определенные файлы), оригинального дистрибьютора файла (пользователя или пира сети), и других пиров, запустивших торрент-клиент (программа, использующая протокол).Пиры взаимодействуют между собой по протоколу TCP, в дальнейшем заменённый на разработанный uTP. Примечательно, что пиры одновременно раздают и загружают имеющиеся файлы, что позволяет построить более эффективные обменные взаимодействия между пользователями, поскольку не произойдёт такого, что все пиры, имеющие файл, скачиваю что-либо и не имеют возможности раздавать.
Для появления файла в раздаче пиру необходимо запустить трекер, создать файл с расширением .torrent, который будет хранить метаинформацию об оригинальном файле вместе с URL-ссылкой на свой трекер, и загрузить его на веб-сервер.
Другие пиры для подключения к загрузке и отдаче исходного файла загружают себе файл .torrent с сервера и торрент-клиент скачивает исходный файл на их машину, а сами пользователи подключаются к раздаче этого файла,
Метаинформационный файл .torrent состоит из ссылки на трекер раздающих пользователей и словаря, хранящего данные о файлах на раздаче, а именно их размера, имени и хэш-суммах всех частей файла. Здесь стоит упомянуть, что по протоколу файлы делятся на небольшие части (около 5MB), которые передаются по отдельности, и не обязательно от одного дистрибьютора. Оригинальный протокол использует SHA-1, что стало камнем преткновения и предпосылкой для дальнейшей модификации протокола.
3 – not interested
Посылается запрашиваемой стороной с уведомлением о части файла, которую он получил и верифицировал подлинность.
Содержит индекс пересылаемой части файла, его длину и саму эту часть. Посылается раздающей стороной.
Пир, получивший .torrent-файл и желающий загрузить соответствующие данные находит в метаинформации ссылку на трекер, и запрашивают у него информацию о раздающих (сидах, англ. seed).
Далее пир подключается к нескольких сидам с запросом различных частей файла, которые обычно идут в случайном порядке для распределения нагрузки между сидами.
После получения части, пир сравнивает её хэш-сумму с имеющейся в метафайле и подтверждает получение, либо запрашивает часть ещё раз.
В конце раздачи, когда остаются немного частей включается режим “endgame”, описанный выше. Далее пир становится на раздачу полученного файла и в трекеры заносится его ссылка на него.
Инновационным подходом в протоколе было разбиение файла на небольшие части, которые можно было получить от нескольких раздающих. Это значительно снизило нагрузку на одного пользователя и повысило безопасность протокола, поскольку серверы не имеют доступа к содержимому файлов.
Gnutella
Особенность Napster в виде центрального сервера была устранена Джастином Франкелем и Томом Пеппером в начале 2000 года в их полностью децентрализованном протоколе P2P обмена данными Gnutella. Существует несколько спецификаций, обратимся к версии 0.6.
Сеть состоит из обычных пользователей (лист, англ. leaf) и ультрапиров (англ. ultrapeer), к которым подключены листья и другие ультрапиры. Причём из-за децентрализации каждый пользователь может объявить себя ультрапиром, если удовлетворяет требованиям по пропускной способности, конфигурации системы и отсутсвию файрвола. Однако этот статус должны подтвердить уже существующие ультрапиры.
Затем взаимодействие осуществляется с помощью Протокола маршрутизации запросов (англ. Query Routing Protocol, QRP). Пользователи обмениваются таблицей маршрутизации запросов (QRT). В них имена имеющихся у пользователей файлов для обмена обрезаются, чтобы исключить грамматические особенности слов и хэшируются SHA-1. Далее в таблицу(огромный массив) заносится булевая переменная, что данный файл с данным хэшом есть у пользователя, и таблица отправляется ближайшему ультрапиру, который агрегирует таблицы своих листьев и обменивается ей между ультрапирами.
Для поиска отправляется запрос имени файла ульрапиру, который хэширует его по уже известному алгоритму, сверяет его с QRT и при совпадении отправляет запрос либо соответствующему листу, либо соседнему ультрапиру. Так запрос доходит до нужного пользователя, который уже напрямую связывается с запросившим пользователем.
Нужно сказать, что протокол дорабатывается по настоящее время, и существует более продвинутая версия Gnutella2, которая сохранила идею децентрализации сети и разбиение на обычных и ультра пользователей, но имеет более проработанные алгоритмы их коммуникации, а также алгоритмы поддержания и управления сетью, защищающие от DDoS-атак. Тем не менее оригинальная Gnutella сохраняет лидирующие позиции по количеству пользователей, исчисляемом в миллионах.
Заключение
Спасибо за внимание! Мы обсудили несколько значимых P2P протоколов обмена данных в хронологическом порядке, и их юридическое положение в разных странах. Надеюсь, вам понравился обзор. Ещё раз скажу, что данный обзор не претендует на полноту, я лишь прошелся по заметным вехам в истории данных протоколов. Данная статья ожидает своего продолжения, а я рекомендую посмотреть eDonkey, Freenet, и другие протоколы.
Проблема секьюрности информации, передаваемой в файлообменных сетях, сегодня стоит очень остро. Популярный пиринговый протокол битторрент не дает практически никаких средств защиты от посторонних глаз, выдавая IP всех пиров как на ладони. The Pirate Bay, помнится, обещал разработать свой собственный анонимный протокол, но, видимо, дело заглохло.
Еще одной проблемой битторрента является частичная централизованность. Нет серверов — нет сети (DHT не в счет, т.к. не полностью самостоятелен). Очевидно, будущее за полностью децентрализованными сетями — сетями третьего поколения. Об одной из таких я и хотел бы рассказать.
Как-то, читая torrentfreak, наткнулся на упоминание новой разработки вашингтонского университета, обеспечивающей полную децентрализацию и анонимность пользователей. Новый клиент носит имя OneSwarm («один рой»). Разрабатывают его, как я уже сказал, ребята из вашингтонского университета, известные нам еще созданием клиента BitTyrant. Разработка меня очень заинтересовала, и я решил перевести клиент на русский — разрабы очень удивились интересу аж из далекой России)). Мой перевод попал в первую же версию клиента с поддержкой локализаций. На сегодня OneSwarm уже переведен силами энтузиастов на очень много языков.
OneSwarm основан на Azureus, и обладает всей его функциональностью, т.е. поддерживается обратная совместимость нового протокола с битторрентом. По сути OneSwarm даже не новый протокол, а надстройка над битторрентом.
Разберемся поподробней, что из себя представляет эта штука. OneSwarm реализует концепцию friend-to-friend (f2f), т.е. пользователи обмениваются файлами только с теми, кому доверяют. «Такой протокол обречен на низкую популярность» — воскликните Вы, но не спешите с выводами. Трафик в OneSwarm попадает к вам не только от непосредственно ваших друзей, но и от друзей друзей и т.д., но проходит через всю последовательность непосредственных друзей между вами и тем, у кого есть искомый вами файл. Немного сумбурно, но посмотрите на картинку, и все станет ясно:
Таким образом, вы соединяетесь только с тем, кому вы доверяете, но узнать, откуда этот файл пришел изначально, невозможно. Конечно, рост нагрузки на сеть неизбежен — такова плата за приватность. Но не стоит забывать, что трафик к вам может идти не только по одной цепочке друзей, а по всем возможным. И увеличить их количество вполне реально.
От теории перейдем к практике
Добавление друзей возможно несколькими способами: среди них обмен публичными ключами, добавление через GTalk/Gmail, инвайты и посредством массового автоматического обмена ключами используя единый сервер (community server).
Обмен ключами
Здесь все тривиально. Кликаем по ссылке в левом блоке меню «Добавить друга» и в открывшемся окне вставляем код, присланный нам другом, а свой код отправляем ему.
Через пару мгновений друг появится в блоке слева. Можно выбрать статус друга. Друзья в OneSwarm различаются по уровню видимости на друзей с ограниченной видимостью и друзей с неограниченной видимостью. Неограниченные позволяют вам видеть их расшаренный материал, искать по нему и качать. Ограниченные же позволяют только искать по его расшаренному контенту и качать. Т.е. ваш ограниченный друг не сможет достоверно знать, качает ли он файл с вас или вы лишь посредник.
Разработчиками OneSwarm также создан простенький сервер на Java для массового обмена ключами. Такой сервер очень легко может поднять любой желающий. Разумеется, решение тоже кроссплатформенное. Единый сервер (или community server) является по сути базой публичных ключей пользователей. Т.е. ваш клиент время от времени опрашивает сервер на наличие новых пользователей и добавляет их вам, а вас — всем остальным. С первого взгляда это может показаться жутко несекьюрным, но здесь все сделано гениально и просто — все друзья, добавленные через единый сервер, по умолчанию ограниченные, и что-то узнать о вас вряд ли смогут.
Применение
Помимо файлообмена с анонимусами со всего мира с помощью OneSwarm очень удобно делиться файлами с друзьями (собственно, по прямому назначению :)). Например, съездили вы на шашлыки, а цифровик и, соответственно, все фото были у Пети. Петя, конечно, может залить все это на дропбокс и надавать всем участникам гулянки ссылки, а может попросту расшарить папку с фотографиями всем своим друзьям в OneSwarm. Кому надо будет, скачают. Причем скачивание будет идти по тому же принципу, что и раздачи в торрентах — оптимально и быстро. Также стоит отметить то, что видимость той или иной раздачи можно настроить очень тонко.
Кстати, в OneSwarm есть встроенный всеядный медиаплеер. Т.е. можно смотреть расшаренное видео прямо в браузере. А также есть отключаемый чат с другими участниками. Ну и не стоит забывать, что OneSwarm — это Azureus, и его можно использовать просто как торрент-клиент. Разумеется, приватности в таком случае ждать не придется.
Работа над OneSwarm ведется довольно усиленно, и каждый новый релиз существенно отличается от предыдущего добавлением новых возможностей, потому, если вы решили пользоваться им, желательно не отключать автообновление программы и следить за новостями. На данный момент актуальная версия 0.6.9. В 0.7 обещают много вкусностей.
P.S. Если кому-то интересно, можете почитать мой блог про OneSwarm — его легко нагуглить.
Что ни говори, но мы все привыкли делиться определенной информацией самыми различными способами. В современной глобальной сети существуют различные варианты для получения необходимых данных, но сами эти данные бывают разными. Это может быть обычный текст, музыкальная композиция, программа, видеоролик, целый фильм или что-то иное.
Для разных типов данных применяются разные способы их передачи. К одному из таких способов можно отнести пиринговые сети (P2P), с помощью которых можно обмениваться файлами практически любого размера – от совсем небольших, до тех, которые достигают нескольких десятков гигабайт. Конечно, это не единственная сфера применения одноранговых сетей (это исходное название сетей такого типа). Например, с помощью них можно производить распределенные вычисления, позволяющие задействовать удаленные компьютеры пользователей для выполнения сложной обработки данных. Но в рамках нашего материала мы будем рассматривать эту технологию, именно как удобный инструмент для файлообмена в сети между пользователями.
Пиринговые сети имеют свои правила обмена данными между пользователями, а для осуществления самого обмена требуется использование определённых программ. Наверняка многие из вас слышали такие названия, как µTorrent, eMule, Shareaza, KaZaAи прочие, которые упоминаются, как правило, когда речь заходит о получении какой-либо информацией из сети. Но давайте обо все по порядку. В этом материале мы разберемся, что же такое пиринговые сети, а так же обратим внимание на их самые важные и ключевые моменты работы, дабы принцип их существования стал более понятным.
ЧТО ТАКОЕ ПИРИНГОВЫЕ СЕТИ
Для возможности получения доступа к определенной информации, находящейся у разных пользователей, придумали компьютеры объединять в локальные сети, с помощью которых, у людей появилась возможность удаленно обмениваться данными, хранящимися на их устройствах. При этом сами способы организации сетей могут быть разными и иметь свои достоинства и недостатки.
Одним из таковых является вариант, когда все объединённые между собой компьютеры имеют равнозначные функции, то есть, могут, как принимать информацию, выступая в роли сервера, так ее и отдавать, выступая в роли клиента. Такие сети получили название одноранговых или пиринговых (P2P), от английского «peer-to-peer», что дословно можно перевести как, «равный к равному». Еще такие сетевые объединения называют децентрализованными.
ПРИНЦИП РАБОТЫ ПИРИНГОВЫХ СЕТЕЙ
По своей сути пиринговая сеть представляет собой объединение компьютеров, которое базируется исключительно на равноправии всех участников, называемых в таких системах пирами. От клиент-серверной архитектуры, легшую в основу построения Интернета, такие сети отличаются непосредственно тем, что подобная организация способна сохранить работоспособность совершенно всей пиринговой сети при любом количестве доступных узлов (пиров), а также при любом их сочетании. То есть, при работе с обычными сетями все зависит от пропускной способности самого сервера, а в случае пиринговых сетей такого существенного недостатка нет.
Что бы более наглядно понять разницу между клиент-серверной и пиринговой архитектурой, давайте рассмотрим пример передачи файла по сети в каждой из них. Любая информация в сети передается небольшими кусочками, так называемыми пакетами. Чтобы передать файл от одного компьютера другому, его тоже необходимо разделить на множество частей (пакетов), которые после скачивания собираются в единое целое на машине пользователя, который этот файл запросил.
В случае, когда используется клиент-серверная модель, вам необходимо найти в сети какой-то определенный сервер с нужным вам файлом и скачать его оттуда. При этом, скорость отдачи файла сервером, будет напрямую зависеть от его пропускной способности и загруженности в этот момент времени. То есть, если будут тысячи желающих получить единовременно какие-то данные с этого узла, то скорость отдачи в этот момент может быть очень низкой, так как возможности сервера будут поделены между всеми запросами. Так же стоит отметить, что в случае какого-либо сбоя в работе сервера, вся информация на нем станет недоступна и вам придется заняться поиском нового источника нужного файла.
С пиринговой моделью передачи данных по сети дела обстоят несколько по-другому. Здесь не нужно находить конкретный сервер (узел), содержащий необходимый вам файл. С помощью специальных каталогов достаточно просто убедиться, что он где-то присутствует в сети. Если объект найден, то вы легко его можете скачать с помощью специальной программы. Основное отличие от вышеописанного способа заключается в том, что кусочки файла будут приниматься одновременно от нескольких источников. Помните, о чем мы говорили ранее? В одноранговых сетях все компьютеры пользователей являются серверами, а это значит, что закачка файла может вестись одновременно с многих машин, на которых он имеется. Именно поэтому, если каких-то пользователей имеющих нужный вам объект в определенное время не будет в сети, то выручат другие, а скорость получения информации, будет зависеть от количества людей, имеющих ее и конечно, возможностей вашего пропускного канала.
Как уже было сказано ранее, одной из основных сфер применения P2P-сетей является обмен файлами. Описанная выше модель «чистой» одноранговой сети в современной сфере файлообмена практически не встречается. Несмотря на некоторые преимущества такого варианта, например высокую скорость распространения запросов и надежность самой системы, при такой организации обмена данными, существуют и недостатки. Одним из таковых можно назвать сложность поиска именно тех пользователей, у которых имеется нужный в данный момент времени файл и в тоже время находящихся в сети в активном состоянии. Разрешить эту трудность, удалось с помощью использования гибридных сетей, где все же существуют выделенные серверы, на которые возложены функции координации работы, поиска существующих машин в сети, а так же определения их текущего статуса («в сети» или «не в сети»). Именно такая гибридная модель и была положена в основу большинства современных пиринговых файлообменных сетей.
Для того, что бы пользователь смог стать полноправным участником, той или иной файлообменной сети, необходимо установить на свой компьютер специальную программу-клиент, с помощью которой и будет осуществляться обмен файлами. Причем для разных сетей используется разное программное обеспечение.
ПОПУЛЯРНЫЕ ФАЙЛООБМЕННЫЕ P2P-СЕТИ
В глобальной сети существует несколько десятков крупных файлообменных сетей и огромное количество небольших, например, действующих в рамках одного провайдера. Несмотря на то, что все эти системы являются одноранговыми (децентрализованными) или гибридными (частично децентрализованными) и используют общую концепцию передачи данных, характерную для этих сетей, у каждой из них могут быть свои уникальные принципы и критерии существования, протоколы передачи данных, а так же собственное клиентское программное обеспечение.
К наиболее крупным и популярным файлообменным сетям можно отнести:
- ED2K (eDonkey2000). Для обмена файлами по протоколу MFTP используется клиент eMule или более устаревший Edonkey. Поддержка этого проекта была прекращена разработчиками в 2005 году, правда сама сеть продолжает функционировать.
- BitTorrent – самая популярная файлообменная сеть, с высокой скоростью передачи данных. К основным клиентам можно отнести uTorrent, BitComet, BitSpirit, Azureusи прочие.
- Direct Connect – связанные между собой небольшие хабы (сервера), используемые для поиска информации на компьютерах участников этих сетей. Используется для организации файлового обмена в крупных районных или городских локальных сетях. Основной клиент - DC++.
- Gnutella и Gnutella2 – одноранговые сети в чистом виде, использующие для передачи данных свой собственный протокол, разработанный фирмой Nullsoft. Основные клиенты: Shareaza, LimeWire, Phex, Morpheusи прочие.
- FastTrack. Использует классическую версию протокола P2P, правда в передаче информации участвуют только те источники, которые имеют полные версии файлов. Основные клиенты – KaZaA, giFT(KCeasy) и mlDonkey.
ПРАВИЛА ФАЙЛОВОГО ОБМЕНА В ПИРИНГОВЫХ СЕТЯХ
Как и во множестве иных сообществ, в пиринговых сетях имеется определенный набор своих собственных правил, которых стоит придерживаться и стараться не нарушать. Они, вполне просты и очевидны, однако многие не всегда их выполняют, забывая, что грубые нарушения могут привести к исключению вашего компьютера из системы обмена или как минимум к отказу других пользователей делиться с вами информацией.
Как уже было сказано выше, в основе P2P-сетей лежит принцип равноправия, из которого следует, что файлы нужно не только скачивать, но и обязательно ими делиться. Это самое основное правило, нарушать которое нельзя. Если вы желаете только получать информацию, то в таком случае к вашим услугам множественные файлообменные серверы, типа DepositFiles, Rapidshare, Letitbit, Vip-Files и прочих, использующих клиент-серверную архитектуру. Правда, бесплатно скачивать данные с таких серверов получиться только после просмотра кучи рекламы и на низкой скорости.
Участвуя в обмене файлов в пиринговых сетях желательно больше отдавать информации, чем получать или как минимум делать это в равных частях. Если объем скачиваемой информации будет превышать количество отдаваемой в несколько раз, скорее всего к такому участнику будут применены штрафные санкции, не позволяющие получать данные до тех пор, пока пользователь не начнет ими делиться с другими.
Чтобы не попадать в неприятные ситуации, следует придерживаться нескольких элементарных правил:
- После того, как закончилось скачивание файла, не нужно его сразу удалять. Пока есть возможность, продолжайте держать его на вашем компьютере, чтобы дать возможность другим скачивать его.
- Не перемещайте скаченные файлы сразу же после их загрузки, иначе они станут недоступными для других пользователей.
- Без особой необходимости не стоит занижать скорость исходящего соединения. Естественно, это является определенной нагрузкой на компьютер, однако при низкой скорости отдачи и объемы информации, получаемые от вас другими пользователями, будут малы.
- Помните, что ваши интересы могут не совпадать с интересами других пользователей, так что на всякий случай, держите всегда на своем компьютере несколько популярных файлов, которые будут интересны многим.
ЗАКЛЮЧЕНИЕ
На сегодняшний день, в пиринговых сетях можно найти практически любую информацию: музыка, видеоклипы, фильмы любого качества, игры, программное обеспечение и многое другое. При этом получить все это можно абсолютно бесплатно. Конечно, все это способствует активному развитию файлообмена через P2P-сети, а количество данных, кочующих в таких системах, с каждым годом растет в геометрической прогрессии.
Правда, в последнее время над некоторыми пиринговыми сетями стали сгущаться тучи. А всему виной – распространение через них огромного количества пиратского контента. Вопрос о защите авторских прав при использовании таких сетей сейчас стоит очень остро, ведь распространение таким способом некоторых материалов, безусловно, нарушает авторские права владельцев. Некоторые правообладатели, пытаясь запретить бесплатное распространение контента, с переменным успехом добиваются запрета или ограничения на функционирование некоторых популярных серверов (трекеров) пиринговых сетей. Дискуссии на эту тему уже давно ведутся, только к какому-то конкретному выводу, равно как и действию, на данный момент, прийти, еще пока не удалось. Как следствие – защищенные копирайтом файлы как распространялись, так все еще и распространяются.
«Свобода — это возможность сказать, что дважды два – четыре. Если дозволено это, всё остальное отсюда следует.»
Джордж Оруэлл — «1984»
В современном мире активно развиваются различные распределенные технологии. Уже не первый год успешно функционируеют такие проекты как пиринговая платежная система Bitcoin, распределенные микроблоги (Twister), распределенные мессенджеры (например, Tox). Дошло дело и до полноценных распределенных сайтов.
Частично функционал распределённых сайтов уже реализован в таких проектах как Freenet и I2P. Однако подобные проекты имеют ряд недостатков. Например, в настоящее время Freenet не может быть использован для создания или распространения динамического контента, такого, который использует базы данных или скрипты. Для доступа к подобным сетям часто необходимо устанавливать специальное программное обеспечение или скачивать базы данных огромных размеров. Многие пиринговые сети имеют большое время отклика. Между публикацией информации и тем когда ее увидят остальные пользователи проходит немало времени.
Это одноранговая сеть предназначенная для децентрализованного распределённого хранения данных без возможности их цензурирования. Система не имеет центральных серверов и не находится под контролем каких-либо частных лиц или организаций. Создана с целью предоставить пользователям свободу слова в онлайн-пространстве. Система работает на основе объединения в общий кластер серверных нод, предоставляемых членами сети на безвозмездной основе. Все данные равномерно распределены между серверными нодами и не требуют центрального хранилища. Участники предоставляют полосу пропускания и дисковое пространство своих серверов для публикации или получения в Сети разного рода информации. Например, файлы, структуры данных и упорядоченные списки.
Как результат, подобная схема хранения данных позволяет реализовать динамические приложения, такие как блоги, новостные каналы, комментарии, закрытые групповые переписки, медиа листы, поисковые индексы и каталоги. Особенностью этих приложений является стойкость к перебоям обусловленная децентрализованной архитектурой системы. Еще одна важная особенность — невозможность цензурирования со стороны третьих лиц, в том числе со стороны разработчиков приложений.
Все данные залитые в систему обязательно подписываются автором, используя для этого криптосистемы с открытым ключом. Проверить авторство тех или иных данных всегда можно зная публичный ключ автора. В качестве криптографического алгоритма для создания цифровой подписи и шифрования данных в системе используется асимметричный алгоритм шифрования с открытым ключом основанный на ECDSA (Elliptic Curve Digital Signature Algorithm) с длиной ключа 256 бит (в частности, используется кривая secp256k1) и хеш функция SHA-256.
Как устроена сеть
В системе, в отличии от других пиринговых сетей, разделяется понятие сервера и клиента. Клиентским ПО является обычный браузер, что делает сеть более доступной в использовании для рядового пользователя по сравнению со многими другими пиринговыми сетями.
Все данные сети хранятся на серверах, предоставляемых участниками на безвозмездной основе. В идеале выделенные серверные узлы имеют доступ к хорошему интернет-каналу, что позволяет пользователям получить быстрый доступ к ресурсам сети.
Итак, участники системы для поддержания сети предоставляют свои серверные ресурсы. Для этого они устанавливают специальное серверное ПО, которое по сути представляет собой небольшой веб-сервер и БД в одном лице — так называемая серверная нода. Для работы ноды необходимо выделить внешний IP адрес (v4) и свободный порт.
Хранение данных
Кольца
Выше было оговорено, что пространство сети ограничено определённым объемом (32 ГБ) и сеть таким образом работает как огромная хеш-таблица. Все это верно для виртуального пространства, ограниченного в рамках одного так называемого Кольца.
Система колец была разработана для того, чтобы свободно масштабировать виртуальное хранилище сети и строго не ограничивать её пространство. По мере наполнения данными текущих колец, сетью будут задействованы следующие виртуальные кольца. Количество сегментов для каждого следующего кольца увеличивается в 8 раз, размер сегментов в свою очередь тоже увеличивается в несколько раз. Если точнее, в количество раз кратное двум, для разных типов хранилищ это число будет разным (см. ниже Типы хранилищ). Таким образом, суммарный объем каждого следующего кольца на порядок превышает размер предыдущего и позволяет размещать все больше и больше данных. Потенциальный рост популярности сети и, как следствие, рост числа машин дает возможность обслуживать следующие кольца, позволяя сети осуществлять по сути неограниченный рост.
Например, для хранения файлов количество сегментов в первом кольце равно 8. Во втором 64. и т.д. Размеры сегментов увеличиваются в 2 раза. Объем каждого следующего кольца, таким образом, увеличивается в 16 раз. И, к примеру, для третьего кольца он составит 16 ТБ. А для 5-го уже 4 ПБ!
В нулевом кольце всегда располагается один сегмент. Обычно в нем содержится ключевая для сети информация.
После синхронизации информации, нода сообщает о себе остальным участникам. Они в свою очередь, убедившись что новая нода корректна, обновляют свою карту сети.
Адресация документов
Для получения (или сохранения) какого-либо документа в сети нам необходимо знать его адрес. Адресом может выступать любой строковый идентификатор. От этого строкового адреса вычисляется хеш (используя алгоритм SHA-256) — так называемый uid (уникальный идентификатор документа). Для файлов подобным идентификатором выступает хеш от содержимого файла. Первые разряды полученного хеша будут говорить нам о номере сегмента, в котором располагается документ. Например,
document URI:
uid — sha256(path) (hex):
document`s coordinates:
Все данные сети имеют автора. Во время публикации каждый документ обязательно должен иметь свою цифровую подпись, которая формируется закрытым ключом его автора. Впоследствии авторство каждого документа может быть проверено при помощи его открытого ключа.
- storage — Тип хранилища. Указывается в виде одного символа. Например F,N,D,P
- ring — номер кольца в хранилище (integer)
- uid — уникальный идентификатор ресурса (hex64)
- extention — расширение файла. Говорит о типе содержимого.
- aid — уникальный идентификатор автора (хеш от его публичного сертификата длиной 20 символов), необходим в случае, когда мы запрашиваем информацию только конкретного автора для указанного адреса.
Типы хранилищ
- F — файловое хранилище
- N — хранилище доменных имен, сертификаты
- D — списки данных одного автора
- P — публичные списки данных
Файловое хранилище (тип хранилища F)
Файлы, в отличие от строковых данных, имеют некоторую специфику в адресации. Адресом файла (его uid-ом) выступает хеш sha-256 от его содержимого. Таким образом, один и тот же файл, залитый в сеть различными пользователями, будет иметь один и тот же адрес. Убедиться в том, что по заданному адресу возвращается корректное содержимое, можно проверив его хеш. Тип содержимого (Content-Type) файла указывается непосредственно в ссылке в виде расширения (extention).
- storage=F — тип хранилища “Files”,
- ring=1 — первое кольцо,
- uid=ef43. a3a0 — уникальный идентификатор файла,
- extention=txt — расширение файла, которому соответствует тип содержимого (content-type) “text/plain”
Теперь проверим хеш от содержимого полученного документа:
Все в порядке: он соответствует нашему запрашиваемому uid.
Ниже приведена таблица соответствий количества сегментов и размера кольца в зависимости от его номера для файлового типа хранилища.
Законодательные вопросы
Использование протоколов P2P, в частности BitTorrent, для обмена файлами, защищёнными авторским правом, породило множество юридических и законодательных вопросов. Всё зависит от государств и юрисдикций, в которых находятся пользователи. Потенциально, использование протоколов может повлечь юридическую ответственность как для первоначального дистрибьютора файла, так и для скачавших его пользователей в качестве соучастников.
Так, например, в Финляндии системным администраторам и владельцам торрент-сайта(трекера) были присуждены огромные штрафы в сотни тысяч евро за нарушение авторского права.
А один из старейших трекеров The Pirate Bay, расположенный в Швеции, в 2006 г. был подвергнут обыскам, и четыре сооснователя были приговорены к тюремному заключению и штрафам (двое в итоге действительно сидели в тюрьме). Однако уже через 72 часа после обысков и ареста сайт снова начал функционировать, сопровождаемый негативной реакцией прессы и общественности на действия правительства.
В 2005 году автор протокола BitTorrent Брэм Коэн, тогда уже CEO BitTorrent, Inc, которая занималась развитием протокола и разработкой новых приложений P2P сетей до покупки криптовалютным стартапом TRON, заключил соглашение с Американской ассоциацией кинокомпаний об удалении ссылок на авторский контент с официального сайта BitTorrent.
Однако в остальном вся ответственность остаётся на трекерах и пиратских сайтах с метафайлами, хотя фактически они не являются нарушением авторского права, поскольку не содержат в себе никакой защищенной информации, но это уже вопросы законодательства разных стран.
В России с недавнего времени начались попытки блокировать функциональность протокола вкупе с протоколами VPN по требованиям Роскомнадзора.
Napster
Вот здесь хорошо описана история файлообмена. Я же детально остановлюсь на P2P протоколах, заслуживающих внимания. P2P сети были известны с начала 90-x(IRC, Hotline), но первым P2P протоколом, получившим широкую известность среди пользователей глобальной сети, был Napster. Тот самый, который упоминается в “Ограблении по-итальянски” 2003 года, и сооснователем которого был Шон Паркер, сыгранный Джастином Тимберлейком в фильме Дэвида Финчера “Социальная сеть”. Можно представить, какой эффект произвело появление утилиты в 1999 году. В основе Napster стояли центральные сервера (Index Server), у которых был список всех файлов и адреса клиентов (пиров), у которых их можно скачать. Пир подключался к серверу, посылал поисковый запрос, и получал в ответ адреса других пиров с запрашиваемым файлом. Затем через тот же сервер устанавливалось соединение между пирами и производился обмен файлами, поскольку напрямую соединение было установить проблематично из-за файрволов и NAT. Таким образом, у центральных серверов была информация обо всех пирах с IP, обо всех файлах и обо всех передачах между пирами. С точки зрения приватности, это очень удручающая ситуация. Однако на тот момент это был прорыв в области распространения аудио, хотя именно эта особенность и послужила причиной упадка Napster: поскольку существовал центральный сервер компании, правообладателям было легко подать на него в суд по причине пиратства и выиграть его. Тем не менее, Napster показал миру возможности P2P протоколов, и мы плавно подходим к более современным вариантам.
Читайте также: