В настоящее время WWW не является самой крупной сетью по ресурсам и
порождаемому интернет-трафику. Известно, что
трафик, объем информационных ресурсов (в байтах), количество узлов пиринговых сетей, если их рассматривать в
совокупности, существенно превосходят соответствующие показатели веб. При
этом можно отметить, что проблемы поиска и уязвимости в пиринговых сетях, как крупнейшего «белого пятна»
современных коммуникаций, пока остаются открытыми.
Пиринговые сети
(Peer-to-peer, P2P – равный с равным) - это компьютерные сети, основанные на
равноправии участников. В таких сетях отсутствуют выделенные серверы, а
каждый узел (peer) является как клиентом, так и
сервером. Впервые фраза «peer-to-peer» была
использована в 1984 году П. Йонухутсманом
(P. Yohnuhuitsman) при
разработке архитектуры Advanced Peer to Peer Networking фирмы IBM.
P2P – это сетевой
протокол
[14],
обеспечивающий возможность создания и функционирования сети равноправных узлов, их взаимодействия. Во многих случаях P2P являются наложенными сетями, использующими существующие транспортные
протоколы стека TCP/IP - TCP или UDP. Следует
отметить, что на практике пиринговые сети
состоят из узлов, каждый из которых взаимодействует лишь с некоторым
подмножеством других узлов сети (из-за ограниченности ресурсов). Для
реализации протокола P2P используются клиентские программы, обеспечивающие
функциональность как отдельных узлов, так и всей пиринговой сети.
Несмотря на то, что все узлы в
P2P имеют одинаковый статус, реальные
возможности их могут существенно отличаться. На
практике большинство пиринговых сетей
дополняются выделенными
серверами, несущими организационные функции, например
авторизацию
[51].
В частности, известны библиотечные пиринговые
сети, в которых используются выделенные серверы, играющие роль центров авторизации,
хеширования и репликации библиографических данных
[14].
Архитектура пиринговых сетей принципиально отличается от
традиционной централизованной архитектуры
«клиент/сервер», подразумевающей, что сеть
зависит от центральных узлов (серверов), которая обеспечивает подключенные
к сети терминалы (клиенты) необходимыми сервисами. В этой централизованной
архитектуре ключевая роль отводится серверам, которые определяют сеть
независимо от наличия
клиентов, т.е. при падении этих серверов сеть становится нерабочей.
Очевидно, что рост количества клиентов сети типа «клиент/сервер» приводит к росту нагрузок на
серверную часть, в результате чего она может оказаться
перегруженной.
Децентрализованная
пиринговая сеть, напротив, становится более
производительной при увеличении количества узлов, подключенных к ней.
Действительно, каждый узел
добавляет в сеть
P2P свои ресурсы
(дисковое пространство и вычислительные возможности), в результате
суммарные ресурсы сети увеличиваются. При этом, конечно, нельзя не
учитывать того факта, что на практике большинство P2P-сетей все же зависят
от своих центральных узлов, например, одна из самых известных таких сетей
BitTorrent зависит
от так называемых «трекеров» (tracker), при падении которых эта сеть станет
нерабочей.
По
сравнению с клиент/серверной архитектурой (например, с веб), архитектура
P2P обладает такими
преимуществами, как самоорганизованность,
отказоустойчивость при потере связи с узлами сети, возможность разделения
ресурсов без привязки к конкретным адресам, увеличение скорости
копирования информации за счет использования сразу нескольких источников,
более эффективное использование полосы пропускания, гибкая балансировка
нагрузки.
Первые
пиринговые сети, в частности, Gnutella, широко использовали метод BFS, называемый
еще методом размножения
запросов, который ведет к
экспоненциальному росту числа сообщений запросов и, соответственно, ведет
к перегрузке сети. Недостатки рассмотренного метода инициировали разработку
группы протоколов DHT (Distributed Hash Tables), в частности, протокола Kademlia, который сейчас широко используется в
наиболее крупных P2P-сетях.
Были введены правила, в соответствии с которыми запросы могут пересылать
вверх по дереву только определенные узлы, так называемые, концентраторы,
остальные узлы могут лишь посылать им запросы. Эти правила были
реализованы в 2003 году как протокол новой сети Gnutella2. В соответствии
с этим протоколом у концентратора есть связь с сотнями узлов и десятки
соединений с другими концентраторами. Каждый узел пересылает концентратору
список идентификаторов ключевых слов, по которым могут быть найдены
публикуемые ей ресурсы. Для улучшения качества поиска используются также
метаданные файлов - информация о содержании, рейтинги. Допускается
возможность «размножения» информации о файле в сети без копирования самого
файла.
В настоящее время при реализации пиринговых сетей используются самые различные подходы. В частности, компания Microsoft разработала протоколы для P2P-сетей Scribe и Pastry. Поддержка протокола PNRP (Peer Name Resolution Protocol), также относящегося к P2P-системам, была включена в состав Windows Vista.
Одну из
удачных попыток стандартизации
протоколов P2P предприняла компания Sun Microsystems в рамках проекта JXTA [28]. Этот проект
реализуется с целью унифицированного создания P2P-сетей для различных
платформ.
Существует
несколько областей применения пиринговых сетей,
объясняющих их растущую популярность, назовем некоторые из
них:
-
Обмен файлами. P2P
выступают альтернативой FTP-архивам, которые утрачивают перспективу ввиду
значительных информационных перегрузок.
-
Распределенные вычисления.
Например, такой проект с элементами P2P, как SETI@HOME, посвященный
распределенному поиску внеземных цивилизаций, продемонстрировал высокий
вычислительный потенциал для
распараллеливаемых задач. Вместе с тем, этому проекту свойствена централизованая
раздача и прием данных.
-
Обмен сообщениями. Как
известно, ICQ – это
P2P-проект. Эта сеть также обладает элементами централизации, в частности,
очень зависит от состояния сервера login.icq.com.
-
Интернет телефония.
Сегодня
одной из самых популярных служб
Интернет-телефонии является
Skype (www.skype.com), созданная в 2003 г. Н. Зеннстромом и Я. Фриисом,
авторами известной пиринговой сети KaZaA. Построенная в архитектуре P2P служба Skype
охватывает свыше 100 млн. пользователей.
-
Групповая работа.
Сегодня реализованы такие сети групповой работы, как Groove Network (защищенное пространство для
коммуникаций) и OpenCola (поиск информации и
обмен ссылками).
Отдельного
рассмотрения заслуживают файлообменные P2P-сети,
которые в начале 2008 года охватывали уже более 150 млн. узлов. Сегодня в
Интернет более половины всего трафика приходится на файлообменные P2P-сети. Наиболее популярные из них -
это Bittorrent, Gnutella2 и
eDonkey2000.
Сеть
BitTorrent была создана в 2001 году. В
соответствии с протоколом BitTorrent файлы
передаются не целиком, а частями, причем каждый клиент, закачивая эти
части, в это же время отдает их другим клиентам, что снижает нагрузку и
зависимость от каждого клиента-источника и обеспечивает избыточность
данных. С целью инициализации узла в сети трекеров
(www.bittorrent.com) клиентская программа обращается к выделенному
серверу, предоставляющему информацию о файлах, доступных для копирования,
а также содержащем статистическую и маршрутную информацию об узлах сети.
Если узел “хочет” опубликовать файл, то программа разделяет этот файл на
части и создает файл метаданных (torrent file) с информацией о частях
файла, их местонахождении и узла, который будет поддерживать
распространение этого файла.
В 2000
г. была создана одна из первых пиринговых сетей
Gnutella (www.gnutella.com). Сегодня наиболее
популярна более поздняя версия этой сети - Gnutella2 (www.gnutella2.com),
созданная в 2003 году, которая реализует открытый файлообменный P2P-протокол.
Сеть EDonkey2000 была создана в 2000 году. Информация о наличии
файлов в ней публикуется клиентом на
серверах в виде так называемых ed2k-ссылок, использующих уникальный
ID ресурса. В сети EDonkey2000 выделенные серверы обеспечивают поиск узлов
и информации. Существует около 200 серверов и порядка миллиарда файлов. Число пользователей
EDonkey2000 составляет более 10 млн. человек. При работе каждый клиент
EDonkey2000 связан с одним из серверов. Клиент сообщает серверу, какие
файлы он предоставляет в общий доступ. Каждый сервер поддерживает список
всех общих файлов клиентов, подключенных к нему. Когда клиент что-то ищет,
он посылает поисковый запрос своему основному серверу. В ответ сервер
проверяет все файлы, которые ему известны, и возвращает клиенту список
файлов, удовлетворяющих его запросу.
Существует много областей, где успешно применяется
P2P-технология, например,
параллельное программирование, кэширование данных, резервное
копирование данных.
Благодаря
таким характеристикам, как живучесть, отказоустойчивость, масштабируемость, пиринговые
сети находят все большее применение в системах управления производствами и
организациями (например, Р2Р-технология сегодня применяется в
Государственном Департаменте США). В данном случае возможный выход из
строя части узлов или серверов не существенно влияют на управляемость всей
системы. Общеизвестно, что система доменных имен (DNS) в сети Интернет
также фактически является сетью обмена данными, построенной по принципу
Р2Р [115].
Реализацией
технологии Р2Р является также популярная в настоящее время система
распределенных вычислений
GRID. Еще одним примером распределенных вычислений может служить
проект distributed.net, участники которого занимаются легальным взломом
криптографических шифров, чтобы проверить их
надежность.
Помимо
названных выше преимуществ пиринговых сетей, им
присущ также ряд недостатков, первая группа которых связана со сложностью
управления по сравнению с клиент-серверными системами. Приходится тратить
значительные усилия на поддержку стабильного уровня их производительности,
резервное копирование данных, антивирусную защиту, защиту от
информационного шума и других злонамеренных действий
пользователей.
Большая
проблема – это легитимность контента, передаваемого в P2P-сетях. Неудовлетворительное
решение этой проблемы привело уже к скандальному закрытию многих таких сетей
(например, Napster в июле 2001 года). Есть и
другие проблемы, имеющие социальную природу. Так в системе Gnutella, например, 70% пользователей не добавляют
вообще никаких файлов в сеть. Более половины ресурсов в этой сети
предоставляется одним
процентом пользователей, т.е. сеть эволюционирует в направлении
клиент-серверной архитектуры.
Еще
одна проблема P2P-сетей связана с качеством и достоверностью
предоставляемого контента. Серьезной проблемой является фальсификация файлов и
распространение фальшивых
ресурсов. Еще одной проблемой является возможность фальсификации ID узлов.
Защита распределенной сети от хакерских атак, ботнетов, вирусов и «троянских коней» является весьма
сложной задачей. Зачастую информация с данными об участниках P2P-сетей
хранится в открытом виде, доступном
для перехвата.