» » Peer-to-peer

Peer-to-peer

Peer-to-peer, P2P (с англ. - равный к равному ) - вариант архитектуры системы, в основе которой стоит сеть равноправных узлов.

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

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

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

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

Современные P2P-сети получили развитие благодаря идеям, связанными с обменом информацией, которые формировались в русле того, каждый узел может предоставлять и получать ресурсы предоставляемых любыми другими участниками. В случае сети Napster, это был обмен музыкой, в других случаях это может быть предоставление процессорного времени для поиска инопланетных цивилизаций ( SETI @ home ) или лекарства от рака ( Folding @ home ).

История

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

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

Другим выдающимся успехом P2P был FidoNet. FidoNet, как и USENET, - это децентрализованная, распределенная сеть для обмена сообщениями. FidoNet был создан в 1984 году Томом Дженнингсом как средство для обмена сообщениями между пользователями различных BBS. Он был нужен, поэтому он быстро вырос и, как и USENET, существует по сей день.

Первое поколение P2P сетей

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

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

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

Вскоре после появления Napster была создана сеть EDonkey2000. Ключевое преимущество eDonkey над Napster заключалась в том, что сеть позволяла проводить скачивания различных частей одного файла, одновременно с разных участников сети, которые его предоставляют. Другим преимуществом eDonkey было то, что впоследствии, серверное обеспечение получило функциональности мижсерверного связи, что позволило выполнять поиск информации на участниках сети которые были подключены к разным серверам. Несмотря на названные преимущества, через использование серверов, эта сеть не была чистой peer-to-peer сетью.

Второе поколение P2P сетей

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

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

Лучшими примерами являются Gnutella, Kazaa или Emule с Kademlia, среди которых лишь Kazaa еще имеет центральный сервер для регистрации. eDonkey2000/Overnet, Gnutella, FastTrack и Ares Galaxy имеют примерно 10.3 миллионов пользователей (на апрель 2006 года, согласно slyck.com).

Третье поколение P2P сетей

Третье поколение P2P сетей характеризуется децентрализованной структурой, и принципиально новыми алгоритмами поиска, основанные на ключевом понятии распределенной хеш-таблицы (Distributed hash table), которая поддерживается участниками сети.

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

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

Анонимные peer-to-peer сети

Примеры анонимных сетей - Freenet, I2P, ANts P2P, RShare, GNUnet и Entropy. Также примером децентрализованной сети является система анонимной цифровой денежной единицы Bitcoin.

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

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

Преимущества P2P

Распределение / уменьшения стоимости. Централизованные системы, которые обслуживают многие клиенты, обычно составляют большинство стоимости системы. Когда эта стоимость становится слишком большим, архитектура P2P может помочь распределить стоимость среди пользователей. Например, среди систем файлообмена Napster позволил распределить стоимость хранения файлов и мог поддерживать индекс, необходимый для совместного использования. Экономия средств, осуществляется посредством использования и объединения ресурсов, которые в противном случае не используются (например SETI @ home). Поскольку узлы обычно являются автономными, важно распределять расходы справедливо.

Объединение ресурсов. Децентрализованный подход ведет к объединению ресурсов. Каждый узел в системе P2P приносит определенные ресурсы например вычислительная мощность или память. В программах, которые требуют огромное количество этих ресурсов, например intensive моделирования или распределены файловые системы, естественно использовать P2P, чтобы привлечь эти ресурсы. Распределенные вычислительные системы, например SETI @ Home, distributed.net, и Endeavours - очевидные примеры этого подхода. Объединяя ресурсы тысяч узлов, они могут выполнять тяжелые с точки зрения количества вычислений функции. Файлобминни системы, например Napster, Gnutella, и т.д., также объединяют ресурсы. В этих случаях, это дисковое пространство, чтобы хранить данные, и пропускная способность, чтобы их передавать.

Усовершенствованная масштабируемость / надежность. С отсутствием сильной центральной власти по отношению к автономных узлов, важной целью является улучшение масштабируемости и надежности. Масштабируемость и надежность определяются в традиционном для распределенных систем смысле, как например использование пропускной способности - сколько узлов могут быть достигнуты от одного узла, сколько узлов может поддерживаться, сколько пользователей может поддерживаться. Распределенная природа peer-to-peer сетей также увеличивает помилкостийкисть в случае неудач, путем дублирования данных из многих узлов, и - в чистых системах P2P - предоставляя возможность узлу найти данные вне зависимости от единого централизованного индексного сервера. В последнем случае, нет никакой единой критической точки в системе.

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

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

Динамичность. Системы P2P предполагают, что окружение чрезвычайно динамична. То есть, ресурсы, например узлы, появляются и исчезают из системы непрерывно. В случаях коммуникации, например сети для обмена сообщениями, используются так называемый «список контактов», чтобы информировать пользователей, когда их друзья становятся доступными. Без этого, нужно было бы, чтобы пользователи «опрашивали» партнеров, посылая периодические сообщения. В случае распределенных вычислений, например distributed.net и SETI @ home, система должна приспособиться к заменах. Поэтому они должны повторно выдавать задания для вычисления другим участникам, чтобы гарантировать, что работа не потеряна, если предыдущие участники отпадают от сети, пока они выполняли шаг вычисления.

Классификация P2P систем

По функциям:

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

Файлообмен. Хранение и обмен данными ¬ - это одна из областей, где технология P2P была успешной. Мультимедийные данные, например, требуют больших файлов. Napster и Gnutella использовались пользователями, чтобы обойти ограничения пропускной способности, которые делают передачу больших файлов неприемлемыми.

Сотрудничество. Природа технологии P2P делает ее хорошо подходящей для обеспечения сотрудничества между пользователями. Это может быть обмен сообщениями, онлайн игры, совместная работа над документами в бизнесе, образовании и дома. На заметкубесплатные онлайн игры скуби ду.

По степени централизации:

Чистые peer-to-peer системы. Узлы равны, сочетая роли сервера и клиента. Не существует центрального сервера, управляющего сетью. Примерами таких систем являются Gnutella и Freenet

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

В зависимости от того, как узлы соединяются друг с другом можно разделить сети на структурированные и неструктурированные:

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

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

Просмотров: 7022 | 14-02-2013

Похожие статьи:


Достопримечательности Екатеринбурга

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

Тамара Мироновна Будянская

Тамара Мироновна Будянская - украинский искусствовед, архитектор. Биография Архитектор Тамара Будянская (крайняя слева) с коллегами, 1940 год 1936 ...

Веб-сервер

Веб-сервер (англ. Web Server) – это сервер, принимающий HTTP-запросы от клиентов, обычно веб-браузеров, и выдающий им HTTP-ответы, обычно ...

Домен (Интернет)

Домен (англ. Domain) – часть пространства иерархических имен сети Интернет, которая обслуживается группой серверов доменных имен (DNS-серверов) и ...

Категория: Интернет

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

Сервер

Сервер (англ. server - служка) - в компьютерной терминологии слово может касаться отдельного компьютера или программы. Главным признаком в обоих ...
О сайте
Сайт с интересными статьями.
  • бесплатная dle 10.3
  • Авторизация