Что такое пиринговые сети? Принцип работы и правила файлового обмена

Введение………………………………………………………………………...…3

Глава 1. Пиринговые сети ………….….….…..……………………………...…..4

      Общее понятие …………...............................................................…4

      Одноранговая сеть ….........................................................................7

      Пиринговая файлообменная сеть ………………………...………..9

Глава 2. Сети и протоколы(на примере eDonkey2000)………………………..10

      eDonkey2000 (сеть)……….……………………………………..….10

Заключение …………………………………………………….………………...13

Список литературы…………………………………………….………………...15

Электронные ресурсы…………………………………………………………...16

Введение

Все мы каким-то образом делимся информацией с окружающими нас людьми. В случае, когда мы делимся файлами с помощью программ типа eMule(еМул), eDonkey (еДонки), и им подобных, такого рода обмен сопряжён с работой огромной машины, принципы работы которой, её истоки и идеи, на которых она построена, мы зачастую представляем себе довольно слабо.

Необходимость иметь доступ к огромному количеству информации, лежащей на других компьютерах, сначала породила локальные сети. Это помогло на некоторое время, но объединить таким образом большое количество компьютеров оказалось невозможно. Возможность же доступа к файлам, возможно имеющихся у кого-то ещё, была очень заманчива. Поэтому была предложена система, позволяющая принимать и передавать файлы с каждого компьютера, с которым есть связь и на котором имеется определенное программное обеспечение. Такие системы получили название п2п (p2p) или пиринговых (peer-to-peer) сетей. Это словосочетание можно перевести как «равноправный обмен». Это значит, что вы, имея некоторые файлы, которые могут быть интересны кому-то ещё, разрешаете желающим их у вас скопировать, а взамен получаете возможность получить файлы, необходимые вам, от тех, у кого они есть.

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

Глава 1. Пиринговые сети

1.1. Общее понятие

Одной из основных трудностей реализации подобного обмена являлось то, что было необходимо каким-то образом найти тех, у кого есть то, что вам нужно. Для решения этой проблемы существуют два основных пути: централизованый и распределённый серверы. В случае работы с централизованным сервером каждый пользователь должен зарегистрироваться на этом сервере, который соберёт информацию о пользователе (файлы, доступные для обмена, идентификатор пользователя и т.д.), а затем внести эту информацию в свою базу данных, по которой и будет в дальнейшем идти поиск. Все запрошенные пользователем файлы, будут искаться в базе данных центрального сервера, а найденные ссылки будут передаваться пользователю для установления прямой связи именно с тем компьютером, на котором есть нужная информация. Именно на таком принципе работает популярная КаЗа (KaZaa) и другие пиринговые приложения. Описанный способ обмена файлами с помощью одного или нескольких центральных серверов основан на так называемом протоколе ФастТрак (FastTrack), который является коммерческим, что несколько негативно влияет на разработку приложений, его использующих.

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

Несомненным первопроходцем пиринговых систем стал Напстер (Napster),попавший под горячую руку защитников авторских прав. Через несколько месяцев после появления Напстера свет увидел ИМеш (IMesh). В отличие от Напстера, ИМеш жив и поныне.

После закрытия Напстера пиринговые приложения стали появляться с чудовищной скоростью и к настоящему времени их существует довольно много. Периодически одни погибают, другие рождаются и перерождаются. Одним из самых известных в мире является КаЗа, а в рунете – разновидности еМул (eMule) и еДонки (eDonkey).

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

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

1. После скачивания не удаляйте файл сразу. Пока есть возможность – подержите и дайте его скачать другим.2. Не зажимайте скорость исходящего соединения без необходимости. Конечно, это нагрузка на ваш компьютер, но ведь другие тоже хотят что-то получить.3. Делитесь файлами. Если у вас есть то, что может быть интересно кому-то ещё.

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

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

Идея условно-бесплатного и одновременно легального распространения вполне коммерческого контента, также имеет право на существование. Едва ли не основным аргументом защитников пирингового обмена является то обстоятельство, что достоверной связи между количественным ростом файлообмена и снижением официальных доходов от продажи контента (музыки на компакт-дисках, видео на DVD и т.д.) не наблюдается. Данные RIAA о падении доходов индустрии с этой точки зрения объясняются неблагоприятной общеэкономической конъюнктурой и медлительностью медиагигантов в отношении вывода на рынок новых продуктов. Более того, львиная доля тех, кто слушает скачанную в Интернете MP3-музыку, впоследствии покупает понравившиеся альбомы на CD ради их лучшего качества.

1.2 Одноранговая сеть

Однора́нговые, децентрализо́ванные или пи́ринговые (от англ. peer-to-peer, P2P - один на один, с глазу на глаз) сети - это компьютерные сети, основанные на равноправии участников. В таких сетях отсутствуют выделенные серверы, а каждый узел (peer) является как клиентом, так и сервером. В отличие от архитектуры клиент-сервер, такая организация позволяет сохранять работоспособность сети при любом количестве и любом сочетании доступных узлов.

Впервые фраза «peer-to-peer» была использована в 1984 году Парбауэллом Йохнухуйтсманом (Parbawell Yohnuhuitsman) при разработке архитектуры Advanced Peer to Peer Networking фирмы IBM.

Устройство одноранговой сети

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

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

Помимо чистых P2P-сетей, существуют так «гибридные сети», в которых существуют сервера, используемые для координации работы, поиска или предоставления информации о существующих машинах сети и их статусе (on-line, off-line и т. д.). Гибридные сети сочетают скорость централизованных сетей и надёжность децентрализованных благодаря гибридным схемам с независимыми индексационными серверами, синхронизирующими информацию между собой. При выходе из строя одного или нескольких серверов, сеть продолжает функционировать. К частично децентрализованным файлообменным сетям относятся например EDonkey, BitTorrent.

Частично децентрализованные (гибридные) сети

Помимо чистых P2P-сетей, существуют так называемые гибридные сети, в которых существуют сервера, используемые для координации работы, поиска или предоставления информации о существующих машинах сети и их статусе (on-line, off-line и т. д.). Гибридные сети сочетают скорость централизованных сетей и надёжность децентрализованных благодаря гибридным схемам с независимыми индексационными серверами, синхронизирующими информацию между собой. При выходе из строя одного или нескольких серверов, сеть продолжает функционировать. К частично децентрализованным файлообменным сетям относятся например EDonkey, BitTorrent.

1.3 Пиринговая файлообменная сеть

Одна из областей применения технологии пиринговых сетей - это обмен файлами: пользователи сети выкладывают какие-либо файлы в «расшаренную» (англ. share) папку, файлы из которой доступны для скачивания другим клиентам. Другой пользователь сети посылает запрос на поиск какого-либо файла. Программа ищет у клиентов сети файлы, соответствующие запросу, и показывает результат. После этого пользователь может скачать файлы у найденных источников. Современные файлообменные сети позволяют скачивать один файл сразу с нескольких источников (так быстрее и надёжнее). Чтобы убедиться, что этот файл у всех источников одинаковый, производится сравнение:по названию файла,по контрольным суммам или хэшам типа MD4, TTH, SHA-1. Во время скачивания файла пользователем (и после его окончания) этот файл у него могут скачивать и другие клиенты сети, в результате чего особенно популярные файлы могут в итоге быть доступными для скачивания с сотен источников одновременно.

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

Глава 2. Сети и протоколы(на примере eDonkey2000)

2.1 eDonkey2000 (сеть)

eDonkey2000, eDonkey, eD2k - файлообменная сеть , построенная по принципу P2P на основе сетевого протокола прикладного уровня MFTP . Распространённые в Рунете неформальные названия: «ослик», «осёл».

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

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

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

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

Принцип работы: Client Z имеет все части Файла (символы строчных букв представляют части файла). Client W, X, и Y хотят загрузить Файл. Начиная с Client X и Client Y, оба имеют различные части Файла, они могут не только получить файл от Client Z, но и могут посылать файл друг другу. Это позволяет файлу быть распределённо распространённым намного быстрее без того, чтобы использовать большее количество ширины канала Client Z. Client W может запустить загрузку файла, даже если источник файла (Client Z) больше не имеет достаточной ширины канала для отсылки.

Периодически серверы связываются друг с другом на короткое время. Во время этого сеанса связи сервер, объявляя о своём существовании, посылает список всех других известных ему серверов. Таким образом, серверы поддерживают список других активных серверов. Когда клиент подключается к серверу, сервер может выдать ему список известных ему серверов.

Популярные файлообменные сети:

    ED2K она-же eDonkey2000 - сеть централизованного типа, крупнейшая из ныне существующих файлообменных сетей. Поиск выполняют специализированные серверы, связанные между собой. Клиенты самостоятельно обмениваются по протоколу MFTP . Компания MetaMachine разработчики исходной концепции и первого клиента основанного на веб-интерфейсе (Edonkey 2000 v1.4.5) в 2005 году прекратили поддержку этого проекта, однако сеть продолжает функционировать за счет более совершенного и более мощного клиента eMule , который использует механизмы Kademlia для построения децентрализованного сегмента eD2k.

BitTorrent (букв. англ. «битовый поток») - пиринговый (P2P ) сетевой протокол Коэна для кооперативного обмена файлами через Интернет.

Не менее популярная файлообменная сеть. Файлы передаются частями, каждый torrent-клиент, получая (закачивая) эти части, в это же время отдаёт (подкачивает) их другим клиентам, что снижает нагрузку и зависимость от каждого клиента-источника и обеспечивает избыточность данных. Отличается высокой скоростью и централизованностью. Некоторые BitTorrent клиенты поддерживают DHT и могут работать без центрального сервера (т. н. трекера). Поддерживается клиентами BitComet , µTorrent , FreeDownloadManager и др.

Kad Network - децентрализованная безсерверная файлообменная сеть , которая использует протокол оверлейной сети Kademlia . Поддерживается в eMule (Kad 2.0), aMule и MLDonkey . При передаче файлов, подключения клиентов происходят напрямую друг с другом (используя стандартные IP-сети ). Как только происходит соединение с сетью, клиент запрашивает других клиентов, чтобы определить, может ли он свободно с ними соединиться. Этот процесс похож на определение HighID/LowID на серверах. Если вы можете свободно соединяться, вам дается ID (высокий, HighID) и получаете статус open в Кад сети. Если вы не можете соединяться свободно, вы получаете статус firewalled (соответственно LowID).

Заключение

Возникновение пиринговых сетей связано с тремя факторами.

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

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

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

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

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

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

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

Преимущество поиска в ширину состоит в том, что просматривая значительную часть сети, он увеличивает вероятность удовлетворения запроса. Недостатком является перегрузка сети лишними сообщениями.

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

Список литературы

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

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

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

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

Первая мысль, которая приходит в голову после знакомства с сетями P2P звучит примерно так: если мы отдаем друг другу файлы, то это значит, что я должен быть круглые сутки в сети? Нет, это не совсем так. Представим себе, что вы сделали превосходную фотографию своего города с высотного здания. Отличный снимок, отличного качества, занимающий размер 20 МБ. Понятно, что файл является совершенно уникальным и другого такого нет. Вы выкладываете его в доступную для всех папку и другой пользователь начинает его качать. После завершения скачивания он также выкладывает вашу фотографию для всех пользователей. В результате, в сети уже есть два источника, предлагающих ваш файл. Третий пользователь, который входит в сеть, будет видеть, что этот файл есть в двух местах. Он уже будет получать его по частям сразу из двух источников. В результате, скорость скачивания увеличится вдвое. Для четвертого участника файл будет доступен из трех источников, для пятого – из четырех и т.д. Если этот файл будет в 5-10 источниках, то понятно, что если один из пользователей решит пойти спать и выключит свой компьютер, то число доступных источников просто станет меньше на единицу. Немного уменьшится скорость загрузки, только и всего. Возможность скачивать один и тот же файл одновременно с множества компьютеров – вот замечательная особенность пиринговой сети.

А как определяются файлы? Не получится так, что ваш файл "Мой любимый город.tiff" (20 МБ) совпадет с файлом другого фотографа, который также назвал свою работу "Мой любимый город.tiff" и который тоже занимает объем ровно 20 МБ? Не получится ли так, что пользователи, качающие этот снимок из двух источников одновременно, получат в результате неработающую мешанину? Нет, такие ситуации исключены. Дело в том, что при выкладывании файла в сеть он получает уникальный хеш-код, который определяет данный файл совершенно точно. Разные файлы, имеющие абсолютно одинаковые названия и даже размеры, получат разные хеш-коды и никогда не перепутаются. Однако один и тот же файл, расположенный на разных компьютерах, будет иметь одинаковый хеш-код, и будет выдаваться с множества источников.

Пиринговых сетей много (http://ru.wikipedia.org/wiki/Одноранговая_сеть). Пожалуй, самые крупные и популярные это eDonkey и Kademlia. Это частично децентрализованые или гибридные сети, в которых часть координационных функций обрабатываются специальными серверами. Но материалы по-прежнему хранятся на компьютерах пользователей. Для работы с этими сетями разработана специальная программа eMule (http://www.emule-project.net/). Скачиваем программу (~ 3,2 МБ) при помощи обычного браузера, устанавливаем и начинаем ее настраивать. Весь процесс нас сопровождает мастер, поэтому ошибиться в чем-либо сложно. Указываем название своего компьютера – под этим именем он будет отображаться в сети (рис. 9.14):

Рис. 9.14. Задание имени компьютера

Это имя желательно указывать вместе с языком, например так chk (rus). Дело в том, что без этого вас могут не пустить на некоторые российские сервера. Впрочем, имя можно будет легко поменять в настройках программы. В следующем шаге мастера нам предлагается проверить работу портов, работающих по умолчанию (рис. 9.15):

Рис. 9.15. Проверка портов

В подавляющем большинстве случаев все будет работать по умолчанию – если наш Интернет-провайдер ничего не блокирует. Впрочем, нажимаем на кнопку "Тест портов" и оказываемся на сайте программы, где выдается результат успешной проверки (рис. 9.16):

Рис. 9.16. Успешное тестирование портов

Далее нам предстоит согласиться с политикой о приоритете файлов. Идея ее заключается в том, чтобы скачивание файлов с небольшим количеством источников осуществлялось независимо от загрузки популярных файлов. Словом, соглашаемся с отмеченными галочками и нажимаем на кнопку "Далее" (рис. 9.17):

Рис. 9.17. Настройка приоритета

Вуалирование (от слова "вуаль") работы приложения позволит обойти ограничения, которые могут налагаться вашим провайдером. Попробуем работать без этого вуалирования (рис. 9.18):

Рис. 9.18. Настройка вуалирования

По умолчанию, eMule предлагает работать сразу с двумя пиринговыми сетями – eDonkey (eD2K) и Kademlia (Kad). Оставим без изменений эту настройку – чем больше сетей, тем больше в них доступных файлов (рис. 9.19):

Рис. 9.19. Выбор пиринговых сетей

Все, настройка завершена. Мастер еще раз напоминает, что все внесенные значения доступны для изменений в ходе работы в настройках программы (рис. 9.20):

Рис. 9.20. Завершение работы мастера

Последнее, что нам осталось сделать – указать пропускную способность нашей линии. Выбираем правильное значение из списка (рис. 9.21):

Рис. 9.21. Выбор пропускной способности канала

Этот шаг очень важен, поскольку eMule учитывает настраиваемую и реальную скорости соединения. Если вы не знаете, какая у вас скорость, то воспользуйтесь одним из сайтов, позволяющих ее определить (см. лекцию 4).

Приступим к скачиванию файлов. Нажимаем на кнопку "Поиск", вводим название, которое нам нужно найти, например "Ubuntu Linux", нажимаем кнопку "Старт". Результаты поиска выводятся в окно программы (рис. 9.22):

Рис. 9.22. Результаты поиска

Заметим, что выпадающий список "Тип" предназначен для установки фильтра поиска по содержимому – видео, изображение, музыка и т.д.

Здесь мы видим файлы-образов iso. Такие файлы могут быть смонтированы на виртуальном дисководе, например, с помощью программы Alcohol 120% (http://www.alcohol-soft.com/). Для нас это впрочем, не суть важно – все, что мы хотим – это скачать его. В поле "Доступность" мы видим разные значения от 1 до 22. Это число пользователей, у которых есть файл или число источников. Мы помним, что чем больше источников, тем больше скорость закачки. Поэтому нужно стараться выбирать файлы, для которых указывается не менее 5-6 источников. Поле "Полные источники" указывает полноту файла. Если на всех 5 компьютерах есть полный вариант одного файла, то значение будет 100%. Это обстоятельство также следует учитывать.

Выделяем нужную строку, щелкаем по ней правой кнопкой и выбираем пункт меню "Приём" (рис. 9.23):

Рис. 9.23. Запуск скачивания файла

Нажимаем на кнопку "Передача" и видим, что скачивание не началось, ничего не происходит (рис. 9.24):

Рис. 9.24. Начало загрузки файла

Именно здесь большинство пользователей, сталкивающихся с eMule, начинают думать, что у них что-то не работает, после чего закрывают программу и теряют интерес всякий к пиринговым сетям. Дело в том, что при обычном скачивании файлов – особенно на хорошей скорости, мы привыкли, что загрузка начинается моментально. Если она не начинается, значит что-то не работает. Но пиринговых сетях действует принцип "Ты мне – я тебе". Чем больше мы отдаем материалов в сеть, тем больше у нас рейтинг, тем быстрее у нас начинается скачивание. Вы помните? Материалы хранятся на обычных компьютерах пользователей, которые связаны с Интернетом обычным каналом связи, а не выделенной многомегабитной линией, как в случае дата-центров. Следовательно, если десять человек хотят скачать один файл, то они будут становится в очередь. Вперед пропускают "старичков", которые сами уже принесли пользу, т.е предоставили какие-то интересные файлы. Нам придется немного подождать. Сколько? Это зависит от актуальности файла, числа источников, словом, многих параметров. Впрочем, в большинстве случаев закачка начнется спустя разумный промежуток времени. Например, в данном случае менее чем через 10 минут скачивание началось (рис. 9.25):

Рис. 9.25. Файл начал закачиваться

На скриншоте мы видим, что сразу три источника начали отдавать этот файл. Скорость небольшая – порядка 10 Кбит\сек., но это максимальная скорость моего канала. Пиринговые сети не виноваты, eMule – тоже. На большем соединении скорость будет соответственно больше.

Самое удивительное, что скачав даже небольшую часть файла, мы сразу же становимся его источником. Другие пользователи могут подключаться уже к нашей машине и получать совсем маленькие кусочки. Нажимаем на кнопку "Статистика" и видим график приема и отдачи в режиме реального времени (рис. 9.26):

Рис. 9.26. Статистика обмена файлами

Для того чтобы повысить свой рейтинг, продвигаться быстрее в очереди и получать файлы одновременно из многих источников, мы тоже должны что-то интересное предложить другим пользователям. Нажимаем на кнопку "Файлы"и видим проводник нашего компьютера. Главная ошибка всех начинающих заключается в том, что они открывают доступ (расшаривают) весь свой диск (рис. 9.27):

Рис. 9.27. Неправильное открывание доступа ко всему диску

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

Рис. 9.28. Открывание доступа к специально выделенной папке

Если понадобится, то в будущем закроем доступ к этой папке схожим образом (рис. 9.29):

Рис. 9.29. Закрывание доступа к папке

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

Как мы уже отмечали, пиринговая сеть способна полностью занять наш канал связи. Чтобы этого не произошло, в настройках программы доступна установка лимита для приема и отдачи файлов (рис. 9.30):

Рис. 9.30. Настройка лимита соединений

Программа eMule содержит встроенный Интернет-пейджер IRC и систему отправки сообщений – что-то вроде почты. Эти средства позволяют договариваться отдельным пользователям о привилегированной передаче материалов друг-другу. Как обычно, такое действие называется "подружиться", стать френдом. Впрочем, привилегированные обмены файлами не влияют на рейтинги пользователей.

Начиная работать с программой eMule, полезно почитать справочные материалы http://www.emule-project.net/home/perl/help.cgi?l=34.

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

Что такое P2P или одноранговая сеть?

Peer-to-peer, или сокращенно P2P сеть, - это вид компьютерных сетей, использующих распределенную архитектуру. Это означает, что все компьютеры или устройства, входящие в нее, используют рабочие нагрузки в сети совместно. Компьютеры или устройства, которые являются частью пиринговой сети, называются пирами. Каждый узел одноранговой сети, или пир, равен другим пирам. Привилегированных участников нет, как и нет центрального административного устройства. Таким образом, сеть децентрализованная.

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

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

  • Процессорные мощности
  • Дисковое пространство
  • Пропускная способность сети

Что делают сети P2P (peer-to-peer)?

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

Рассмотрим ситуацию: вы открываете свой веб-браузер и посещаете веб-сайт, где вы загружаете файл. В этом случае сайт работает как сервер, а ваш компьютер действует как клиент, который получает файл. Вы можете сравнить это с дорогой с односторонним движением: загружаемый файл - это автомобиль, который идет от точки A (веб-сайт) до точки B (ваш компьютер).

Если вы загружаете один и тот же файл через одноранговую сеть, используя сайт BitTorrent в качестве отправной точки, загрузка выполняется по-разному. Файл загружается на ваш компьютер по частям, которые поступают со многих других компьютеров, у которых уже есть этот файл, в P2P сеть. В то же время файл также отправляется (загружается) с вашего компьютера другим лицам, которые его запрашивают. Эта ситуация похожа на двухстороннюю дорогу: файл похож на несколько небольших автомобилей, которые приходят на ваш компьютер, но также отправляются к другим пользователям, когда они его запрашивают.

Почему одноранговые сети полезны?

Сети P2P имеют несколько особенностей, которые делают их полезными:

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

Зачем нужны пиринговые сети? Легальное использование P2P сетей

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

  • Когда вы в своем доме подключаете устройство на Windows к домашней группе компьютеров, вы создаете между ними одноранговую сеть. Homegroup - небольшая группа компьютеров, которые связаны между собой для совместного использования дискового пространства и принтеров. Это одно из самых распространенных применений для одноранговой технологии. Некоторые люди могут сказать, что домашние группы не могут быть одноранговыми, поскольку компьютеры в сети подключены к маршрутизатору. Однако имейте в виду, что маршрутизатор никак не связан именно с управлением сети. Маршрутизатор не работает как сервер, а просто как интерфейс или связующее звено между локальной сетью и Интернетом.
  • Когда вы создаете сеть между двумя компьютерами, вы создаете пиринговую сеть.
  • Совместное использование больших файлов в интернете часто выполняется с использованием сетевой архитектуры P2P. Например, некоторые онлайн-игровые платформы используют P2P сеть для загрузки игр между пользователями. Blizzard Entertainment распространяет Diablo III, StarCraft II и World of Warcraft с использованием P2P. Другой крупный издатель, Wargaming, делает то же самое со своими играми World of Tanks, World of Warships и World of Warplanes. Другие же, такие как Steam или GOG, предпочитают не использовать P2P, а поддерживать выделенные серверы по всему миру.
  • Обновления Windows 10 поставляются как с серверов Microsoft, так и через сеть P2P.
  • Многие операционные системы Linux распространяются через BitTorrent, которые используют одноранговые сети. Такими примерами являются Ubuntu, Linux Mint и Manjaro.
  • И наконец, технология блокчейн использует одноранговые децентрализованные сети для записи информации в распределенном реестре на всех компьютерах сети одновременно. (Более подробно читайте в статьях «Что такое блокчейн простыми словами? » и «Что такое распределенный реестр? »)

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

История сетей P2P

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

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

Хотя Napster был тем, кто вывел P2P в мейнстрим, проект в конечном итоге потерпел неудачу и был закрыт властями по причине незаконного распространения контента.

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

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

Незаконное использование одноранговых сетей

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

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

В качестве примера текущий движок позволяет добавлять такие сервисы как:

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

Сайт в соответствии с последними веяниями имеет адаптивный дизайн и вполне корректно отображается и редактируется на мобильных устройствах.

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

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

Инфраструктура проекта

Установка серверного ПО

Для поддержки проекта и развития сети любой желающий может предоставить свои серверные ресурсы. Для этого на своем сервере необходимо установить и запустить серверную ноду.
  1. Перед установкой ноды необходимо убедиться, что на сервере уже установлена платформа Node.js или установить ее в соответствии с инструкцией
  2. Скачать репозиторий с github

    Git clone https://github.com/basenetwork/base.server-node

  3. Установить модуль sqlite3 для Node.js

    Cd base.server-node && npm install sqlite3 --build-from-source && cd ..

  4. запустить ноду nohup base.server-node/base.node.js --size=32 >/var/log/base.node.log &
В качестве параметра size необходимо указать свободный объем на диске (в ГБ), который вы готовы выделить под ноду.
Для работы ноды необходимо выделить внешний IP адрес и свободный порт. По умолчанию система попытается автоматически использовать один из внешних IP адресов в списке network interfaces операционной системы. Возможно вручную указать IP-адрес и порт, используя параметры запуска --host и --port:

Nohup base.server-node/base.node.js --size=32 --host=41.34.55.66 --port=2222 >/var/log/base.node.log &
Проверить работоспособность ноды можно, сделав http-запрос к веб-серверу:

Curl http://41.34.55.66:2222/-/about

Исходный код

Со всеми исходниками проекта можно ознакомится на GitHub - github.com/basenetwork . Аккаунт содержит несколько репозиториев:
  • base.server-node
    Собственно, сама серверная нода. Репозиторий написан на Node.js. Инструкция по установке base-ноды на свой сервер была представлена выше.
  • client-js
    Клиентское ядро. Проект написан на JavaScript. Включает в себя базовые функции по работе с системой. Это непосредственно тот самый код, который подгружается при открытии любого сайта системы - http://base.network/core.js Сайтовым движкам для работы с сетью ядро предоставляет специальный API - baseAPI
  • site-engine-js
    Сайтовый движок. Написан на JavaScript с использованием библиотеки React.js. В качестве фреймворка для верстки и стилей использует Bootstrap v3. Это собственно тот код, который организует структуру сайтов, их внешнее представление. Реализует систему редактирования контента для владельцев сайтов. В данный момент в качестве теста движком реализованы такие сервисы как блоги, фотоальбомы и списки медиа, а также систему комментариев к постам и фотографиям. Движок не работает напрямую с сетью, а использует для этого специально предоставленный ядром API.
  • static-builder
    Специально разработанный билдер статических файлов. Билдер написан на Node.js. Работа билдера заключается в компиляции всех статических файлов в один единственный javascript-файл. Необходим для компиляции ядра и движка сайта. Скомпилированный файл включает в себя полностью весь функционал для работы с сайтом: программный код, логику, формы, стили, шрифты и иконки, используемые в оформлении сайта. Полученный файл выкладывается в сеть и подгружается пользователем в качестве движка один единственный раз, при посещении сайта.
    Билдер в css-файлах стилей непосредственно вместо ссылок на шрифты и иконки вставляет закодированное в base64 их содержимое. А уже полученные css-файлы, а также скомпилированные js и jsx объединяет в один единственный js-файл.
К сожалению, еще пока не создано подробной документации по проекту. Нет детального описания структуры репозиториев и протоколов обмена. Функционал не покрыт тестами (исходный код для ознакомления представлен в весьма сыром виде). Надеюсь, что ситуация будет исправлена в ближайшем времени.

Планы

  • Доработать сайтовый движок. Переработать дизайн и повысить юзабилити существующего функционала. Добавить ряд полезных функций, чтобы по функционалу не уступать современным социальным сетям.
  • Локализовать веб-интерфейс для популярных языков.
  • Добавить сервис личных сообщений с обеспечением полной анонимности. Сервис помимо шифрования непосредственно содержимого сообщений будет скрывать сам факт переписки двух лиц, чего сложно добиться с использованием централизованной системы. Реализация такого сервиса требует лишь небольших доработок сайтового движка на стороне клиента. Серверная часть уже сейчас вполне готова для воплощения подобного функционала.
  • Переписать серверное ПО на языке GO, поскольку скорость работы с криптографического алгоритмами на Node.js оставляет желать лучшего.
  • Покрыть весь функционал тестами.
  • Составить подробную документацию к проекту, API и протоколам общения клиент-сервер.
  • Создать своего рода Store сайтовых движков, сервисов и плагинов, а также стилей и дизайн-тем.

Поддержка проекта

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

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

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

Спасибо за поддержку!

Заключение

И в заключение немного лирики. Цензура в современном мире - это большая глупость. Любые идеи, неважно технические или гуманитарные, развиваются одинаково  -  они растут одна из другой, бесконечной цепочкой. Идея имеет право быть высказанной и услышанной в её оригинальном виде, без искажений и цензуры. Однако в современных реалиях рукописи вполне неплохо горят и написанное пером нещадно вырубается топорами. И, как ни печально осознавать это, но задуманный как рупор свободы, Интернет в руках правительств стран и государств превратился в инструмент всеохватывающего контроля. Причем контроля настолько неприкрытого, что все чаще продвинутая часть общества задается вопросом: а есть ли свобода слова в интернете? Можем ли мы с его помощью открыто заявлять о чем-то действительно важном? Видим ли на его просторах всю палитру разнохарактерных независимых мнений? Добавить метки
  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то