P2P сети что это – Где найти практический пример построения P2P сети с несколькими нодами? — Хабр Q&A

Содержание

Технология Peer-to-peer. P2P сети — BitcoinWiki

Это утверждённая версия страницы. Она же — наиболее свежая версия.

Понравилась статья? Поделись:


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

Описание развития технологии peer-to-peer[править]

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

Peer-to-peer.png

Технические особенности[править]

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

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

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

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

Использование P2P в криптовалюте[править]

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

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

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

https://ru.bmstu.wiki/P2P_(Peer-to-Peer)

https://ru.wikipedia.org/wiki/Одноранговая_сеть

См. также на BitcoinWiki[править]

.NET и C# | Сеть P2P

333 93

C# и .NET — Сетевое программирование — Сеть 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 объявило о выходе новой книги на этом сайте и пре

Web – P2P — Web / Habr

Доброе время суток, дорогой %username%.

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

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

Если интересно — welcome под кат.

Идея распределённого интернета давно уже бродит в головах разного рода технических и оклотехнических специалистов. Кто-то предлагает делать полностью распределённые торренты с блекджеком автообновлениями и без трекеров, кто-то сразу берётся за распределённые ОС (не очень хорошо представляю себе такую штуку, но звучит внушительно), кто-то берётся заменять DNS. Уже есть несколько проектов, которые подходят к реализации с разных сторон, но статья не о них.

Общие размышления

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

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

Запуск приложений поверх сети даёт:

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

Социальная часть

Почему проект распределённого веба имеет будущее именно в таком виде?

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

Отсутствие кода на стороне клиента обозначает, что клиент может пользоваться сервисами сети, но не входить в неё. Для предоставления ресурсов в распоряжение сети достаточно поставить отдельное приложение, но это дело добровольное — мы же не собираемся всех запихивать «железной рукой в светлое будущее». Стимулы войти в сеть найдутся. Хорошим примером являются торренты. Рейтинги и статусы, возможность использования расширенных функций и другие способы мотивации. Всё больше людей будут входить в сеть, обеспечивая её рост. При достаточном размере сети станет возможным создание действительно 100% автономных неубиваемых сервисов. А это уже будущее, господа.

Для тех, кто прочитав заголовок «социальная часть», подумал совсем о другом, отдельно сообщаю — таки да, там можно делать распределённую социальную сеть, читайте ниже.

Техника: с чем имеем дело и как это работает

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

Информация в сети представляются в виде источников данных. Если вам нужен какой-то файл, строка или число — вы можете запросить его в удобном вам виде у соответствующей функции.
Поверх такой платформы можно уже запускать инфраструктуру — аналог DNS в виде сетевого приложения, которое принимает на вход адрес, а отдаёт список IP (и/или особый адрес сети). Да и сами сайты становятся просто распределёнными приложениями генерации и компоновки HTML кода и могут быть выполнены независимо от какого-либо сервера.

Разработка

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

Что уже готово:

  • Функциональное ядро, занимающееся распараллеливанием подпрограмм;
  • ACL на уровне функций;
  • пулинг соединений;
  • синхронизация кода узлов;
  • синхронизация операционных данных;

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

Общие задачи, ожидающие решения:

  • распределённое хранилище данных;
  • система поиска нужных ресурсов в сети по их идентификатору;
  • аналог DNS и плагины для его поддержки браузерами;
  • встроенные обработчики протоколов;
  • многое другое;

Также можно почитать темы из обсуждения проекта в гуглогруппе (она достаточно общая — включает и не касающиеся проекта темы).
Если уже очень хочется покрутить в руках

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

Социальность

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

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

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


Независимость

Интернет потерял независимость году этак в 2005. Распределённый интернет, часть которого мы собираемся здесь создать, конечно, не сделает вас независимыми от провайдеров (яркий пример зависимости), но, в перспективе, позволит избежать ига всяких RIAA и MPIA (я не сторонник повального пиратства, но подобным организациям я точно не друг — у меня на эту тему есть свои мысли объёмом примерно на такую же статью), в какой-то мере защитит от нападок на DNS (не смог найти ссылку на статью про массовое отключение доменов; если в коментариях кто-то найдёт — заменю), и поможет возникновению новых независимых источников информации, что сделает мир чуточку лучше что даст нам новые возможности её получения.
P.S. Спасибо всем, кто помог мне в публикации статьи — без вас её бы здесь не было.

Материалы:
http://groups.google.com/group/DarkMatterP2P/ — место, где в данный момент ведётся всё обсуждение по вопросам, связанным с темой в т.ч.не касающиеся проекта.
http://habrahabr.ru/blogs/p2p/112491/ — достаточно обширная статья с хорошей подборкой ссылок.
http://habrahabr.ru/blogs/infosecurity/112682/ — ещё одна статья на тему, с попыткой организовать людей и сделать что-то вменяемое.

Что такое P2P сети?

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

P2P – это сокращение от английского выражения “peer-to-peer”, что можно перевести как «равный — равному». Их еще называют одноранговыми, децентрализованными или пиринговыми сетями.

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

В P2P сети такого сервера нет. Необходимые файлы хранятся на компьютерах пользователей в «расшаренных» папках (папках, открытых для общего доступа). И каждый компьютер может выступать как в роли клиента (скачивать информацию), так и в роли сервера (отдавать информацию). Файл при этот может качаться фрагментами сразу из нескольких источников. Это позволяет повысить скорость скачивания.

Сейчас чаще всего используются так называемые гибридные (частично децентрализованные) P2P сети. В таких сетях сервер присутствует, но он используется не для хранения информации, а для координации работы сети. Такая сеть объединяет в себе скорость чистой P2P-сети и надежность централизованной сети. На данный момент два самых популярных пиринговых сетевых протокола, используемых в P2P сетях — это BitTorrent и Direct Connect.

P2P сети: протокол BitTorrent

При обмене файлами через протокол BitTorrent скачиваемые файлы передаются частями. Скачивая файл при помощи специальной программы (torrent-клиента), вы в то же время отдаете его другим клиентам по принципу «ты мне — я тебе».

Для координации обмена файлами существует специализированный сервер — торрент-трекер. Он нужен для того, чтобы пиры (участники сети) могли найти друг друга. Обычно на трекере хранятся хеш-суммы (идентификаторы файлов), IP-адреса и входящие порты клиентов. Но часто торрент-трекер представляет собой еще и сайт с информацией о распространяемых файлах (описания, метаданные и т.п.) и количестве пиров, статистикой закачек.

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

Наиболее популярные торрент-клиенты — это официальный клиент BitTorrent, uTorrent, BitComet, KTorrent, Deluge, Transmission, Vuze (Azureus) и др.

P2P сети: протокол Direct Connect

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

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

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

Наиболее популярные DC клиенты — это различные потомки клиента DC++, в частности, StrongDC++, ApexDC++, FlylinkDC++, GreyLink, EiskaltDC++ и др.

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

Что такое P2P сети?

Провайдер режет p2p, что с этим делать? / Habr

Привет хабр!
Уже год московский интернет-провайдер замыкающий пятерку крупнейших провайдеров Москвы (по оценкам AC&M-Consulting, ему принадлежит примерно 6% московского рынка ШПД),
зарезает исходящий — upload трафик по протоколу p2p.

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

Что? Есть? Где?

Суть зарезания:
До конца июля:
  • Полная отдача по тарифному плану происходит только ночью, с 3 до 9 утра;
  • С 9 утра отдача режется на фиксированном уровне, плавно понижающемся примерно с 300 КБ/с в 9 утра до 100 КБ/с вечером.
  • В вечерний час пик, с 20:00 (в выходные — с 18:00), раздача фиксируется и вовсе на уровне ~50 КБ/с, так продолжается до часа ночи;
  • С 1 до 3 ночи планка приподнимается обратно до уровня 100–300 КБ/с, но снимается шейпер лишь в 3 часа.

С конца июля:
  • отдача p2p круглосуточно не превышает 150—200 КБ/с
топик на torrents.ru

Официальная позиция компании:

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

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

Способы решения проблемы:

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

Ну а сейчас я перехожу к самому интересному.

Поднятие VPN

Про бесплатное VPN туннелирование я прочитал здесь, же на хабре. В топике всё написано, от себя добавлю лишь ссылку на настройки (для Windows), VPN от сервиса itshidden.

Замеры проводились на стабильной версии µTorrent 1.8.4, другие закачки были отключены.

Для начала, посмотрим на обычную скорость скачивания и отдачи в сети QWERTY:

Итак, у меня поднято VPN туннелирование, давайте посмотрим на скорость скачивания и отдачи:

Итог:
Скорость отдачи при VPN, действительно возрастает, но вот скорость скачивания сильно падает, поэтому лучше всего включать VPN только для отдачи, после скачивания нужного контента.

µTorrent 2.0 beta c включенным µTP

Про него писали на хабре в релизе 2 версии будет включен по умолчанию протокол µTP.
К радости оборудование QWERTY на данный момент не может зарезать протокол µTP. Но существует другая проблема:
В бета-версиях некорректно работает скачивание, например у меня, на версии 1.8.4 клиент качает со скоростью 800-1000 Кб/c.
В бете версии же скорость скачки не превышает 400-500 Кб/c. При этом с включенным µTP отдача волнообразная, двигается скачками, однако достигает 500-600 Кб/c. Игры с параметром bt.transp_disposition результатов пока не дали.
Надеюсь что в релизной версии 2.0 данный косяк поправят, а оборудование провайдера не сможет зарезать протокол µTP. Стоит заметить, что при массовой миграции абонентов на 2 версию, шейпер не будет так чувствоваться, и возможна перегрузка каналов.

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

Общие выводы

Выход есть из любой ситуации, было бы желание.

Зарезалку p2p QWERTY можно обойти!

На сегодняшний момент, мне удобнее использовать VPN туннелирование. Оно включается и отключается одним кликом мыши, что удобно.
Если технически QWERTY не найдет выход для зарезания µTP, а релизная версия µTorrent 2.0 выйдет без нынешних косяков, то я откажусь от VPN.
Это будет интересно. Интересно потому, что:
Во-первых, интересен ответ QWERTY, какие меры предпримет провайдер. Я надеюсь я освещу ответ QWERTY нам, торрентщикам.
Во-вторых, возможно µTP позволит обойти шейперы не только у QWERTY, но и у других зарубежных провайдеров. И тогда p2p ждёт рассвет. 🙂

Зачем интернет-трекеры, когда есть локальный?

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

Не секрет что у QWERTY есть свой локальный торрент-трекер. На данный момент там зарегистрировано 15.000 пользователей и создано более 35 000 торрентов. Это новинки, фильмы и прочий контент. Конечно до torrents.ru ему далеко, но для локальной сети трекер достаточно крупный.

Мы с другом cheget подумали и сформулировали несколько плюсов и минусов локального трекера.

Стоит отметить, что:
На локальном трекере не действуют никакие ограничения на отдачу.

Вступление:

Не для кого не секрет что p2p сети в данный момент занимают львиную долю всего сетевого трафика. И в современных условиях практически каждый первый пользователь, который использует услуги провайдера по обеспечению доступа к всемирной паутине, практически каждодневно что-то закачивает либо скачивает по сети p2p (посредством торрент трекеров с помощью торрент клиентов).
Структуру сети любого провайдера в Москве составляет локальная сеть, объединяющая в себе всех конечных пользователей провайдера, и соответственно выход всей этой сети в интернет. Провайдер предоставляет в пользование внутреннюю сеть и доступ в интернет с двумя разными скоростями, естественно внутри сетевая скорость значительно выше скорости трафика внешней (интернет). Поэтому логично сделать популярный сервис p2p на внутри сетевой скорости, однако с доступом к нему только пользователей сети провайдера, с блокировкой доступа внешним пирам. Это большой плюс, так как качать со скоростью 11 мегабит (внутри сетевая) и со скоростью 1 мегабит (внешняя скорость скачки в интернет) при одном и том же тарифе — это огромная разница.

Плюсы:

Итак самый главный плюс локальных трекеров это естественно скорость.

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

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

Минусы:

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

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

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

Итог:

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

Эпилог:

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

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

Спасибо за прочтение 🙂

UPD: Хотел бы перенести эту запись в тематический блог Peer-to-Peer но увы, не хватает кармы.
UPD: 2 Спасибо перенёс. 🙂

p2p Википедия

Одноранговая сеть, в которой узлы «общаются» между собой без центрального элемента

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

История

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

Устройство одноранговой сети

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

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

Пример такой сети: I2P, Gnutella2.

Приватные P2P-сети

Пример сети: RetroShare

Частично децентрализованные сети

Помимо чистых P2P-сетей, существуют так называемые гибридные сети, в которых существуют серверы, используемые для координации работы, поиска или предоставления информации о существующих машинах сети и их статусе (on-line, off-line и т. д.). Гибридные сети сочетают скорость централизованных сетей и надёжность децентрализованных благодаря гибридным схемам с независимыми индексационными серверами, синхронизирующими информацию между собой. При выходе из строя одного или нескольких серверов сеть продолжает функционировать. К частично децентрализованным сетям относятся например eDonkey, BitTorrent, Direct Connect, TOR.

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

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

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

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

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

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

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

Пиринговые платёжные системы

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

Другие децентрализованные сервисы

  • Протокол децентрализованной торговли OpenBazaar.
  • Платформа для создания децентрализованных онлайн-сервисов и автономных организаций на базе блокчейна — Ethereum, в которой используются умные контракты.
  • Распределённая поисковая система YaCy.

Пиринговое вещание

Принцип peer-to-peer применяется в отдельных сценариях потоковой передачи медиа-данных. Наиболее эффективны подобные технологии в случае, когда большое количество потребителей находятся внутри одной подсети либо в связанных между собой подсетях.[2] См. также Список систем потокового мультимедиа

Примечания

Ссылки

Обнаружение P2P трафика

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

Йеминг Гонг, перевод Владимир Куксенок

С появлением в конце 1999 года Napster’a, P2P приложения быстро обрели популярность в интернет сообществе. Вместе с тем возросло потребление трафика такими приложениями и появилась необходимость в обнаружении пользователей P2P сетей в пределах сетевого трафика компании.

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

Стандартные методы

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

Анализ открытых портов

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

Limewire 6346/6347 TCP/UDP
Morpheus 6346/6347 TCP/UDP
BearShare default 6346 TCP/UDP
Edonkey 4662/TCP
EMule 4662/TCP 4672/UDP
Bittorrent 6881-6889 TCP/UDP
WinMx 6699/TCP 6257/UDP

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

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

Анализ трафика

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

Суть этого способа в мониторинге трафика, проходящего через сеть, на предмет обнаружения определенных сигнатур, специфичных для P2P приложений, в полезной нагрузке пакетов. Многие современные коммерческие и свободно распространяемые решения для обнаружения P2P трафика основаны на этом методе. В их число входят L7-filter, Cisco’s PDML, Juniper’s netscreen-IDP, Alteon Application Switches, сигнатуры основных приложений Microsoft и NetScout. Каждое из этих приложений с помощью регулярных выражений анализирует данные, проходящие через прикладной уровень, пытаясь определить факт использования P2P приложения.

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

  • P2P приложения постоянно развиваются и соответственно изменяются их сигнатуры. Чтобы анализ трафика был эффективен, требуется постоянное обновление базы сигнатур.
  • С появлением программ для обнаружения P2P трафика, разработчики P2P приложений все чаще и чаще шифруют трафик, например, используя SSL, что сильно затрудняет анализ протокола.
  • Поиск по сигнатуре требует анализа всего сетевого трафика, что может создать проблемы в работе крупных сетей. Такое ПО может создавать слишком большие нагрузки на сетевое оборудование или даже быть причиной ошибок в работе сети.
  • Кроме того, поиск по сигнатуре на прикладном сетевом уровне очень ресурсоемкий. Чем больше пропускная способность сети, тем большую цену придется заплатить за проверку трафика.
Если ваша организация не может позволить себе специальное оборудовании или программное обеспечение для анализа трафика, является ли проверка открытых портов единственной альтернативой? К счастью, ответ – нет. Метод, основанный на шаблонах поведения трафика, является и функциональным и рентабельным.

Поведение трафика

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

Несмотря на то, что полученные данные несколько “сыроваты”, в них все же есть полезная информация, которую можно проверить на соответствие определенным шаблонам. Хорошие результаты может принести анализ UDP сеансов.

Обнаружение P2P пользователей

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

Что подразумевается под анализом UDP сеансов и как это может нам помочь? Перед тем как ответить на этот вопрос, давайте рассмотри популярное P2P приложение Napster.

Централизованные, нецентрализованные и смешанные P2P сети

Napster, разработанный Шоном Фенингом, впервые появился в мае 1999 и представлял собой первое поколение P2P сетей. Сетевая структура Napster’а была централизована, что означает, что ее составными частями были два элемента: центральные индексные сервера и пользовательские компьютеры. Центральные сервера принадлежали Napster’у и использовались для обслуживания пользователей. Когда пользователь хотел загрузить музыкальный файл, он посылал запрос на центральный индексный сервер, который в соответствии с запросом производил поиск в своей базе данных и отсылал ответ, содержащий список других пользователей, имеющих желаемые музыкальные файлы. Затем, для загрузки файла, пользователь мог создать прямое соединения с пользователями из полученного списка.

Ахиллесова пята Napster’a – полная зависимость от центрального сервера. Если сервер прекратит работу – сеть разрушится. Это хорошо иллюстрируется действиями звукозаписывающих компаний, вынудивших Napster прекратить свою работу.

Случай с Napster’ом показал уязвимость централизованной структуры и сильно повлиял на дальнейшее развитие P2P приложений. По причинам законности, безопасности, масштабируемости, анонимности и др. все больше и больше современных P2P приложений работают в полностью или частично децентрализованной сетевой структуре или двигаются в этом направлении. Основные P2P сети и протоколы, такие как Edonkey2k, FastTrack, Gnutella, Gnutella2, Overnet, Kad, все использует данную концепцию.

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

Децентрализация означает сетевую структуру без центральных индексных серверов. Это основное направление эволюции P2P. Сегодня существует много сетей, имеющих полностью или частично децентрализованную структуру. Некоторым P2P приложениям, таким как EMule и Edonkey, поддерживающим полностью децентрализованные протоколы типа Kademlia, вообще не нужны никакие сервера. Но на данный момент самая популярная сетевая модель — частично децентрализованная, являющаяся гибридом децентрализованных сетей.

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

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

Шаблоны UDP соединения

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

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

Теперь давайте рассмотрим, как можно идентифицировать популярное P2P приложение Edonkey2000.

Пример UDP трафика Edonkey2000

Ниже показаны выборочные части логов исходящего UDP трафика Edonkey. Фактически, за две минуты мы получили 390 записей. В данном примере адрес отправителя заменен на x, а первая часть адреса получателя на y.

11:24:19.650034 IP x.10810 > y.34.233.22.8613: UDP, length: 25
11:24:19.666047 IP x.2587 > y.138.230.251.4246: UDP, length: 6
11:24:19.666091 IP x.10810 > y.127.115.17.4197: UDP, length: 25
11:24:19.681433 IP x.10810 > y.76.27.4.4175: UDP, length: 25
11:24:19.681473 IP x.2587 > y.28.31.240.4865: UDP, length: 6
11:24:19.696907 IP x.2587 > y.162.178.102.4265: UDP, length: 6
......
11:24:20.946921 IP x.2587 > y.250.47.34.4665: UDP, length: 6
11:24:20.962509 IP x.2587 > y.152.93.254.4665: UDP, length: 6
11:24:20.978275 IP x.2587 > y.28.31.241.5065: UDP, length: 6
11:24:20.993871 IP x.2587 > y.135.32.97.580: UDP, length: 6
11:24:21.009621 IP x.2587 > y.149.102.1.4246: UDP, length: 6
11:24:29.681224 IP x.10810 > y.32.97.189.5312: UDP, length: 4
11:24:29.696903 IP x.10810 > y.10.34.181.7638: UDP, length: 4
11:24:29.716503 IP x.10810 > y.26.234.251.12632: UDP, length: 4
......
11:26:20.291874 IP x.10810 > y.19.149.0.21438: UDP, length: 19

Как мы видим, весь трафик исходит из двух UDP портов: 2587 и 10810 (эти порты были выбраны Edonkey случайным образом и на другом хосте могут отличаться). Целевые адреса разнообразны. Фактически, Edonkey использует один порт для запроса статуса серверов Edonkey, а другой для создания соединений, поисковых запросов и другой работы.

Поиск по шаблону

Анализ работы других децентрализованных P2P приложений, таких как BearShare, Skpye, Kazaa, EMule, Limewire, Shareaza, Xolox, MLDonkey, Gnucleus, Sancho и Morpheus показал аналогичные результаты. Все эти приложения действуют одинаково: они используют один или несколько UDP портов для взаимодействия с внешними хостами. В терминах сетевого уровня этот шаблон может быть сформулирован следующим образом:
За период времени x, с одного IP и фиксированного UDP порта отправляются пакеты на y различных IP с фиксированным или случайным портом.

Опыт показывает, что при x равном 5, y равен 3, и на основе этого можно сделать выводы о наличии P2P трафика. Для получения более точного или грубого результата администраторы могут изменять значения x и y.

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

Автор этой статьи провел тестирование в одном из крупнейших китайских интернет провайдеров. Логи сетевых соединений экспортировались как Netflow-данные и сохранялись в БД MySQL. С помощью небольшого скрипта, обрабатывающего данные, многие хосты были идентифицированы как P2P хосты, и что самое интересное, были обнаружены новые, широко не распространенные, P2P приложения.

Ложные срабатывания

Описанный способ кажется неплохим для обнаружения трафика, но что насчет ложных срабатываний? К счастью, такое поведение трафика редко встречается среди других сетевых приложений. Исключением являются игровые сервера и DNS сервера. Эти типы серверов также генерируют трафик, отсылая большое количество UDP пакетов на различные IP адреса. Но администраторы легко могут определить, является ли хост одним из вышеперечисленных серверов, так как в этом случае он не будет отсылать никаких пакетов с портов отличных от своего функционального порта, что в свою очередь не характерно для P2P приложений.

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

Минусы такого подхода

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

Идентификация P2P приложений

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

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

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

  • Edonkey2000
    Edonkey2000 использует большое количество 6 байтовых UDP пакетов для запроса ‘server status request’. Этот тип пакетов можно наблюдать в основном во время запуска Edonkey. В дополнение, пакеты, содержащие запрос поиска, почти всегда имеют размер 25 байт.

  • BearShare
    Во время запуска BearShare отсылает 28 байтовые UDP пакеты на несколько целевых адресов. Каждый раз, когда BearShare начинает загрузку файла, происходит отправка большого количества 23 байтовых UDP пакетов хостам-владельцам файла.

  • Limewire
    При старте Limewire отправляет много UDP пакетов, размером в 23 и 35 байт. В начале операции загрузки файла этот P2P клиент отсылает большое количество 23 байтовых UDP пакетов.

  • Skype
    При запуске Skype отправляет много 18 байтовых UDP пакетов.

  • Kazaa
    С началом работы Kazaa отправляет 12 байтовые UDP пакеты на различные хосты.

  • EMule
    Когда вы запустите EMule и начнете соединение с сервером, данное приложение оправит большое количество 6 байтовых UDP пакетов с запросами ‘server status request’ и ‘get server info’. Если вы захотите подключиться к сети Kad, Emule в процессе соединения будет отправлять UDP пакеты, размером 27 и 35 байт.

  • Shareaza
    На протяжении всей работы Shareaza периодически отправляет 19 байтовые UDP пакеты.

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

Кроме того, существуют также и другие методы, которые можно применять и комбинировать с техниками, описанными в этой статье, для более эффективного обнаружения P2P пользователей и идентификации P2P приложений. Некоторые P2P приложения подключаются к фиксированным внешним IP адресам для выполнения ряда функций, таких как проверка на наличие обновлений, аутентификация, загрузка рекламы и др. Например, Kazaa во время работы подключается к ssa.Kazaa.com, desktop.Kazaa.com и некоторым другим сайтам. Skype при каждом запуске создает TCP соединение с ui.skype.com .

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

Заключение

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *