Пиринговые сети. Понятие и виды

2



Федеральное агенство по образованию

Государственное образовательное учреждение высшего

профессианального образования

Ульяновский государственный университет

Инзенский филиал









Курсовая работа





по предмету: «Информационные технологии»

на тему: «Пиринговые сети. Понятия и виды»













Выполнила: студентка

группы БУА-07















Инза 2008 г.


Содержание:



	Содержание:	2

	Введение	3

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

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

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

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

	Глава 2. Сети и протоколы	15

	2.1 eDonkey2000 (сеть).	15

	Поиск	15

	Загрузка	15

	Межсерверные соединения	16

	2.2 Kad Network	17

	Использование	17

	2.3 BitTorrent	18

	Принцип работы протокола	18

	Общие особенности	19

	Протоколы и порты	19

	Файл метаданных	20

	Трекер	20

	Работа без трекера	21

	Super seeding (cупер-сид)	21

	Две ошибки начинающих пиров	22

	Терминология	22

	Программы-клиенты	23

	Глава 3. Программы для работы с пиринговыми сетями	26

	3.1 Perfect Dark (P2P)	26

	Безопасность	26

	Открытое тестирование	27

	Особенности работы	27

	3.2 eMule	28

	Глава 4. История пиринговых сетей	33

	Карающая рука закона	34

	Партизанская тактика обмена	34

	Король умер, да здравствует король!	36

	Обмен под контролем	37

	Заключение	39

	Список используемых источников:	41


Введение



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

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

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

Задачи: Изучить назначение пиринговых сетей, типы, использование пиринговых сетей. Познать с помощью какого контента возможно пользоваться пиринговыми сетями.


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



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



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

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

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

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

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

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

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

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

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

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

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



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.



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

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

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

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

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



Известные децентрализованные и гибридные сети

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

		Overnet, Kad — децентрализованные технологии на базе протокола Kademlia, обслуживающие поиск по сети eDonkey2000 (eD2k).

		BitTorrent — технология распределённого распространения файлов, как правило, большого объёма. Отличается высокой скоростью и централизованностью. Некоторые BitTorrent клиенты поддерживают DHT и могут работать без центрального сервера (т. н. трекера).

		Direct Connect — представляет из себя слабо связанные между собой выделенные сервера для поиска (хабы). Хабы Direct Connect очень удобны для организации файлового обмена в локальных сетях.

		FastTrack, iMesh — первоначально была реализована в KaZaA…

		OpenFT — открытое продолжение сети FastTrack. Поддерживается клиентами giFT (KCeasy), mlDonkey.

		Gnutella — полностью децентрализованная сеть, использующая протокол, разработанный компанией Nullsoft, основанный на HTTP-загрузках. Самоорганизация сети происходит за счет автоматического взаимообмена данными нод-листа между соединенными клиентами . Клиенты : Shareaza , BearShare , LimeWire , Gnucleus, Phex .

		Gnutella2 — расширение протокола Gnutella. Основные изменения коснулись только организации системы поиска файлов . Так удалось снизить общую нагрузку на сеть применяя адресную рассылку запросов только тем клиентам у которых находится искомый файл. Также была исключена проблема с ложной инициацией атаки типа UDP-flood . Во всем остальном сеть полностью аналогична Gnutella1 . Основной клиент Shareaza .

		Ares — файлообменная сеть для любых файлов.

		Soulseek — проприетарный протокол. Весь поиск происходит через центральный сервер, на котором есть бесплатная регистрация и платная подписка (официальный сайт). Клиенты: Soulseek, mlDonkey, SolarSeek.

		Freenet, GNUnet, Entropy — анонимные и устойчивые к цензуре файлообменные сети.

		MP2P (Manolito P2P) — поддерживается клиентами Blubster, Piolet, RockItNet.

		NEOnet — частично-децентрализованая коммерческая сеть на условно-платной основе . Является специфической вспомогательной модификацией протокола DHT при работе в отделенном коммерческом сегменте сети Gnutella1 , поддерживаемом с помощью клиента Morpheus . Свойства криптографической защиты и сетевой анонимности в сети NeoNet не поддерживаются .

		easy P2P

		Tesla — Возможно, содержит MalWare.

		Filetopia — потенциально безопасная сеть для обмена самым разным контентом.

		MUTE — Клиенты: MFC Mute, Napshare.

		Nodezilla — анонимная файлообменная сеть.

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

		Ants p2p — открытая P2P-сеть 3-го поколения повышенной безопасности. Java-клиент.

		Anthill

		Rodi — поддерживает поиск по содержанию файлов. Java-клиент.

		AppleJuice — частично децентрализованная сеть (как eDonkey).

		BeShare — сеть, ориентированная на BeOS.

		Jabber — открытая P2P-технология обмена сообщениями.

		Skype — P2P-телефония.

		JXTA — стандартизация P2P спецификаций и протоколов http://www.jxta.org

		KDrive — глобальный виртуальный диск для обмена файлами с авторизацией и шифрованием.

		ProxyShare — новая высокоскоростная сеть с больши́ми возможностями.

		ZEPP

		Acquisition — сеть и клиент для Mac.

		RShare — анонимная открытая P2P-сеть.

		Marabunta — альтернативная пиринговая система ориентированная исключительно на предоставление услуг обмена мгновенными сообщениями на общей доске объявлений ( P2P-chat ) . Программа в основном рассчитана на применение в локальных сетях , и потому не содержит возможностей автообновления нод-листа ( его приходится пополнять вручную ) . При наличии постоянных IP-адресов реципиентов , может работать и в интернете , однако встроенная функция bootstrap с серверов разработчиков не работоспособна из-за того , что с 2006 года проект практически перестал развиваться . Свойства криптографической защиты и сетевой анонимности в программе не реализованы .

		SKad или OpenKAD - модификация протокола Kademlia . Полностью децентрализованые сети этого типа создавались преимущественно в Японии . Первым шагом в этом направлении стала программа Winny . Дальнейше развитие этой сети в сторону сетевой анонимности привело к появлению программы Share . И на сегодняшний день существует и третья версия под управлением программы Perfect Dark .

	

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

		Usenet — старая добрая глобальная доска объявлений ;)

		Chord

		Pastry

		Tapestry или Chimera

		Groove Virtual Office — Собственническое ПО от Microsoft.

		P-Grid — самоорганизующаяся децентрализованная сеть.

		P2PTV — сеть телевизионных каналов.

		KoffeePhoto — сеть для обмена фотографиями.



Пиринговые сети распределёных вычислений

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



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



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

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

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

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


Глава 2. Сети и протоколы



2.1 eDonkey2000 (сеть)



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

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



Поиск

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

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

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


Загрузка

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

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



Межсерверные соединения

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



2.2 Kad Network



Kad Network — децентрализованная безсерверная файлообменная сеть, которая использует протокол оверлейной сети Kademlia. Поддерживается в eMule (Kad 2.0), aMule и MLDonkey.

Использование

Kad Network использует UDP для :

		Поиска источников ed2k хэша 

		Поиска ed2k хэша на ключевые слова в названиях файла 

		Нахождения комментариев и оценки для файлов (хэша) 

		Оказания услуг узлам, находящимся за файерволом (Low ID) 

Заметим, что Кад сеть не используется, чтобы фактически передать файлы через Р2Р сети. Вместо этого, когда начинается передача файлов, подключения клиентов происходят напрямую друг с другом (используя стандартные IP-сети).

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

Единственная вещь, которая нужна для соединения с этой сетью — IP и порт любого клиента, уже подключённого к сети. Это называется Boot Strap (самонастройка).

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

Если вы можете свободно соединяться, вам дается ID (высокий, HighID) и получаете статус open в Кад сети. Если вы не можете соединяться свободно, вы получаете статус firewalled (соответственно LowID).


2.3 BitTorrent







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

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

Первый torrent-клиент «BitTorrent» был создан программистом Брэмом Коэном на языке Python 4 апреля 2001 года, запуск первой версии состоялся 2 июля 2001 года. Существует множество других программ-клиентов для обмена файлами по протоколу BitTorrent.

Принцип работы протокола

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

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

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

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

Общие особенности

		Отсутствие очередей на скачивание. 

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

		Клиенты (peers) обмениваются сегментами непосредственно между собой, по принципу «ты — мне, я — тебе». 

		Скачанные фрагменты становятся немедленно доступны другим клиентам. 

		Контролируется целостность каждого фрагмента. 

		В качестве объекта раздачи могут выступать несколько файлов (например, содержимое каталога). 



Протоколы и порты

Клиенты соединяются с трекером по протоколу TCP. Входящий порт трекера: 6969.

Клиенты соединяются друг с другом, используя протокол TCP. Входящие порты клиентов: 6881—6889.

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

DHT-сеть в BitTorrent-клиентах использует протокол UDP.

Кроме того, протокол UDP используется UDP-трекерами (не поддерживается всеми клиентами и не является официальной частью протокола) и для соединения клиентов друг с другом через UDP NAT Traversal (используется только в клиенте BitComet и не является официальной частью протокола).



Файл метаданных

Для каждого распространяемого файла создаётся файл метаданных с расширением .torrent, который содержит следующую информацию:

		URL трекера; 

		общую информацию о закачиваемом файле (имя, длину и пр.); 

		контрольные суммы (точнее, хэш-суммы SHA1) сегментов закачиваемого файла. 

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

Первоначально BitTorrent не имел собственной поисковой системы (англ. search engine), но в мае 2005 года Брэм Коэн устранил этот недостаток.[1]

Трекер (англ. tracker; /ˈtrækə(r)/) — специализированный сервер, работающий по протоколу HTTP. Трекер нужен для того, чтобы клиенты могли найти друг друга. Фактически, на трекере хранятся IP-адреса, входящие порты клиентов и хэш-суммы, уникальным образом идентифицирующие объекты, участвующие в закачках. По стандарту, имена файлов на трекере не хранятся, и узнать их по хэш-суммам нельзя. Однако на практике трекер часто помимо своей основной функции выполняет и функцию небольшого веб-сервера. Такой сервер хранит файлы метаданных и описания распространяемых файлов, предоставляет статистику закачек по разным файлам, показывает текущее количество подключенных пиров и пр.



Работа без трекера

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

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

На данный момент ещё не все клиенты используют совместимый друг с другом протокол. Совместимы между собой BitComet, µTorrent, Deluge, KTorrent и официальный клиент BitTorrent. Azureus также имеет режим бестрекерной работы, но его реализация отличается от официальной, вследствие чего он не может работать через DHT с вышеперечисленными клиентами.[2] Однако, для Azureus существует поддержка стандартного DHT через плагин Mainline DHT.

Super seeding (cупер-сид)

Супер-сид (англ. super seeding) — метод, реализованный в тех клиентах BitTorrent, авторы которых пытаются минимизировать объём данных до первого завершения загрузки пира. Метод был задуман Джоном Хофманом и впервые был осуществлен в клиенте «BitTornado» в середине 2003 г.

Супер-сид является изменением в поведении сидеров и не может быть осуществлен без нарушения протокола BitTorrent. Тем не менее, это не утверждается ни разработчиком протокола, Брэмом Коэном, ни в официальном клиенте.

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

Супер-сид эффективен при раздачах с большим количеством качающих. При небольшой группе людей (2—3 человека) их клиенты в силу разных причин могут отказаться устанавливать связь друг с другом. В этом случае включённый супер-сид заставит клиентов ждать, пока данные станут доступны. Когда число качающих велико (10—20 человек), достаточно отдать каждую часть файла только один раз, тогда клиенты смогут обменяться ею между собой, и каждый из них получит файл целиком.

Две ошибки начинающих пиров

Начинающие пользователи BitTorrent часто допускают две ошибки:

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

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

	Терминология

		Анонс (англ. announce) — обращение клиента к трекеру. При каждом анонсе клиент передаёт на трекер информацию об объёмах им скачанного и отданного, a трекер передаёт клиенту список адресов других клиентов. Обращение клиента к трекеру происходит через определённые интервалы времени, которые определяются настройками клиента и трекера. 

		Доступность (англ. availability), или distributed copies — количество полных копий файла, доступных клиенту. Каждый сид добавляет 1,0 к этому числу; личеры увеличивают доступность в зависимости от количества скачанного, которого нет у других личеров. К примеру, если на раздаче есть один сид и два личера, скачавшие по 50 % файла (скачанные части равны между собой), то доступность равна 1,50. 

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

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

		Пир (англ. peer — соучастник) — клиент, участвующий в раздаче. Иногда пирами называют только скачивающих участников. 

		Раздача (англ. seeding) — процесс распространения файла по протоколу BitTorrent. 

		Рейтинг (англ. share ratio) — отношение отданного к скачанному. 

		Рой (англ. swarm) — совокупность всех пиров, участвующих в раздаче. 

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

		URL анонса (англ. announce URL) — адрес трекера, к которому клиент делает анонс. Во многих клиентах называется «Tracker URL». Может включать «passkey» — уникальный код, назначаемый трекером для аккаунта пользователя, помогающий идентифицировать его на трекере (добавляется к URL анонса в самом *.torrent-файле). 

	Программы-клиенты

		aria2 (англ.) — поддерживает HTTP, FTP, BitTorrent; файлы Metalink[убрать шаблон] 3.0 

		Azureus — написан на языке Java, поэтому является кроссплатформенным. Поддерживает Tor 

		BitTyrant — модифицированный вариант клиента Azureus 2.5 

		BitTornado — кроссплатформенный клиент, написанный на языке Python 

		Deluge — кроссплатформенный клиент, написанный на языке Python; использует GTK 

		FoxTorrent — расширение для браузера Mozilla Firefox, реализующее функции клиента BitTorrent 

		LeechCraft — кроссплатформенный клиент, существует плагин для поддержки BitTorrent 

		mlDonkey — кроссплатформенный клиент 

		Браузер Opera полностью поддерживает закачку торрентов, начиная с версии 9.0 

		TorrentFlux (en) — написан на PHP, работает на удалённом Web-сервере как PHP-скрипт, позволяя не держать свой компьютер включённым постоянно, но при этом качать и раздавать торренты 

	GNU/Linux, UNIX

		BTPD — консольный клиент для Unix/GNU+Linux, написанный на C++; работает в режиме демона 

		CTorrent — консольный клиент для Unix/GNU+Linux, прекративший развитие в 2004 году 

		KTorrent — использует библиотеку Qt; работает в среде KDE 

		rTorrent — консольный клиент для UNIX/GNU+Linux, написанный на C++; использует библиотеки ncurses и libTorrent 

		Transmission — клиент для Mac OS X, FreeBSD, OpenBSD, NetBSD, GNU/Linux и BeOS, использующий GTK. Также может работать в консольном режиме и в режиме демона. 

		Bitflu — консольный клиент для Unix/GNU+Linux, написанный на Perl; работает в режиме демона, с поддержкой chroot окружения. Имеет веб-интерфейс, управляется через telnet 

	Windows

		µTorrent 

		BitComet 

		BitSpirit 

		FlashGet 

		GetRight 

		Shareaza — поддерживает работу с несколькими файлообменными сетями, в том числе и BitTorrent 

		Free Download Manager 

	Mac OS

		XTorrent 

		Transmission 

		BitRocket. 

		Tomato Torrent 

		Acquisition 


Глава 3. Программы для работы с пиринговыми сетями



3.1 Perfect Dark (P2P)



Perfect Dark это японский пиринговый файлообменный клиент для Microsoft Windows. Автор известен под псевдонимом Kaichō (Президент (яп. 会長)). Perfect Dark был разработан как замена файлообменным клиентам Winny и Share. В данный момент проект находиться на стадии открытого тестирования и достаточно часто обновляется.

Безопасность

В целом структура сети Perfect Dark напоминает новейшие версии Freenet, но только с более интенсивным использованием распределённых хеш-таблиц.

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

Perfect Dark использует алгоритмы RSA (с 1024-битным ключом) и AES (с 128-битным ключом) для шифрования данных, передаваемых между участниками файлообмена. Ключи, использованные для шифрования, кэшируются для повышения эффективности работы.

Выложенные файлы и обсуждения (которые могут автоматически обновляться, если включена соответствующая опция), как правило, подписаны 160-битным ключом ECDSA. Выкладываемые обновления дополнительно защищены 2048-битным ключом RSA.

Автор полагает, что на начальном этапе разработки, недоступность исходных кодов программы предотвратит попытки понижения уровня анонимности в сети Perfect Dark, и появления переработанных версий клиента Perfect Dark для "любителей проехаться за чужой счёт". Однако автор не отрицает возможности появления в будущем версии с открытым исходным кодом, если для этой проблемы будет найдено приемлемое решение.



Открытое тестирование

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

Особенности работы

В сравнении со своими предшественниками Winny и Share, требования к пропускной способности интернет-соединения, и свободному месту на жёстком диске в Perfect Dark значительно возросли.

		Минимальная скорость аплоада: 100 Кбайт\с; 

		Место, занимаемое на диске под распределённое файловое хранилище сети Perfect Dark (каталог unity): как минимум 40 Гб; 

		Так же, в отличие от предшественников, Perfect Dark осуществляет постоянную закачку частей файлов, пока его файловое хранилище не достигнет указанного значения. 



3.2 eMule



eMule — свободный файлообменный клиент для Microsoft Windows. Был разработан как замена собственническому клиенту eDonkey2000. В настоящее время может работать как с eDonkey сетью (ed2k), так и с сетью Kademlia.

Проект хостится на SourceForge.net. В 2007 году eMule победил в номинации "Best New Project"[1] (правда к тому времени проект давно уже новым не являлся).

На основе eMule разработан ряд модификаций — так называемых «модов»; кроме того, доступно его кросс-платформенное ответвление aMule. Поскольку eMule поставляется с открытыми исходными кодами, находится немало желающих нечестно использовать p2p сеть (то есть не «делиться» файлами, а только «получать» их), в которой работает этот клиент. Для этого сегодня разработано немало «нечестных» клиентов, работающих в этой же сети. Чтобы защититься от «нахлебников», в eMule было разработано множество проверок, которые затрудняют неравноценный обмен информацией и блокируют «нечестные» моды.

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

Начиная с версии 0.47b появилась возможность скрывать использование сети eDonkey от провайдеров благодаря вуалированию протокола, которое, тем не менее, не гарантирует такой степени сокрытия информации, как полноценное её шифрование. Также произошло обновление протокола Kad до версии 2.0, который теперь обеспечивает бо́льшую анонимность (случаев, когда IP-адрес открывается другому клиенту стало меньше) и в перспективе снимает ограничение в 300 результатов поиска на узел сети. С версии 0.48a добавлена поддержка UPnP на основе кода Shareaza.

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

Некоторые провайдеры модифицируют eMule для проверки аутентификации на сервере, а обмен в сети Kademlia попросту отключается.

Начиная с версии 42.1 eMule поддерживает 2 разных типа сетей: классическую серверную eD2k и новую безсерверную Kademlia.Обе сети обладают примерно одинаковой функциональностью. Они позволяют находить пользователей или файлы для скачивания.

Идентификация файлов

Каждому файлу соответствует свой хэш. Хэш - это комбинация цифр и букв для однозначной идентификации файла. Хэш не зависит от имени файла, только от его содержимого. Это позволяет находить источники файла независимо от того, какое имя тот или иной пользователь дал файлу.Кроме того, файлы разделяются на части размером 9.28 Мб. Для каждой части также вычисляется хэш. Например, 600-Мб файл будет содержать 65 частей. Общий хэш, т.е. хэш файла, вычисляется на основе хэшей частей. 

Идентификация других клиентов

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

Скачивание данных

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

Классическая серверная eD2k сеть

Подключение к сети

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

Поиск файлов

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

Нахождение источников файлов

Файлы для закачки могут быть добавлены с помощью поиска или специальных ссылок ed2k://, которые размещают многие web-сервера.После добавления файла в список Приема eMule запрашивает источники к нему сначала у локального (подключенного) сервера, потом у всех остальных серверов сети. Сервер производит в своей базе данных поиск по хэшу файла и возвращает всех известных ему клиентов, имеющих этот файл для обмена.Источники - это другие клиенты, которые обладают хотя бы одной частью (9.28 Мб) файла. 

Безсерверная сеть Kademlia

Подключение к сети

Для подключения к этой сети необходимо знать IP-адрес и порт любого уже подключенного клиента. В этом случае происходит Самонастройка (Boot Strap).При входе в сеть клиент с помощью других клиентов опрашивает себя на возможность свободного подключения. Этот процесс похож на проверку HighID/LowID сервером. Если вы свободно доступны, то получаете ID (аналогично HighID) и статус Открыт. В противном случае вы получаете статус Файрвол. Начиная с версии 44a сеть Kademlia поддерживает Приятеля для зафайрволенных пользователей. Приятели это клиенты Kademlia со статусом Открыт, работающие как посредники для соединений, недоступных пользователям за файрволом. 

Поиск в сети Kademlia

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



Итоги

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


Глава 4. История пиринговых сетей



Peer-to-peer — "равный-равному", многовековой идеал самураев и социалистов-утопистов, был в самом конце второго тысячелетия воплощен в жизнь восемнадцатилетним бостонским студентом Шоном Фэннингом. 

В январе 1999 года Шон по прозвищу Napster, проучившись всего один семестр, покинул Северо-восточный университет, для того чтобы полностью погрузиться в работу над программным обеспечением для нового проекта. Идея, над воплощением которой трудился мистер Фэннинг, была весьма незамысловатой и родилась в ходе общения с соседями по университетскому общежитию. Подключенным к Интернету меломанам, коих было немало среди друзей изобретателя, предлагалось "расшарить" на своем компьютере (то есть открыть для удаленного доступа других пользователей) директории с музыкальными файлами. А чтобы искать музыкальные композиции было легче, общий их список хранился на специальном центральном сервере, а сам поиск осуществлялся с помощью программы-клиента, которую должен был скачать каждый участник сети. 



Недолго музыка играла...

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

Уже в августе 1999-го группа людей (в том числе и дядя Шона) вложили в проект серьезные деньги, которых должно было хватить еще на полгода, и один из инвесторов — Эйлин Ричардсон — стала в сентябре исполнительным директором компании Napster. 

Хотя создатель Napster и его первые инвесторы были полны радужных надежд на будущее, а популярность проекта среди пользователей росла бешеными темпами, осень 1999-го, как выяснилось впоследствии, стала началом конца этой сети. В течение октября и ноября Napster ведет напряженные переговоры с представителями американской звукозаписывающей индустрии (RIAA). То ли возможность компромисса владельцами лейблов изначально не предполагалась, то ли всему виной была несговорчивость Эйлин Ричардсон, но, как бы там ни было, в начале декабря RIAA предъявила Napster ультиматум, грозя штрафами в сто тысяч долларов за каждый скачанный без ее разрешения музыкальный файл. 



Карающая рука закона

Вся последующая история Napster состояла из отступлений и временных перемирий с владельцами авторских прав, что, впрочем, не мешало дальнейшему росту числа пользователей сети. В мае 2000 года по требованию рок-группы Metallica более 300 тысяч пользовательских компьютеров, содержащих ее песни, были исключены из пирингового обмена. Смена руководителя компании (обошедшаяся новому инвестору в 15 миллионов долларов) не спасла ситуации: в июне того же года RIAA сделала попытку наложить судебный запрет на все основные лейблы в коллекциях пользователей этой сети.Napster в ответ нанимает Дэвида Бойеса (адвоката, одержавшего победу над Microsoft в ходе затеянного правительством США антимонопольного разбирательства), Милтона Олина (бывшего топ-менеджера звукозаписывающей компании A&M) и объявляет о достижении договоренностей с компанией Liquid Audio, совместно с которой планировалось защитить музыкальный обмен от претензий поборников авторских прав. И все же 26 июля американский окружной судья Мерилин Пател постановила прекратить пиринговый обмен защищенными авторским правом композициями в течение двух суток. На этой интригующей ноте оставим на некоторое время многострадальный Napster наедине с американским правосудием и обратим свое внимание на его многочисленные аналоги. 



Партизанская тактика обмена

После того, как популярность пирингового обмена стала очевидной, последователи Шона Фэннинга принялись писать свои собственные программы, стремясь превзойти прототип в удобстве использования, разнообразии доступных для обмена данных и защищенности от внешнего воздействия. В частности, в середине марта 2000 года в Интернете появилось программное обеспечение p2p-сети Gnutella, основанной на новой идеологии. В отличие от Napster, Gnutella не требовала наличия центрального сервера — вернее, функции сервера, обслуживающего запросы небольшой группы пользователей, мог выполнять компьютер любого участника пирингового обмена. Таким образом, блокировать работу сети отключением одного-единственного сервера стало невозможно. Любопытно, что авторы Gnutella Джастин Френкель и Том Пеппер являлись сотрудниками компании Nullsoft, принадлежащей крупнейшему провайдеру America-On-Line (AOL). Сама AOL в это же время готовилась к объединению с медиагигантом Time Warner, так что самодеятельность Френкеля и Пеппера была пресечена на корню. Однако джинн уже был выпущен из бутылки, и, несмотря на закрытие сайта http://www.gnutella.com/, копии программного обеспечения расползлись по Интернету. Как это нередко происходило и с компьютерными вирусами, независимые разработчики принялись усовершенствовать исходный код, породив многочисленные клоны Gnutella (из которых самыми популярными являлись Aimster, LimeWire, BearShare и Xolox). 

Серьезную конкуренцию платформе Gnutella в скором времени составила технология голландской компании FastTrack. Разработанная почти одновременно с Napster, платформа FastTrack была не столь популярна вплоть до момента его первого официального закрытия. Так же как и Gnutella, основанные на FastTrack пиринговые сети (например, Morpheus, Grokster и KaZaa) не имели центрального сервера. Вместе с тем в качестве локальных серверов в данном случае выступали не любые, но наиболее мощные компьютеры из числа подключенных к p2p-сети, что значительно ускоряло ее работу. Ко всему прочему, программное обеспечение FastTrack позволяло объединять базы разных пиринговых сетей, увеличивая разнообразие доступных для скачивания файлов. Например, пользователи сети Morpheus (известной также под названием MusicCity), обогнавшей осенью 2000 года по популярности Napster, могли использовать ресурсы Grokster и KaZaa. 



Мучения "котёнка"

Вернемся, однако, к Napster, апелляция которого была удовлетворена судом за считанные часы до предписанного срока закрытия. Вялотекущее судебное разбирательство продлилось до середины осени того же года, и к этому времени Napster в глазах владельцев авторских прав стал казаться меньшим злом по сравнению с конкурирующими сетями. Потенциальная уязвимость детища Фэннинга — наличие центрального сервера — позволяла организовать достаточно эффективную фильтрацию контента. Это обстоятельство, а так же огромная аудитория пиринговой сети (к концу 2000 года данным сервисом пользовались почти 40 млн человек) привлекли внимание немецкой медиакомпании Bertelsmann AG, и в конце октября было объявлено о достижении соглашения, в соответствии с которым на базе Napster планировалось создать платную службу музыкальной дистрибуции. Впрочем, сепаратный мир с Bertelsmann не избавил Napster от исков других звукозаписывающих гигантов, и агония p2p-сети продолжалась в течение всего 2001 года. 

Могильщиками Napster стали не только поборники авторских прав, со многими из которых (в том числе и с Metallica) к лету 2001 года были достигнуты полюбовные соглашения, но также доброхоты, создававшие программы для обмана установленных пиринговой сетью фильтров (одна из таких программ была размещена, например, на сайте "напстероподобной" сети Aimster). Использовавшийся алгоритм идентификации MP3-файлов был весьма незамысловат и основывался на анализе их имен. Простая перестановка букв в именах файлов (типа MusicName =>usicNameM), не сильно затрудняющая визуальное опознание музыкальной композиции, оказалась не по зубам автоматическим фильтрам. И 11 июля 2001 года по формальному поводу (в связи с тем, что эффективность фильтрации защищенного авторским правом контента составляла не 100, а "всего" 99%) бесплатный файлообменный сервис Napster был закрыт окончательно. 



Король умер, да здравствует король!

Для большинства поклонников бесплатной музыки этот день, видимо, не стал траурным. К моменту клинической смерти Napster количество доступных для скачивания через эту сеть композиций уменьшилось на 80%, тогда как конкурирующие проекты (американские Music City, Limewire, Bearshare и Audiogalaxy, голландская KaZaa, индийский Grokster, израильский iMesh и многие другие) активно расширяли базу пользователей. Впрочем, чувство безнаказанности, основанное в одних случаях на неподсудности европейских или, например, австралийских компаний американским судам, а в других — на неуязвимости децентрализованных сетей, подвело многих энтузиастов пирингового обмена. 

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



Обмен под контролем

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

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


Заключение



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

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

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

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

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

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

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

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

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

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


Список используемых источников:



		Карп Д., О’Рейлли Т., Мотт Т. WindowsXP. Справочник. / Д. Карп, Т. О’Рейлли, Т. Мотт. -2-е изд. – СПб.: Питер, 2006. – 784 с.

		Тихонов В.А., Райх В.В. Информационная безопасность: концептуальные, правовые, организационные и технические аспекты: учеб. пособие / В.А. Тихонов, В.В. Райх. – М.: Гелиос АРВ, 2006. – 528 с

		Касьянов В.Н., Евстигнеев В.А. Графы в программировании: обработка, визуализация и применение. СПб.: БХВ-Петербург, 2003, 1104 С. 

		Касьянова Е.В. Язык программирования Zonnon для платформы .NET // Программные средства и математические основы информатики. - Новосибирск: ИСИ СО РАН, 2004, С.189-205. 

		Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ, М.: МЦНМО, 1999. 

		Лавров С.С. Программирование. Математические основы, средства, теория. - СПб: БХВ-Петербург, 2001. 

		Просиз Дж. Программирование для .NET. – М.: Русская Редакция, 2003. 

		Уоткинз Д., Хаммонд М., Эйбрамз Б. Программирование на платформе .NET. – М.: Вильямс, 2003. 

		Gutknecht J., Zueff E. Zonnon Language Report. Zurich, Institute of Computer Systems ETH Zentrum, 2004.

		Торокин, А.А. Инженерно-техническая защита информации: учеб пособие для студентов, обучающихся по специальностям в обл. информ. безопасности / А.А. Торокин. – М.: Гелиос АРВ, 2005. – 960 с

		Акулов, О.А. Информатика: базовый курс: учеб. для студентов вузов, бакалавров, магистров, обучающихся по направлениям 552800, 654000 «Информатика и вычислительная техника» / О.А. Акулов, Н.В. Медведев. – 4-е изд., стер. – М.: Омега-Л, 2007. – 560 с.

		Советов Б.Я. Моделирование систем. Практикум: учеб. пособие для вузов / Б.Я. Советов, С.А. Яковлев. – 3-е изд., стер. – М.: Высш. шк., 2005. – 295 с.:

		Галицкий А.В., Рябко С.Д., Шаньгин В.Ф. Защита информации в сети –анализ технологий и синтез решений / А.В. Галицкий, С.Д. Рябко, В.Ф. Шаньгин. – М. : ДМК Пресс, 2004. – 616 с.

		Прохода А.Н. Обеспечение интернет-безопасности. Практикум: учеб. пособие для вузов/ А.Н. Прохода. – М.: Горячая линия-Телеком, 2007. – 180 с.

		ru.wikipedia.org

		www.allp2p.net.ru

		www.compulenta.ru

		p2pinfo.ru

		www.computery.ru

		www.compress.ru

		www.overclockers.ru

		www.krs-ix.ru

		experiment.ru