Заговоры. Амулеты и талисманы. Привороты. Нумерология

Что значит 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 являются распределенные хеш-таблицы, в которых хеширования используется для установления связи между данными и конкретным узлом, который за них отвечает.

Сеть P2P

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

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

В Microsoft тоже не обошли стороной появление технологии P2P и стали разрабатывать собственные инструменты и средства для ее применения. Так появилась платформа Microsoft Windows Peer-to-Peer Networking , исполняющая роль своего рода каркаса для коммуникаций в приложениях P2P. В состав этой платформы входят такие важные компоненты, как PNRP (Peer Name Resolution Protocol - протокол преобразования имен членов) и PNM (People Near Me - соседние пользователи) .

Кроме того, в версию.NET Framework 3.5 было включено новое пространство имен System.Net.PeerToPeer и несколько новых типов и средств, позволяющих создавать приложения P2P с минимальными усилиями.

Обзор технологии P2P

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

Архитектура типа "клиент-сервер"

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

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

На рисунке ниже показан простой вариант архитектуры типа "клиент-сервер":

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

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

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

Архитектура типа P2P

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

Давайте для примера представим, что веб-сайтом, с которым взаимодействуют клиенты, является www.williamspublishing.com, а издательство Williams объявило о выходе новой книги на этом сайте и предоставлении его для бесплатной загрузки всем желающим, но лишь на протяжении одного дня. Не трудно догадаться, что при таком положении дел накануне появления книги веб-сайт начнет просматривать масса людей, которые будут постоянно обновлять его содержимое в своих браузерах и ожидать появления файла. Как только файл станет доступным, все они одновременно начнут пытаться загрузить его и, скорее всего, веб-сервер, который обслуживает веб-сайт, не выдержит такого натиска и выйдет из строя.

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

Особенности архитектуры P2P

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

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

    обнаруживать других клиентов;

    подключаться к другим клиентам;

    взаимодействовать с другими клиентами.

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

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

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

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

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

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

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

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

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

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

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

    Удаление одного равноправного участника из группы не лишает остальных равноправных участников возможности взаимодействия друг с другом.

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

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

Также допускается создавать и структурированные сети P2P с четко определенными путями, по которым должно происходить распространение запросов и данных среди равноправных участников.

Решения P2P

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

    приложения, предназначенные для распространения содержимого, в том числе упоминавшиеся ранее приложения обмена файлами;

    приложения, предназначенные для совместной работы, такие как приложения, позволяющие открывать общий доступ к рабочему столу и "белой доске" (whiteboard);

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

    приложения, предназначенные для распределения обработки, как альтернатива приложениям для суперкомпьютеров, которые обрабатывают огромные объемы данных;

    приложения Web 2.0, объединяющие в себе некоторые или все перечисленные выше приложения и превращающие их в динамические веб-приложения следующего поколения.

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

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

Что такое настоящий P2P ?

Давайте введем понятие - настоящий P2P .

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

Изменение функций - это ничто иное как предоставление тех функций которые не могут работать у некоторых узлов одноранговой сети из-за ограничений:
1) За NAT"ом
2) Мобильные устройства

Оба класса устройств либо не могут иметь прямой доступ к сети (NAT) или могут, но строго не рекомендовано - (Мобильные устройства) из-за повышенного энергопотребления при огромном количестве подключений.

Для устранения данной проблемы используются такие технологии как TCP Relay (тк большинство P2P систем используют UDP, с огромным количеством одновременных подключений можно выбрать себе узел который будет выполнять функции получения запросов из сети по UDP и пересылки их на конечное устройство по TCP через одно и тоже соединение) Хочу напомнить, что подобный механизм уже был очень давно реализован в Skype, до его покупки компанией MS эти функции работали, позднее - понятие «супер ноды» в Skype ушло и их заменяют сервера MS.

Очень важно не путать P2P и Mesh сети. P2P - это одноранговое взаимодействие на уровне 3 и выше по модели OSI, Mesh - на 3 и ниже соответственно.

Какие проблемы решает P2P сети и какие технологии уйдут при повсеместном внедрении P2P?

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

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

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

Данные сервера нужно обслуживать, затрачивая человека-часы их надо настраивать и они не смогут динамически увеличить свою пропускную способность или допустим:
В Нижнем Новгороде всегда был популярен сервис Giwi.get который позволяет в он-лайне смотреть легальный контент, CDN сервер в регионе может одновременно предоставить возможность просмотра фильмов и сериалов только 100 000 пользователей. Но внезапно на сервисе появляется новый контент (сериал) по прогнозам которые были сделаны на основе исследований, данный сериал не должен был заинтересовать людей из данного региона.

Но почему, то он заинтересовал, и все решили его посмотреть - естественно CDN не справиться, в лучшем случае контент сможет обработать соседний CDN, но не факт что CDN соседний готов к такой нагрузке.

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

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

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

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

Очевидно, что P2P решения дают возможность провайдеру сказать, что он предоставляет вам доступ к сети на скорости хоть 1 TB\c тк контент в сети очень редко бывает уникален, провайдер (который имеет пирсинг с соседями провайдерами из города) сможет с большой долей вероятности предоставить доступ к контенту на тарифной скорости.

Никаких лишних серверов в сети
Сейчас в сети провайдера обычно стоят такие сервера как: Google CDN (/Youtube), Yandex CDN/пиринг, DPI, + другие специфические сервера CDN/Кэширования которые используются в данном регионе.

Очевидно, что можно ликвидировать все CDN сервера и лишний пиринг (с сервисами, а не с провайдерами), DPI в такой ситуации тоже будет не нужен, тк в часы ЧНН не будет таких резких скачков нагрузку. Почему?

ЧНН - Забудьте эту аббревиатуру
ЧНН - Час наибольшей нагрузки, традиционно это утренние часы и вечерние часы, причем всегда заметны несколько пиков ЧНН в зависимости от рода занятости людей:

Пики вечернего ЧНН:
1) Возвращение школьников из школы
2) Возвращение студентов из вузов
3) Возвращение работников которые работают по графику 5/2

Данные пики вы сможете увидеть на любом оборудовании которое анализируют сетевую нагрузку на канал.

P2P Решает и эту проблему, тк велика вероятность, что контент который интересен школьникам может быть интересен как студентам так и работникам - соответственно он уже есть внутри сети провайдера - соответственно ЧНН на магистрали не будет.

Далёкое будущее

Мы отправляем свои аппараты на луну и на марс, уже давно есть интернет на МКС.

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

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

А если мы предполагаем, что на другой планете будет наша колония которая будет расти - то как и на земле они будут пользоваться интернетом, понятное что им нужны будут те же инструменты, что и нам:
1) Мессенджер
2) Соц-сети
И это минимально-необходимое количество сервисов которые позволяют обмениваться информацией.

Логично, что контент который будет генерироваться на Марсе будет интересен и популярен на марсе, а не на земле, как быть соц.-сетям?
Устанавливать свои сервера которые будут автономно работать и через некоторое время синхронизироваться с землёй?

P2P сети решать и эту проблему - на марсе у источника контента свои подписчики, на земле - свои, но соц.-сеть одна и та же, но если у Марсианского жителя будет подписчик с земли - нет проблем, при наличии канала контент прилетит и на другую планету.

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

Разрыв каналов

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

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

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

Но марс - это далеко, даже на земле могут быть проблемы с разрывом канала связи.

Вспомните последние громкие проекты Google/Facebook с покрытием новых территорий интернетом.
Некоторые уголки нашей планеты всё еще не подключены к сети. Подключение может быть слишком дорогим или экономически не оправданным.

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

Выживаемость сети

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

Вспоминаем ситуацию с марсом, все устройства поступают на марс с земли, и в один прекрасный день сервер компании Uandex или LCQ ломается - перегорел контроллер RAID, или другая неисправность - и все марсиане опять же без MarsiGram или того хуже - не смогу обмениваться простыми сообщениями друг с другом. Новый сервер или его компоненты приедут с земли ох как не скоро.

При P2P решении - выход из строя одного участника сети никак не сказывается на работе сети.

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

Так, что будущее - это определенно P2P, как изменил мир P2P можно наблюдать уже сейчас:
Skype - небольшая компания не тратила деньги на сервера смогла вырасти до огромного гиганта
Bittorrent - OpenSource проекты могут передавать файлы не нагружая свои сервера

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

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

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

Как правило, большинство технологий, которые для этого используются, требуют присвоения камере или видеорегистратору дорогостоящего белого IP адреса, сложной процедуры настройки с использованием сервисов UPnPct и DDNS. Альтернативой этому является применение технологии Р2Р.

Р2Р (peer-to-peer) – пиринговый протокол связи, отличается более эффективным использованием полосы пропускания канала передачи сигнала и высокими показателями отказоустойчивости.

Впервые термин peer-to-peer (Advanced Peer to Peer Networking) – расширенные одноранговые сети, был использован корпорацией IBM в сетях с классической одноуровневой архитектурой и равноправными рабочими станциями. Он применялся в процессе динамической маршрутизации без использования сервера, когда каждый ПК выполнял функцию и клиента, и сервера. Сейчас более свободная версия перевода аббревиатуры звучит как «равный к равному».

Основная область применения – это удаленное видеонаблюдение за различными объектами, например:

  • открытая складская или строительная площадка;
  • магазин или производственное помещение;
  • приусадебный участок или дача.

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

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

ПРЕИМУЩЕСТВА Р2Р ВИДЕОНАБЛЮДЕНИЯ

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

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

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

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

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

Доступная стоимость. Цена на камеры видеонаблюдения использующие технологию Р2Р не слишком отличается от стоимости обычных IP камер с сопоставимыми техническими и эксплуатационными параметрами.

Р2Р КАМЕРЫ ВИДЕОНАБЛЮДЕНИЯ

Ниже рассмотрены основные производители Р2Р камер и некоторые их модели.

Falcon Eye – компания производитель оборудования для систем видеонаблюдения и безопасности. Специализируется на беспроводных системах охранных GSM сигнализаций. Имеет официальное представительство в России с 2005 года. вся продукция производителя, которая реализуется в нашей стране, сертифицирована и адаптированы для работы в сложных погодных условиях. Соответствуют международном у стандарту ISO – 90001.

Модельный ряд камер видеонаблюдения Р2Р включает:

  • Falcon Eye FE-MTR 1300;
  • Falcon Eye FE-MTR 300 P2P;
  • Falcon Eye FE-ITR 1300.

Все видеокамеры дают изображение в высоком разрешении 1280х720, могут работать при освещении 0,1 Люкс и имеют интерфейс передачи сигнала Lan и Wi-Fi (Falcon Eye FE-ITR 1300 только Lan). Кроме того они оснащены детектором движения и могут активировать процесс видеозаписи по тревоге.

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

Foscam – компания была основана в 2002 году. Специализируется на выпуске устройств и IP камер для GSM видеонаблюдения. Продукция прошла сертификацию по международному стандарту ISO 9001 и отечественным ГОСТам. Устройства оснащены детектором движения, слотами для карт памяти и интерфейсом RJ 45 (кабельное сетевое подключение витая пара).

Наиболее популярные модели:

  • Foscam FI9821P;
  • Foscam FI9853EP;
  • Foscam FI9803EP.

Zodiac – компания предлагает устройства для бытовых и профессиональных систем видеонаблюдения. Все Р2Р камеры оборудованы системой инфракрасной подсветки, что позволяет производить видеосъемку в темное время суток.

Модели, распространенные на рынке:

  • Zodiac 909W;
  • Zodiac 911;
  • Zodiac 808 выполнена в уличном варианте в корпусе со степенью защиты IP65.

НАСТРОЙКА Р2Р ВИДЕОНАБЛЮДЕНИЯ

Настройка Р2Р видеокамеры занимает не более 5 минут и не требует глубоких знаний протоколов связи или сложных настроек программы. Независимо от используемой камеры или выбранного облачного сервиса алгоритм настройки следующий:

1. С сайта выбранного облачного сервиса скачивается и устанавливается программное обеспечение, совместимое с операционной системой устройства для просмотра.

2. Устанавливается камера, к ней подводится электропитание.

3. Камера подключается к сети интернет посредством локальной проводной сети или через беспроводные средства передачи информации – WiFi, GSM и т. п.

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

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

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

Алгоритм настройки видеорегистратора ничем не отличается от настройки камеры. Примером такого устройства может служить гибридный видеорегистратор SPYMAX RL-2508H Light.

ОБЛАЧНЫЕ СЕРВИСЫ, ПОДДЕРЖИВАЮЩИЕ Р2Р ТЕХНОЛОГИЮ

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

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

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

Универсальный облачный Р2Р сервис – Easy4ip совместим с большинством популярных камер.

Для работы с Р2Р камерами необходимо ПО, устанавливаемое на устройстве просмотра:

  • PSS для операционной системы Windows и iOS;
  • iDMSS для мобильных устройств Apple;
  • gDMSS для устройств под управлением ОС Android.

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

© 2010-2019 г.г.. Все права защищены.
Материалы, представленные на сайте, имеют ознакомительно-информационный характер и не могут использоваться в качестве руководящих документов