Использованием протоколов peer to peer. Реферат: Peer-to-peer технологии. Ручной поиск файлов для скачивания

Peer-to-peer технологии

Выполнила:

студентка 1 курса ФМФ магистратуры

Кулаченко Надежда Сергеевна

Проверил:

Чернышенко Сергей Викторович

Москва 2011


Введение

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

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

Peer-to-peer (P2P) технологии являются одной из наиболее популярных тем на сегодняшний день. Популярность, достигнутая с помощью таких программам как Skype, Bittorrent, DirectConnect и список таких программ можно продолжать и продолжать, подтверждает потенциал peer-to-peer систем.

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


1. Napster и Gnutella - первые пиринговые сети

Первая пиринговая сеть Napster появилась в 1999 году и сразу стала известна всему Интернет-сообществу. Автором клиента был восемнадцатилетний Шон Феннинг. Napster соединил тысячи компьютеров с открытыми ресурсами. Изначально пользователи Napster обменивались mp3 файлами.

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

7 декабря Ассоциация индустрии звукозаписи Америки (RIAA) подала на компанию Napster в суд за «прямое и косвенное нарушение копирайта».

В конце концов, Napster сперва продался какой-то европейской фирме, а потом и вовсе был закрыт.

Gnutella - была создана в 2000 г программистами фирмы Nullsoft как преемница Napster. Она функционирует до сих пор, хотя из-за серьезных недостатков алгоритма пользователи в настоящее время предпочитают сеть Gnutella2. Эта сеть работает без сервера (полная децентрализация).

При подключении клиент получает от узла, с которым ему удалось соединиться, список из пяти активных узлов; им отсылается запрос на поиск ресурса по ключевому слову. Узлы ищут у себя соответствующие запросу ресурсы и, если не находят их, пересылают запрос активным узлам вверх по “дереву” (топология сети имеет структуру графа типа “дерево”), пока не найдется ресурс или не будет превышено максимальное число шагов. Такой поиск называется размножением запросов (query flooding).

Понятно, что подобная реализация ведет к экспоненциальному росту числа запросов и соответственно на верхних уровнях “дерева” может привести к отказу в обслуживании, что и наблюдалось неоднократно на практике. Разработчики усовершенствовали алгоритм, ввели правила, в соответствии с которыми запросы могут пересылать вверх по “дереву” только определенные узлы - так называемые выделенные (ultrapeers), остальные узлы (leaves) могут лишь запрашивать последние. Введена также система кеширующих узлов.

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

Недостатки протокола Gnutella инициировали разработку принципиально новых алгоритмов поиска маршрутов и ресурсов и привели к созданию группы протоколов DHT (Distributed Hash Tables) - в частности, протокола Kademlia, который сейчас широко используется в наиболее крупных сетях.

Запросы в сети Gnutella пересылаются по TCP или UDP, копирование файлов осуществляется через протокол HTTP. В последнее время появились расширения для клиентских программ, позволяющие копировать файлы по UDP, делать XML-запросы метаинформации о файлах.

В 2003 г. был создан принципиально новый протокол Gnutella2 и первые поддерживающие его клиенты, которые были обратносовместимы с клиентами Gnutella. В соответствии с ним некоторые узлы становятся концентраторами, остальные же являются обычными узлами (leaves). Каждый обычный узел имеет соединение с одним-двумя концентраторами. А концентратор связан с сотнями обычных узлов и десятками других концентраторов. Каждый узел периодически пересылает концентратору список идентификаторов ключевых слов, по которым можно найти публикуемые данным узлом ресурсы. Идентификаторы сохраняются в общей таблице на концентраторе. Когда узел “хочет” найти ресурс, он посылает запрос по ключевому слову своему концентратору, последний либо находит ресурс в своей таблице и возвращает ID узла, обладающего ресурсом, либо возвращает список других концентраторов, которые узел вновь запрашивает по очереди случайным образом. Такой поиск называется поиском с помощью метода блужданий (random walk).

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

2. P2P технологии. Принцип «клиент-клиент»

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

Впервые термин peer-to-peer был использован в 1984 г. компанией IBM при разработке сетевой архитектуры для динамической маршрутизации трафика через компьютерные сети с произвольной топологией (Advanced Peer to Peer Networking). В основе технологии лежит принцип децентрализации: все узлы в сети P2P равноправны, т.е. каждый узел может одновременно выступать как в роли клиента (получателя информации), так и в роли сервера (поставщика информации). «Это обеспечивает такие преимущества технологии P2P перед клиент-серверным подходом, как отказоустойчивость при потере связи с несколькими узлами сети, увеличение скорости получения данных за счет копирования одновременно из нескольких источников, возможность разделения ресурсов без “привязки” к конкретным IP-адресам, огромная мощность сети в целом и др.»[ 2]

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

Какой IP-адрес имеет тот или иной пользователь сети;

Какие файлы размещены у какого клиента;

Какие фрагменты каких файлов где находятся;

Статистика того, кто сколько скачал себе и дал скачать другим.

Работа в типичной файлообменной сети строится следующим образом:

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

Если нужный файл имеется и найден, сервер отдает клиенту IP-адреса других клиентов, у которых данный файл был найден.

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

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

Сервер заносит в свою базу данных кто что скачал (даже если скачаны файлы не целиком).

Сети, созданные на основе технологии Peer-to-Peer, также называются пиринговыми, одноранговыми или децентрализованными. И хотя они используются сейчас в основном для разделения файлов, существует еще много других областей, где данная технология тоже успешно применяется. Это телевидение и аудиотрансляции, параллельное программирование, распределенное кэширование ресурсов для разгрузки серверов, рассылка уведомлений и статей, поддержка системы доменных имен, индексирование распределенных ресурсов и их поиск, резервное копирование и создание устойчивых распределенных хранилищ данных, обмен сообщениями, создание систем, устойчивых к атакам типа “отказ в обслуживании”, распространение программных модулей.


3. Основные уязвимые стороны P2P

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

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

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

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

Чтобы справиться с описанной проблемой, клиенты должны пользоваться надежными хеш-функциями (“деревьями” хеш-функций, если файл копируется по частям), такими, как SHA-1, Whirlpool, Tiger, и только для решения малоответственных задач - контрольными суммами CRC. Для уменьшения объемов пересылаемых данных и облегчения их шифрования можно применить компрессию. Для защиты от вирусов нужно иметь возможность хранить идентифицирующую метаинформацию о “червях”, как это, в частности, сделано в сети Gnutella2.

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

Часть клиентов только копируют чужие файлы, но не предлагают ничего для копирования другим (leechers).

В московских домовых сетях на нескольких активистов, делающих доступными более 100 Гбайт информации, приходится около сотни, выкладывающих менее 1 Гбайт. Для борьбы с этим используются разные методы. В eMule применен метод кредитов: скопировал файл - кредит уменьшился, позволил скопировать свой файл - кредит увеличился (xMule - кредитная система с поощрением распространения редких файлов). В сети eDonkey стимулируется размножение источников, в Bittorrent реализована схема “сколько блоков файла получил, столько отдал” и т. п.


4. Некоторые пиринговые сети

4.1 DirectConnect

пиринговый сеть torrent одноранговый

Direct Connect - это частично централизованная файлообменная (P2P) сеть, в основе работы которой лежит особый протокол, разработанный фирмой NeoModus.

NeoModus была основана Джонатаном Хессом (Jonathan Hess) в ноябре 1990 года как компания, зарабатывавшая на adware-программе «Direct Connect». Первым сторонним клиентом стал «DClite», который никогда полностью не поддерживал протокол. Новая версия Direct Connect уже требовала простой ключ шифрования для инициализации подключения, этим он надеялся блокировать сторонние клиенты. Ключ был взломан и автор DClite выпустил новую версию своей программы, совместимой с новым программным обеспечением от NeoModus. Вскоре, код DClite был переписан, и программа была переименована в Open Direct Connect. Кроме всего прочего, ее пользовательский интерфейс стал многодокументным (MDI), и появилась возможность использовать плагины для файлообменных протоколов (как в MLDonkey). У Open Direct Connect также не было полной поддержки протокола, но появился под Java. Немногим позже, начали появляться и другие клиенты: DCTC (Direct Connect Text Client), DC++ и др.

Сеть работает следующим образом. Клиенты подключаются к одному или нескольким серверам, так называемым хабам для поиска файлов, которые обычно не связаны между собой (некоторые типы хабов можно частично или полностью связать в сеть, используя специализированные скрипты или программу Hub-Link) и служат для поиска файлов и источников для их скачивания. В качестве хаба чаще всего используются PtokaX, Verlihub, YnHub, Aquila, DB Hub, RusHub. Для связи с другими хабами используются т.н. dchub-ссылки:

dchub://[ имя пользователя ]@[ IP или Домен хаба ]:[ порт хаба ]/[путь к файлу]/[имя файла]

Отличия от других P2P-систем:

1. Обусловленные структурой сети

· Развитый многопользовательский чат

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

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

2. Зависящие от клиента

· Возможность скачивать целые директории

· Результаты поиска не только по названиям файлов, но и по директориям

· Ограничения на минимальное количество расшаренного материала (по объёму)

· Поддержка скриптов с потенциально безграничными возможностями как на клиентской стороне, так и на стороне хаба (верно не для всяких хабов и клиентов)

Авторы клиента DC++ разработали для решения специфичных проблем принципиально новый протокол, называнный Advanced Direct Connect (ADC), цель которого - повышение надежности, эффективности и безопасности файлообменной сети. 2 декабря 2007 года вышла окончательная версия протокола ADC 1.0. Протокол продолжает развиваться и дополняться.

4.2 Bit Torrent

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

Файлы передаются частями, каждый torrent-клиент, получая (скачивая) эти части, в то же время отдаёт (закачивает) их другим клиентам, что снижает нагрузку и зависимость от каждого клиента-источника и обеспечивает избыточность данных. Протокол был создан Брэмом Коэном, написавшим первый torrent-клиент «BitTorrent» на языке Python 4 апреля 2001 года. Запуск первой версии состоялся 2 июля 2001 года.

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

URL трекера;

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

Контрольные суммы (точнее, хеш-суммы SHA1) сегментов раздаваемых файлов;

Passkey пользователя, если он зарегистрирован на данном трекере. Длина ключа устанавливается трекером.

Необязательно:

Хеш-суммы файлов целиком;

Альтернативные источники, работающие не по протоколу BitTorrent. Наиболее распространена поддержка так называемых web–сидов (протокол HTTP), но допустимыми также являются ftp, ed2k, magnet URI.

Файл метаданных является словарем в bencode формате. Файлы метаданных могут распространяться через любые каналы связи: они (или ссылки на них) могут выкладываться на веб-серверах, размещаться на домашних страницах пользователей сети, рассылаться по электронной почте, публиковаться в блогах или новостных лентах RSS. Также есть возможность получить info часть публичного файла метаданных напрямую от других участников раздачи благодаря расширению протокола "Extension for Peers to Send Metadata Files". Это позволяет обойтись публикацией только магнет-ссылки. Получив каким-либо образом файл с метаданными, клиент может начинать скачивание.

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

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

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

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

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

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

Недостатки и ограничения

· Недоступность раздачи – если нет раздающих пользователей (сидов);

· Отсутствие анонимности:

Пользователи незащищенных систем и клиентов с известными уязвимостями могут быть подвергнуты атаке.

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

· Проблема личеров – клиентов, которые раздают гораздо меньше, чем скачивают. Это ведет к падению производительности.

· Проблема читеров – пользователей, модифицирующих информацию о количестве скачанных\переданных данных.

Персонализация – протокол не поддерживает ников, чата, просмотра списка файлов пользователя.


Заключение

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

Технологии, опробованные в пиринговых сетях, применяются сейчас во многих программах из других областей:

Для скоростного распространения дистрибутивов опенсорсных программ (с открытым кодом);

Для распределённых сетей передачи данных таких как Skype и Joost.

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

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

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

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

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

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

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

Также ведется работа по созданию проектов, объединяющих сети и протоколы (например, JXTA – разработчик Билл Джой).


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

1. Ю. Н. Гуркин, Ю. А. Семенов. «Файлообменные сети P2P: основные принципы, протоколы, безопасность» // «Сети и Системы связи», №11 2006

06/02/2011 17:23 http://www.ccc.ru/magazine/depot/06_11/read.html?0302.htm

2. А. Грызунова Napster: история болезни InterNet magazine, number 22 06/02/2011 15:30 http://www.gagin.ru/internet/22/7.html

3. Современные компьютерные сети Реферат 06/02/2011 15:49 http://5ballov.qip.ru/referats/preview/106448

4. 28/01/2011 16:56 http://ru.wikipedia.org/wiki/Peer-to-peer

5. http://style-hitech.ru/peer-to-peer_i_tjekhnologii_fajloobmjena

28/01/2011 15:51

МГОУ Peer-to-peer технологии Выполнила: студентка 1 курса ФМФ магистратуры Кулаченко Надежда Сергеевна Проверил: Чернышенко Сергей Викторович

И пока мы тут сидим и думаем, куда бы разместить свою рекламу, в Пало-Альто происходит что-то странное. Там сотрудники маленького магазина Hassett Ace Hardware, продающего хозяйственное оборудование, показывают, как может стать жизнью древняя мудрость о том, что «люди созданы не для накопительства, а для обмена».

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

Все делятся знаниями, советами и хорошим настроением. Продажи идут в гору (для ремонта же часто нужны детальки, которые надо купить в магазине). За апрель силами округи было отремонтировано около 130 «единиц техники», в том числе гигантский садовый лавовый фонтан и 200-летняя швейная машинка. Каждый, кто отремонтировался на площадке Hassett Ace Hardware, получает флажок для велосипеда с логотипом компании. И его с удовольствием берут, потому что классное обслуживание – вещь чертовски приятная и незабываемая.

Такая экономика взаимовыгоды получила в маркетинговых кулуарах имя peer-to-peer или «равный равному». Она строится не только на деньгах, но и на высокой степени эмоционального удовлетворения, а в случае маленьких магазинов вроде Hassett Ace Hardware еще и на выстраивании почти интимных отношений с клиентами. Ходят слухи, что эту технологию уже «обнюхивают» такие гиганты, как Pepsi, Chevrolet и Unilever.

«Мы узнали интересную вещь: молодые покупатели, прежде чем прийти в салон за авто, выискивают в социальных сетях странички наших продавцов, чтобы изучить их интересы и найти человека, близкого по духу. Они его находят и советуются с ним, потому что знают – помощь будет больше дружеской, чем менеджерской» — говорит Кристи Лэнди, менеджер по маркетингу в General Motors. Даже экспертное мнение может быть предметом взаимовыгодного обмена.

Peer-to-peer технологии

Выполнила:

студентка 1 курса ФМФ магистратуры

Кулаченко Надежда Сергеевна

Проверил:

Чернышенко Сергей Викторович

Москва 2011

Введение

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

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

Peer-to-peer (P2P) технологии являются одной из наиболее популярных тем на сегодняшний день. Популярность, достигнутая с помощью таких программам как Skype, Bittorrent, DirectConnect и список таких программ можно продолжать и продолжать, подтверждает потенциал peer-to-peer систем.

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

1. Napster и Gnutella - первые пиринговые сети

Первая пиринговая сеть Napster появилась в 1999 году и сразу стала известна всему Интернет-сообществу. Автором клиента был восемнадцатилетний Шон Феннинг. Napster соединил тысячи компьютеров с открытыми ресурсами. Изначально пользователи Napster обменивались mp3 файлами.

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

7 декабря Ассоциация индустрии звукозаписи Америки (RIAA) подала на компанию Napster в суд за «прямое и косвенное нарушение копирайта».

В конце концов, Napster сперва продался какой-то европейской фирме, а потом и вовсе был закрыт.

Gnutella - была создана в 2000 г программистами фирмы Nullsoft как преемница Napster. Она функционирует до сих пор, хотя из-за серьезных недостатков алгоритма пользователи в настоящее время предпочитают сеть Gnutella2. Эта сеть работает без сервера (полная децентрализация).

При подключении клиент получает от узла, с которым ему удалось соединиться, список из пяти активных узлов; им отсылается запрос на поиск ресурса по ключевому слову. Узлы ищут у себя соответствующие запросу ресурсы и, если не находят их, пересылают запрос активным узлам вверх по “дереву” (топология сети имеет структуру графа типа “дерево”), пока не найдется ресурс или не будет превышено максимальное число шагов. Такой поиск называется размножением запросов (query flooding).

Понятно, что подобная реализация ведет к экспоненциальному росту числа запросов и соответственно на верхних уровнях “дерева” может привести к отказу в обслуживании, что и наблюдалось неоднократно на практике. Разработчики усовершенствовали алгоритм, ввели правила, в соответствии с которыми запросы могут пересылать вверх по “дереву” только определенные узлы - так называемые выделенные (ultrapeers), остальные узлы (leaves) могут лишь запрашивать последние. Введена также система кеширующих узлов.

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

Недостатки протокола Gnutella инициировали разработку принципиально новых алгоритмов поиска маршрутов и ресурсов и привели к созданию группы протоколов DHT (Distributed Hash Tables) - в частности, протокола Kademlia, который сейчас широко используется в наиболее крупных сетях.

Запросы в сети Gnutella пересылаются по TCP или UDP, копирование файлов осуществляется через протокол HTTP. В последнее время появились расширения для клиентских программ, позволяющие копировать файлы по UDP, делать XML-запросы метаинформации о файлах.

В 2003 г. был создан принципиально новый протокол Gnutella2 и первые поддерживающие его клиенты, которые были обратносовместимы с клиентами Gnutella. В соответствии с ним некоторые узлы становятся концентраторами, остальные же являются обычными узлами (leaves). Каждый обычный узел имеет соединение с одним-двумя концентраторами. А концентратор связан с сотнями обычных узлов и десятками других концентраторов. Каждый узел периодически пересылает концентратору список идентификаторов ключевых слов, по которым можно найти публикуемые данным узлом ресурсы. Идентификаторы сохраняются в общей таблице на концентраторе. Когда узел “хочет” найти ресурс, он посылает запрос по ключевому слову своему концентратору, последний либо находит ресурс в своей таблице и возвращает ID узла, обладающего ресурсом, либо возвращает список других концентраторов, которые узел вновь запрашивает по очереди случайным образом. Такой поиск называется поиском с помощью метода блужданий (random walk).

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

2. P2Pтехнологии. Принцип «клиент-клиент»

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

Впервые термин peer-to-peer был использован в 1984 г. компанией IBM при разработке сетевой архитектуры для динамической маршрутизации трафика через компьютерные сети с произвольной топологией (Advanced Peer to Peer Networking). В основе технологии лежит принцип децентрализации: все узлы в сети P2P равноправны, т.е. каждый узел может одновременно выступать как в роли клиента (получателя информации), так и в роли сервера (поставщика информации). «Это обеспечивает такие преимущества технологии P2P перед клиент-серверным подходом, как отказоустойчивость при потере связи с несколькими узлами сети, увеличение скорости получения данных за счет копирования одновременно из нескольких источников, возможность разделения ресурсов без “привязки” к конкретным IP-адресам, огромная мощность сети в целом и др.»[ 2]

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

Какой IP-адрес имеет тот или иной пользователь сети;

Какие файлы размещены у какого клиента;

Какие фрагменты каких файлов где находятся;

Статистика того, кто сколько скачал себе и дал скачать другим.

Работа в типичной файлообменной сети строится следующим образом:

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

Если нужный файл имеется и найден, сервер отдает клиенту IP-адреса других клиентов, у которых данный файл был найден.

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

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

Сервер заносит в свою базу данных кто что скачал (даже если скачаны файлы не целиком).

Сети, созданные на основе технологии Peer-to-Peer, также называются пиринговыми, одноранговыми или децентрализованными. И хотя они используются сейчас в основном для разделения файлов, существует еще много других областей, где данная технология тоже успешно применяется. Это телевидение и аудиотрансляции, параллельное программирование, распределенное кэширование ресурсов для разгрузки серверов, рассылка уведомлений и статей, поддержка системы доменных имен, индексирование распределенных ресурсов и их поиск, резервное копирование и создание устойчивых распределенных хранилищ данных, обмен сообщениями, создание систем, устойчивых к атакам типа “отказ в обслуживании”, распространение программных модулей.

3. Основные уязвимые стороны P2P

Чтобы справиться с описанной проблемой, клиенты должны пользоваться надежными хеш-функциями (“деревьями” хеш-функций, если файл копируется по частям), такими, как SHA-1, Whirlpool, Tiger, и только для решения малоответственных задач - контрольными суммами CRC. Для уменьшения объемов пересылаемых данных и облегчения их шифрования можно применить компрессию. Для защиты от вирусов нужно иметь возможность хранить идентифицирующую метаинформацию о “червях”, как это, в частности, сделано в сети Gnutella2.

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

Часть клиентов только копируют чужие файлы, но не предлагают ничего для копирования другим (leechers).

В московских домовых сетях на нескольких активистов, делающих доступными более 100 Гбайт информации, приходится около сотни, выкладывающих менее 1 Гбайт. Для борьбы с этим используются разные методы. В eMule применен метод кредитов: скопировал файл - кредит уменьшился, позволил скопировать свой файл - кредит увеличился (xMule - кредитная система с поощрением распространения редких файлов). В сети eDonkey стимулируется размножение источников, в Bittorrent реализована схема “сколько блоков файла получил, столько отдал” и т. п.

4. Некоторые пиринговые сети

4.1 DirectConnect

пиринговый сеть torrent одноранговый

Direct Connect - это частично централизованная файлообменная (P2P) сеть, в основе работы которой лежит особый протокол, разработанный фирмой NeoModus.

NeoModus была основана Джонатаном Хессом (Jonathan Hess) в ноябре 1990 года как компания, зарабатывавшая на adware-программе «Direct Connect». Первым сторонним клиентом стал «DClite», который никогда полностью не поддерживал протокол. Новая версия Direct Connect уже требовала простой ключ шифрования для инициализации подключения, этим он надеялся блокировать сторонние клиенты. Ключ был взломан и автор DClite выпустил новую версию своей программы, совместимой с новым программным обеспечением от NeoModus. Вскоре, код DClite был переписан, и программа была переименована в Open Direct Connect. Кроме всего прочего, ее пользовательский интерфейс стал многодокументным (MDI), и появилась возможность использовать плагины для файлообменных протоколов (как в MLDonkey). У Open Direct Connect также не было полной поддержки протокола, но появился под Java. Немногим позже, начали появляться и другие клиенты: DCTC (Direct Connect Text Client), DC++ и др.

Сеть работает следующим образом. Клиенты подключаются к одному или нескольким серверам, так называемым хабам для поиска файлов, которые обычно не связаны между собой (некоторые типы хабов можно частично или полностью связать в сеть, используя специализированные скрипты или программу Hub-Link) и служат для поиска файлов и источников для их скачивания. В качестве хаба чаще всего используются PtokaX, Verlihub, YnHub, Aquila, DB Hub, RusHub. Для связи с другими хабами используются т.н. dchub-ссылки:

dchub://[ имя пользователя ]@[ IP или Домен хаба ]:[ порт хаба ]/[путь к файлу]/[имя файла]

Отличия от других P2P-систем:

1. Обусловленные структурой сети

· Развитый многопользовательский чат

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

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

2. Зависящие от клиента

· Возможность скачивать целые директории

· Результаты поиска не только по названиям файлов, но и по директориям

· Ограничения на минимальное количество расшаренного материала (по объёму)

· Поддержка скриптов с потенциально безграничными возможностями как на клиентской стороне, так и на стороне хаба (верно не для всяких хабов и клиентов)

Авторы клиента DC++ разработали для решения специфичных проблем принципиально новый протокол, называнный Advanced Direct Connect (ADC), цель которого - повышение надежности, эффективности и безопасности файлообменной сети. 2 декабря 2007 года вышла окончательная версия протокола ADC 1.0. Протокол продолжает развиваться и дополняться.

4.2 BitTorrent

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

Файлы передаются частями, каждый torrent-клиент, получая (скачивая) эти части, в то же время отдаёт (закачивает) их другим клиентам, что снижает нагрузку и зависимость от каждого клиента-источника и обеспечивает избыточность данных. Протокол был создан Брэмом Коэном, написавшим первый torrent-клиент «BitTorrent» на языке Python 4 апреля 2001 года. Запуск первой версии состоялся 2 июля 2001 года.

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

URL трекера;

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

Контрольные суммы (точнее, хеш-суммы SHA1) сегментов раздаваемых файлов;

Passkey пользователя, если он зарегистрирован на данном трекере. Длина ключа устанавливается трекером.

Необязательно:

Хеш-суммы файлов целиком;

Альтернативные источники, работающие не по протоколу BitTorrent. Наиболее распространена поддержка так называемых web–сидов (протокол HTTP), но допустимыми также являются ftp, ed2k, magnet URI.

Файл метаданных является словарем в bencode формате. Файлы метаданных могут распространяться через любые каналы связи: они (или ссылки на них) могут выкладываться на веб-серверах, размещаться на домашних страницах пользователей сети, рассылаться по электронной почте, публиковаться в блогах или новостных лентах RSS. Также есть возможность получить info часть публичного файла метаданных напрямую от других участников раздачи благодаря расширению протокола "Extension for Peers to Send Metadata Files". Это позволяет обойтись публикацией только магнет-ссылки. Получив каким-либо образом файл с метаданными, клиент может начинать скачивание.

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

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

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

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

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

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

Недостатки и ограничения

· Недоступность раздачи – если нет раздающих пользователей (сидов);

· Отсутствие анонимности:

Пользователи незащищенных систем и клиентов с известными уязвимостями могут быть подвергнуты атаке.

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

· Проблема личеров – клиентов, которые раздают гораздо меньше, чем скачивают. Это ведет к падению производительности.

· Проблема читеров – пользователей, модифицирующих информацию о количестве скачанных\переданных данных.

Персонализация – протокол не поддерживает ников, чата, просмотра списка файлов пользователя.

Заключение

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

Технологии, опробованные в пиринговых сетях, применяются сейчас во многих программах из других областей:

Для скоростного распространения дистрибутивов опенсорсных программ (с открытым кодом);

Для распределённых сетей передачи данных таких как Skype и Joost.

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

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

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

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

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

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

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

Также ведется работа по созданию проектов, объединяющих сети и протоколы (например, JXTA – разработчик Билл Джой).

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

1. Ю. Н. Гуркин, Ю. А. Семенов. «Файлообменные сети P2P: основные принципы, протоколы, безопасность» // «Сети и Системы связи», №11 2006

06/02/2011 17:23 http://www.ccc.ru/magazine/depot/06_11/read.html?0302.htm

2. А. Грызунова Napster: историяболезни InterNet magazine, number 22 06/02/2011 15:30 http://www.gagin.ru/internet/22/7.html

3. Современные компьютерные сети Реферат 06/02/2011 15:49 http://5ballov.qip.ru/referats/preview/106448

4. 28/01/2011 16:56 http://ru.wikipedia.org/wiki/Peer-to-peer

5. http://style-hitech.ru/peer-to-peer_i_tjekhnologii_fajloobmjena

Если вы регулярно пользуетесь Интернетом, скорее всего вы слышали о терминах одноранговая сеть, децентрализованная сеть, или пиринговая сеть, 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, является незаконным.

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

Дмитрий ЛАНДЭ

К ак это часто бывает, все начиналось с попытки обойти Закон. У некоторых людей появилось желание обмениваться через Интернет представленными в электронной форме и защищенными авторскими правами произведениями.
Логика таких действий вполне понятна. Допустим, Айван купил в магазине книгу. Авторские права не нарушены. Айван прочитал книгу и дал ее почитать Питеру. Питер книгу не покупал, автору не досталась его часть авторского вознаграждения. Питер прочитал книгу, воспринял информацию. Нарушил ли он Закон? Пожалуй, нет. Питер передал книгу Стивену, который, в свою очередь, передал другую, легально купленную книгу, Айвану. Три товарища, как говорят полицейские - три фигуранта, однако нарушений вроде бы нет.
Допустим, друзей не три, а тридцать. Нарушен ли Закон? Каждый автор недополучает двадцать девять вознаграждений. Формируется некая сетевая структура, где каждый связан с каждым, без выделенного центра. В технике такие сети назы-ваются децентрализованными, в отличие от централизованных. Аналог централизованной сети - публичная библиотека. Айван, Питер и Стивен пошли в публичную библиотеку и прочитали выбранные книги, восприняли информацию. Нарушает ли библиотека авторское право? Вопрос не риторический, а очень даже актуальный, широко обсуждаемый общественностью. Что бы ни говорил Закон, какие бы поправки не вносились, история человеческой цивилизации говорит о том, что библиотеки - это благо.
А теперь допустим, что собрались не три и не тридцать, а три миллиона друзей и обмениваются книгами. Где грань, скольким друзьям можно ими обмениваться законно, а скольким нельзя? И почему только книгами, как-никак XXI век на дворе... Книги переводятся в электронный вид (и этот процесс, по-видимому, необратим), появляются аудиокниги, фильмы в современных компактных форматах, мультимедийные энциклопедии, да и прочие программы, включая дистрибутивы операционных систем.
Во многих странах сегодня пришли к заключению - публичные централизованные электронные библиотеки (читайте: «серверы») произведений, защищенных авторским правом, - вне Закона. Сервер имеет владельца, его можно легко выявить, а сервер закрыть.
Многие помнят историю сетевой службы Napster, глобальной файловой биржи конца двадцатого века. В июне 2000 года было вынесено судебное постановление о ее закрытии, к этому времени Napster пользовались 40 млн. пользователей. Служба Napster была централизованной - она требовала наличия центрального сервера, который обеспечивал функционирование всей системы в целом. При этом революционность системы как раз и заключалась в элементах децентрализации, ее пользователи могли общаться друг с другом напрямую, предоставляя для скачивания свои файлы.
Для обхода Закона, учитывая грустную историю службы Napster, стали разрабатывать файлообменные сети с высокой степенью децентрализации. Конечно, за такую возможность пришлось платить функциональностью.
Именно о таких системах будет идти речь ниже, однако не столько о тех аспектах, которые до сих пор представляются нелегальными, а о возможностях, которые оказались вполне законными и широко востребованными. Наряду с некоторыми недостатками децентрализованного подхода к организации информационных сетей обнаружились такие преимущества, которые обусловили их широкое применение в обороне, государственном управлении, науке и бизнесе.
Итак, речь пойдет о децентрализованных или пиринговых сетях (от англ. peer-to-peer, P2P - один на один) - компьютерных сетях, основанных на равноправии участников. В таких сетях отсутствуют выделенные серверы, а каждый узел (peer) является как клиентом, так и сервером. На практике пиринговые сети состоят из узлов, каждый из которых взаимодействует лишь с некоторым подмножеством других узлов (из-за ограниченности ресурсов). В отличие от архитектуры «клиент–сервер» такая организация позволяет сохранять работоспособность сети при любом количестве и любом сочетании доступных узлов.
Сегодня пиринговые сети настолько развились, что WWW уже не является самой крупной информационной сетью по ресурсам и порождаемому интернет-трафику. Известно, что трафик, объем информационных ресурсов (в байтах), количество узлов пиринговых сетей, если их рассматривать в совокупности, ничем не уступают сети WWW. Более того, трафик пиринговых сетей составляет 70% всего интернет-трафика (рис. 1)! При этом можно отметить два очень важных аспекта: во-первых, о пиринговых сетях очень мало пишут в научной литературе, а во-вторых, проблемы поиска и уязвимости пиринговых сетей, как крупнейшего «белого пятна» современных коммуникаций, пока остаются открытыми.

«Клиент-сервер» и P2P

Централизованная архитектура «клиент-сервер» подразумевает, что сеть зависит от центральных узлов (серверов), обеспечивающих подключенные к сети терминалы (т.е. клиентов) необходимыми сервисами. В этой архитектуре ключевая роль отводится серверам, которые определяют сеть независимо от наличия клиентов. Очевидно, что рост количества клиентов сети типа «клиент–сервер» приводит к росту нагрузок на серверную часть. Таким образом, на определенном уровне развития сети она может оказаться перегруженной.
Архитектура P2P, как и «клиент– сервер», также является распределенной. Отличительная черта P2P заключается в том, что это децентрализованная архитектура, где не существует понятий «клиент» и «сервер». Каждый объект в сети (равноправный узел) имеет одинаковый статус, который позволяет выполнять как функции клиента, так и сервера. Несмотря на то, что все узлы имеют одинаковый статус, реальные возможности их могут существенно различаться. Достаточно часто пиринговые сети дополняются выделенными серверами, несущими организационные функции, например авторизацию.
Децентрализованная пиринговая сеть, в отличие от централизованной, становится более производительной при увеличении количества узлов, подключенных к ней. Действительно, каждый узел добавляет в сеть P2P свои ресурсы (дисковое пространство и вычислительные возможности), в результате суммарные ресурсы сети увеличиваются.

Области применения

Существует несколько областей применения пиринговых сетей, объясняющих их растущую популярность. Назовем некоторые из них.

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

    Распределенные вычисления. Например, такой P2P-проект, как SETI@HOME (распределенный поиск внеземных цивилизаций) продемонстрировал огромный вычислительный потенциал для распараллеливаемых задач. В настоящий момент в нем принимают участие свыше трех миллионов пользователей на бесплатной основе.

    Обмен сообщениями. Как известно, ICQ – это P2P-проект.

    Интернет-телефония.

    Групповая работа. Сегодня реализованы такие сети групповой работы, как Groove Network (защищенное пространство для коммуникаций) и OpenCola (поиск информации и обмен ссылками).

Существует много областей, где успешно применяется P2P-технология, например, параллельное программирование, кэширование данных, резервное копирование данных.
Общеизвестно, что система доменных имен (DNS) в сети Интернет также фактически является сетью обмена данными, построенной по принципу Р2Р.
Самой популярной службой интернет-телефонии является Skype (www.skype.com), созданная в 2003 году шведом Никласом Зеннстромом и датчанином Янусом Фриисом, авторами известной пиринговой сети KaZaA. Построенная в архитектуре P2P служба Skype сегодня охватывает свыше 10 млн. пользователей. В настоящее время Skype принадлежит интернет-аукциону eBay, который приобрел ее за 2,5 млрд. долларов.

Рис. 1. Распределение трафика Интернет по протоколам (а) и между P2P-сетями (б) (данные по Германии, 2007 г.)

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

Стандартизация в области P2P

P2P - это не только сети, но еще и сетевой протокол, обеспечивающий возможность создания и функционирования сети равноправных узлов, их взаимодействия. Множество узлов, объединенных в единую систему и взаимодействующих в соответствии с протоколом P2P, образуют пиринговую сеть. Для реализации протокола P2P используются клиентские программы, обеспечивающие функциональность как отдельных узлов, так и всей пиринговой сети.
P2P относятся к прикладному уровню сетевых протоколов и являются наложенной сетью, использующей существующие транспортные протоколы стека TCP/IP - TCP или UDP. Протоколу P2P посвящено несколько основополагающих документов сети Интернет - RFC (в частности, последний датируется 2008 годом - RFC 5128 State of Peer-to-Peer (P2P) Communication across Network Address Translators).
В настоящее время при реализации пиринговых сетей используются самые различные методологии и подходы. В частности, компания Microsoft разработала протоколы для P2P-сетей Scribe и Pastry. Поддержка протокола PNRP (Peer Name Resolution Protocol), также относящегося к P2P-системам, была включена в состав Windows Vista.
Одну из удачных попыток стандартизации протоколов P2P предприняла компания Sun Microsystems в рамках проекта JXTA. Этот проект реализуется с целью унифицированного создания P2P-сетей для различных платформ. Цель проекта JXTA - разработка типовых инфраструктурных решений и способов их использования при создании P2P-приложений для работы в неоднородных средах.
В рамках проекта JXTA определено шесть протоколов, на основе которых могут создаваться прикладные системы:

    Peer Discovery Protocol (PDP). Узлы используют этот протокол для поиска всех открытых JXTA-ресурсов. Низкоуровневый протокол PDP обеспечивает базовые механизмы поиска. Прикладные системы могут включать собственные высокоуровневые механизмы поиска, которые реализованы поверх PDP.

    Peer Resolver Protocol (PRP). Этот протокол стандартизирует формат запросов на доступ к ресурсам и сервисам. При реализации этого протокола с узла может быть послан запрос и получен на него ответ.

    Peer Information Protocol (PIP). PIP используется для определения состояния узла в сети JXTA. Узел, получающий PIP-сообщение, может в полной или сокращенной форме переслать ответ о своем состоянии либо проигнорировать это сообщение.

    Peer Membership Protocol (PMP). Узлы используют этот протокол для подключения и выхода из группы.

    Pipe Binding Protocol (PBP). В JXTA узел получает доступ к сервису через канал (pipe). С помощью PBP узел может создать новый канал для доступа к сервису или работать через уже существующий.

    Endpoint Routing Protocol (ERP). Используя этот протокол, узел может пересылать запросы к маршрутизаторам других узлов для определения маршрутов при отправке сообщений.

Алгоритмы поиска в пиринговых сетях

Поскольку сегодня в перенасыщенном информацией мире задача полноты поиска отводится на второй план, то главная задача поиска в пиринговых сетях сводится к быстрому и эффективному нахождению наиболее релевантных откликов назапрос, передаваемый от узла всей сети. В частности, актуальна задача - уменьшение сетевого трафика, порождаемого запросом (например, пересылки запроса по многочисленным узлам), и в то же время получение наилучших характеристик выдаваемых документов, т.е. наиболее качественного результата.
Следует отметить, что, в отличие от централизованных систем, организация эффективного поиска в пиринговых сетях - открытая исследовательская проблема.
В большинстве пиринговых сетей, ориентированных на обмен файлами, используется два вида сущностей, которым приписываются соответствующие идентификаторы (ID): узлы (peer) и ресурсы, характеризующиеся ключами (key), т.е. сеть может быть представлена двумерной матрицей размерности MN, где M - количество узлов, N - количество ресурсов. В данном случае задача поиска сводится к нахождению ID узла, на котором хранится ключ ресурса. На рис. 2. представлен процесс поиска ресурса с ключом 14, запускаемый с узла ID0.
В данном случае с узла ID0 запускается поиск ресурса с ключом 14. Запрос проходит определенный маршрут и достигает узла, на котором находится ключ 14. Далее узел ID14 пересылает на ID0 адреса всех узлов, обладающих ресурсом, соответствующим ключу 14.


Рис. 2. Модель поиска ресурса по ключу

Рассмотрим некоторые алгоритмы поиска в пиринговых сетях, ограничившись основными методами поиска по ключевым словам.

Метод широкого первичного поиска

Рис. 3. Некоторые модели поиска в пиринговых сетях

Метод широкого первичного поиска (Breadth First Search, BFS) широко используется в реальных файлообменных сетях P2P, таких как, например, Gnutella. Метод BFS (рис. 3a ) в сети P2P размерности N реализуется следующим образом. Узел q генерирует запрос, который адресуется ко всем соседям (ближайшим, по некоторым критериям, узлам). Когда узел p получает запрос, выполняется поиск в ее ло-кальном индексе. Если некоторый узел r принимает запрос (Query) и отрабатыват его, то он генерирует сообщение QueryHit, чтобы возвратить результат. Сообщение QueryHit включает информацию о релевантных документах, которая доставляется по сети запрашивающему узлу.
Когда узел q получает QueryHits от более чем одного узла, он может загрузить файл с наиболее доступного ресурса. Сообщения QueryHit возвращаются тем же путем, что и первичный запрос.
В BFS каждый запрос вызывает чрезмерную нагрузку сети, так как он передается по всем связям (в том числе и узлам с высоким временем ожидания). Поэтому узел с низкой пропускной способностью может стать узким местом. Однако есть метод, позволяющий избежать перегрузки всей сети сообщениями. Он заключается в приписывании каждому запросу параметра времени жизни (time-to-level, TTL). Параметр TTL определяет максимальное число переходов, по которому можно пересылать запрос.
При типичном поиске начальное значение для TTL составляет обычно 5–7, которое уменьшается каждый раз, когда запрос пересылается на очередной узел. Когда TTL становится равным 0, сообщение больше не передается. BFS гарантирует высокий уровень качества совпадений за счет большого числа сообщений.

Метод случайного широкого первичного поиска

Метод случайного широкого первичного поиска (Random Breadth First Search, RBFS) был предложен как улучшение «наивного» подхода BFS. В методе RBFS (рис. 3b ) узел q пересылает поисковое предписание только части узлов сети, выбранных в случайном порядке. Какая именно часть узлов - это параметр метода RBFS. Преимущество RBFS заключается в том, что не требуется глобальной информации о состоянии контента сети; узел может получать локальные решения так быстро, как это потребуется. С другой стороны, этот метод вероятностный. Поэто-му некоторые большие сегменты сети могут оказаться недостижимыми (unreachable).

Интеллектуальный поисковый механизм

Интеллектуальный поисковый механизм (Intelligent Search Mecha-nism, ISM) - новый метод поиска в сетях P2P (рис. 3c ). С его помощью достигается улучшение скорости и эффективности поиска информации за счет минимизации затрат на связи, то есть на число сообщений, передающихся между узлами, и минимизации количества узлов, которые опрашиваются для каждого поискового запроса. Чтобы достичь этого, для каждого запроса выбираются лишь те узлы, которые наиболее соответствуют данному запросу.
Механизм интеллектуального поиска состоит из двух компонентов:
Профайла, который узел q строит для каждого из соседних узлов. Профайл содержит последние ответы каждого узла.
Механизма ранжирования профайлов узлов (ранга релевантности). Ранг релевантности используется, чтобы выбрать соседей, которые будут давать наиболее релевантные документы на запрос.
Механизм профайлов служит для того, чтобы сохранять последние запросы, а также количественные характеристике результатов поиска. При реализации модели ISM используется единый стек запросов, в котором сохраняется по T запросов для q соседних узлов. Как только стек заполняется, узел прибегает к правилу замены «последнего наименее используемого» для сохранения последних запросов.
Метод ISM эффективно работает в сетях, где узлы содержат некоторые специализированные сведения. В частности, исследование сети Gnutella показывает, что качество поиска очень зависит от «окружения» узла, c которого поступает запрос. Еще одна проблема в методе ISM состоит в том, что поисковые сообщения могут зацикливаться, не в состоянии достичь некоторых частей сети. Чтобы разрешить эту проблему, обычно выбирается небольшое случайное подмножество узлов, которое добавляется к набору релевантных узлов для каждого запроса. В результате механизм ISM стал охватывать большую часть сети.

Метод «большинства результатов по прошлой эвристике»

В методе «большинства результатов по прошлой эвристике» (>RES) каждый узел пересылает запрос подмножеству своих узлов, образованному на основании некоторой обобщенной статистики (рис. 3d ).
Запрос в методе >RES является удовлетворительным, если выдается Z или больше результатов (Z - некоторая постоянная). В методе >RES узел q пересылает запросы к k узлам, выдавшим наибольшие результаты для последних m запросов. В экспериментах k изменялось от 1 до 10, и таким путем метод >RES варьировался от BFS до подхода глубинного первичного поиска (Depth-first-search).
Метод >RES подобен методу ISM, который рассматривался ранее, но использует более простую информацию об узлах. Его главный недостаток по сравнению с ISM - отсутствие анализа параметров узлов, содержание которых связано с запросом. Поэтому метод >RES характеризуется скорее как количественный, а не качественный подход. Из опыта известно, что >RES хорош тем, что он маршрутизирует запросы в большие сегменты сети (которые, возможно, также содержат более релевантные ответы). Он также захватывает соседей, которые менее перегружены, начиная с тех, которые обычно возвращают больше результатов.

Метод случайных блужданий

Ключевая идея метода случайных блужданий (Random Walkers algorithm, RWA) заключается в том, что каждый узел случайным образом пересылает сообщение с запросом, именуемое «посылкой», одному из своих соседних узлов. Чтобы сократить время, необходимое для получения результатов, идея одной «посылки» расширена до «k посылок», где k - число независимых посылок, последовательно запущеных от исходного узла.
Ожидается, что «k посылок» после T шагов достигнет тех же результатов, что и одна посылка за kT шагов. Этот алгоритм напоминает метод RBFS, но в RBFS предполагается экспоненциальное увеличение пересылаемых сообщений, а в методе случайных блужданий - линейное. Оба метода - и RBFS, и RWA - не используют никаких явных правил, чтобы адресовать поисковый запрос к наиболее релевантному содержанию.
Еще одной методикой, подобной RWA, является адаптивный вероятностный поиск (Adaptive Probabilistic Search, APS). В APS каждый узел развертывает локальный индекс, содержащий значения условных вероятностей для каждого соседа, который может быть выбран для следующего перехода для будущего запроса. Главное отличие от RWA в данном случае - это то, что в APS узел использует обратную связь от преды-дущих поисков вместо полностью случайных переходов.

Примеры файлообменных пиринговых сетей

Отдельного рассмотрения заслуживают файлообменные P2P-сети, которые охватывают в настоящее время свыше 150 млн. узлов. Рассмотрим наиболее популярные в настоящее время пиринговые сети, такие как Bittorrent, Gnutella2 и eDonkey2000.

Сеть BitTorrent (битовый поток) была создана в 2001 году. В соответствии с протоколом BitTorrent файлы передаются не целиком, а частями, причем каждый клиент, закачивая эти части, в это же время отдает их другим клиентам, что снижает нагрузку и зависимость от каждого клиента-источника и обеспечивает избыточность данных. С целью инициализации узла в сети Bittorrent (www.bittorrent.com) клиентская программа обращается к выделенному серверу (tracker), предоставляющему информацию о файлах, доступных для копирования, а также статистическую и маршрутную информацию об узлах сети. Сервер и после инициализации «помогает» узлам взаимодействовать друг с другом, хотя последние версии клиентских программ требуют наличия сервера только на стадии инициализации, приближаясь к идеалу концепции peer-to-peer.
Если узел «хочет» опубликовать файл, то программа разделяет этот файл на части и создает файл метаданных (torrent file) с информацией о частях файла, их местонахождении и узле, который будет поддерживать распространение этого файла.
Существует множество совместимых программ-клиентов, написанных для различных компьютерных платформ. Наиболее распространенные клиентские программы - Azureus, BitTorrent_client, μTorrent, BitSpirit, BitComet, BitTornado, MLDonkey.

В 2000 году была создана одна из первых пиринговых сетей Gnutella (www.gnutella.com), алгоритм которой в настоящее время усовершенствован. Сегодня популярность завоевала более поздняя ветвь этой сети - Gnutella2 (www.gnutella2.com), созданная три года спустя, в 2003-м, которая реализует открытый файлообменный P2P-протокол, используемый программой Shareaza.
В соответствии с протоколом Gnutella2 некоторые узлы становятся концентраторами, остальные же являются обычными узлами (leaves). Каждый обычный узел имеет соединение с одним-двумя концентраторами. Gnutella2 реализует информационный поиск с помощью метода блужданий. В соответствии с этим протоколом у концентратора есть связь с сотнями узлов и десятки соединений с другими концентраторами. Каждый узел пересылает концентратору список идентификаторов ключевых слов, по которым могут быть найдены публикуемые ресурсы. Для улучшения качества поиска используются также метаданные файлов - информация о содержании, рейтинги. Допускается возможность «размножения» информации о файле в сети без копирования самого файла.
Для передаваемых пакетов в сети разработан собственный формат, реализующий возможность наращивания функциональности сети путем добавления дополнительной служебной информации. Запросы и списки ID ключевых слов в Gnutella2 пересылаются на концентраторы по UDP.
Наиболее распространенные программы для Gnutella2 - это Shareaza, Kiwi, Alpha, Morpheus, Gnucleus, Adagio Pocket G2, FileScope, iMesh, MLDonkey.

Сеть EDonkey2000 была создана также в 2000 году. Информация о наличии файлов в ней публикуется клиентом на многочисленных серверах в виде ed2k-ссылок, использующих уникальный ID ресурса. Поиск узлов и информации в EDonkey2000 обеспечивают выделенные серверы. В настоящее время в сети существует около 200 серверов и порядка миллиарда файлов. Число пользователей EDonkey2000 составляет 10 млн. человек.
При работе каждый клиент EDon-key2000 связан с одним из серверов. Клиент сообщает серверу, какие файлы он предоставляет в общий доступ. Каждый сервер поддерживает список всех общих файлов клиентов, подключенных к нему. Когда клиент что-то ищет, он посылает поисковый запрос своему основному серверу. В ответ сервер проверяет все файлы, которые ему известны, и возвращает клиенту список файлов, удовлетворяющих его запросу. Возможен поиск по нескольким серверам сразу. Такие запросы и их результаты передаются через протокол UDP, чтобы уменьшить загрузку канала и количество подключений к серверам. Эта функция особенно полезна, если поиск на сервере, к которому клиент подключен в настоящее время, дает низкий результат.
Когда клиент сети EDonkey2000 копирует желаемый ресурс, он делает это одновременно из нескольких источников с помощью протокола MFTP (Multisource File Transfer Protocol).
С 2004 года в состав сети EDonkey2000 интегрирована сеть Overnet (www.overnet.com) - полностью децентрализованная система, позволяющая осуществлять взаимодействие между узлами без «привязки» к серверам, для чего используется DHT-протокол Kademlia.Такая интеграция разных сетей и дополнительная верификация способствовали большему развитию сети EDonkey2000.
Самой популярной для сети EDon-key2000 клиентской программой с закрытым кодом является программа eDonkey, однако существует и клиент с открытым программным кодом - eMule, который, помимо сети EDon-key2000, может задействовать еще одну сеть P2P - Kad Network.

Уязвимости пиринговых сетей

Следует признать, что помимо названных выше преимуществ пиринговых сетей им присущ также ряд недостатков.
Первая группа недостатков связана со сложностью управления такими сетями, по сравнению с клиент-серверными системами, если их использовать в автоматизированных системах управления. В случае применения сети типа P2P приходится направлять значительные усилия на поддержку стабильного уровня ее производительности, резервное копирование данных, антивирусную защиту, защиту от информационного шума и других злонамеренных действий пользователей.
Следует отметить, что пиринговые сети время от времени подвергаются вирусным атакам, начало которым в 2002 году положил сетевой червь Worm.Kazaa.Benjamin, распространяющийся по пиринговой сети KaZaA.
Еще одна проблема P2P-сетей связана с качестом и достоверностью предоставляемого контента. Серьезной проблемой является фальсификация файлов и распространение фальшивых ресурсов.
Кроме того, защита распределенной сети от хакерских атак, вирусов и троянских коней является очень сложной задачей. Зачастую информация с данными об участниках P2P-сетей хранится в открытом виде, доступном для перехвата. Серьезной проблемой также является возможность фальсификации ID узлов.
Автор рассмотрел модель гибридной пиринговой сети с выделенными узлами (рис. 4 ), связывающими отдельные узлы и обеспечивающими ведение поисковых каталогов.


Рис. 4. Гибридная пиринговая сеть с выделенными серверами

В модели предполагалось, что существует N узлов, каждый из которых логически связан в среднем с n (n << N) количеством узлов. Для обеспечения поиска существует M поисковых узлов, каждый из которых, в свою очередь, соединен с некоторым количеством узлов; этим узлам он доступен как поисковый каталог. Объемы каталогов распределены в соответствии с экспоненциальным законом, т.е. i-й поисковый каталог соединен с k exp{ai} узлами, где k и a - некоторые константы. Такая закономерность распределения поисковых узлов, действительно, часто наблюдается на практике.
Задача анализа уязвимости заключалась в том, каким образом нарушится информационная связность пиринговой сети при выводе из строя некоторого количества ведущих поисковых каталогов.
Полученные расчеты подтвердили высокую информационную устойчивость пиринговой сети, построенной в соответствии с данными критериями, к удалению случайных поисковых узлов. Вместе с тем, очень высока зависимость от удаления наибольших узлов, что приводит к экспоненциальному снижению таких показателей, как минимальная длина пути между узлами и коэффициент кластерности.

Заключение

По сравнению с клиент-серверной архитектурой P2P обладает такими преимуществами, как самоорганизованность, отказоустойчивость к потере связи с узлами сети (высокая живучесть), возможность разделения ресурсов без привязки к конкретным адресам, увеличение скорости копирования информации за счет использования сразу нескольких источников, широкая полоса пропускания, гибкая балансировка нагрузки.
Благодаря таким характеристикам, как живучесть, отказоустойчивость, способность к саморазвитию, пиринговые сети находят все большее применение в системах управления предприятиями и организациями (например, Р2Р-технология сегодня применяется в Государственном департаменте США).
Существует много областей, где P2P-технология успешно работает, например, параллельное программирование, кэширование данных, резервное копирование данных.
Отдельно следует отметить недостатки, присущие файлообменным сетям общего доступа. Самая большая проблема - легитимность контента, передаваемого в таких P2P-сетях. Неудовлетворительное решение этой проблемы привело уже к скандальному закрытию многих подобных сетей. Следует заметить, что, несмотря на многочисленные иски, направленные против пиринговых сетей, в апреле этого года Европейский парламент отказался «криминализировать» P2P.
Есть и другие проблемы, имеющие социальную природу. Так, в системе Gnutella, например, 70% пользователей не добавляют вообще никаких файлов в сеть. Более половины ресурсов с этой сети предоставляется одним процентом пользователей, т.е. сеть эволюционирует в направлении клиент-серверной архитектуры.

Дмитрий ЛАНДЭ , СиБ
д.т.н., зам. директора ИЦ ElVisti