Wifi p2p что это

Обновлено: 06.07.2024

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

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

Как работает P2P-камера

При подключении P2P-камеры к интернету (через роутер или 3G-соединение) камера автоматически посылает запрос на удаленный сервер, который идентифицирует камеру по её уникальному ID-номеру. Для доступа на камеру и просмотра видео пользователю нужно установить на устройство (компьютер или мобильные устройства) специальное приложение от разработчика IP-камеры. В данном приложении пользователь вводит ID-номер камеры (или фотографирует QR-код камеры, чтобы не вводить код вручную), после чего может просматривать видео с камеры в онлайн, просматривать архив видео с SD-карты, управлять поворотным устройством и использовать другие функции. Сервер в данном случае выступает в качестве посредника, связывающего IP-камеру и устройство пользователя напрямую.

Зачем нужна технология P2P

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

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

Поэтому рекомендую проверить настройки видеорегистратора/камеры, и если вы не используете P2P сервис, то обязательно его отключите. Ведь может у вас логин и пароль к видеорегистратору/камере admin/admin. А если всё таки используете, то обязательно сделайте сложный пароль. Хотя сложный пароль должен быть в любом случае.

Ответ на вопрос что же тогда делать, и если у вас динамический ip адрес вы найдете тут.

image

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

Было решено создать библиотеку для соединения Андроид-устройств по средством Wi-Fi Direct технологии и передачи данных между ними (Wi-Fi Peer-to-Peer соединение осуществляется как раз с помощью технологии Wi-Fi Direct).

Почему Wi-Fi Direct?

После одобрения идеи о локальном соединении устройств передо мной встал вопрос: С помощью какой технологии собираюсь я это осуществить? Рассматривались следующие варианты:

  • Bluetooth
  • Wi-Fi Hotspot
  • Wi-Fi Direct или Wi-Fi Peer-to-Peer

Bluetooth


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

Wi-Fi Hotspot

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

Однако с помощью Wi-Fi Hotspot можно добиться максимальной скорости передачи данных (приложения Portal, SHAREit).

Wi-Fi Direct или Wi-Fi Peer-to-Peer

Данный подход решает все вышеупомянутые проблемы:

Wi-Fi Aware

Начнем с проблем

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

В сэмпле продемонстрирован пример чата двух устройств, которые нашли друг друга в списке, отображающем рядом находящиеся Wi-Fi Direct устройства с запущенным приложением чата. При выборе партнера непосредственно открывается ChatActivity.

Очень важным моментом является поиск собеседников: в списке не будут отображаться такие Wi-Fi Direct устройства, как телевизор или какая-нибудь гарнитура. Отображаются только устройства с запущенным Chat-приложением.

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

Что было реализовано для демонстрации работоспособности библиотеки

Приложение представляет следующий функционал:

  1. выбор роли в процессе работы с приложением (для примера были созданы «Мафия» и «Мирный житель»)
  2. создание группы
  3. присоединение к существующей группе
  4. общение между устройствами (при нажатии на кнопку меняется ее цвет как у инициатора, так и у всех остальных, соответствующих текущей роли (либо broadcast))
  • стартовый экран с выбором действия и роли
  • список присоединившихся устройств к текущему владельцу группы
  • список активных групп, к которым можно присоединиться
  • сеттинги приложения (логин устройства, название группы, пароль для вхождения в группу)
  • «игровой» экран

Основная концепция работы библиотеки

Логика построена на основе архитектуры клиент-сервер. Сервером является владелец группы, клиентами — подсоединившиеся пользователи.

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

Компоненты библиотеки

  • WifiDirectManager — основной класс библиотеки; отвечает за создание группы, поиск устройств, присоединение устройства в группу или приглашение в нее, отправка пакета данных всем участникам группы
  • WifiP2pDeviceObservable — реализация паттерна Observable; при нахождении Wi-Fi Direct устройства оповещает наблюдателя
  • WifiDirectBroadcastReceiver занимается оповещением приложения об изменениях Wi-Fi Direct соединения (например: удачно ли прошло соединение с другим устройством), состояния Wi-Fi на устройстве (например отключение должно последовать за собой предупреждение пользователя о невозможном продолжении работы приложения)
  • MessageShaper отвечает за сериализацию/десериализацию передаваемых данных; при десериализации на выходе получаем объект типа android.os.Message (obj — объект, what — для каких целей объект (например: поменять цвет кнопки), arg1 — тип доступа (для мафии, мирных жителей, либо broadcast))
  • Serializer непосредственно занимается сериализацией/десериализацией объектов
  • Status — характеризует каждое устройство как владельца группы, либо клиента
  • ChatNeedle хранит в себе сокет, по которому связаны два устройства между собой; обрабатывает input/output стримы данных; у клиента есть лишь один ChatNeedle — с владельцем, у владельца же их кол-во равняется кол-ву клиентов
  • Member — класс, описывающий участника группы (не себя самого), для дальнейшего использования в игровом сценарии; хранит в себе ChatNeedle для соединения с этим участником группы
  • MemberList — класс, хранящий в себе все устройства, с которыми связан наш девайс; в случае с владельцем группы — все клиенты, в случае клиента — владелец
  • GroupOwnerSocketHandler применяется владельцем группы для открытия определенного кол-ва сокетов, к которым подсоединяются клиенты
  • ClientSocketHandler используется для установления соединения клиента с владельцем группы

Самая сложная проблема во время разработки

Когда проект дошел до стадии тестирования мультиплеера (> 2 устройств), тут-то и началась жара. Два устройства как и прежде у меня соединялись без проблем (для чего впрочем и создан Wi-Fi Peer-to-Peer), однако при подсоединении третьего звена почти всегда происходил треш. При нажатии на кнопку у «владельца» (позже поймете, почему в кавычках) цвет менялся только у того клиента, с которым «владелец» последний раз общался.

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

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

При соединении двух устройств прописывается специальный config, который в себе содержит:

  • адрес устройства, к которому мы хотим присоединиться
  • wps.setup позволяет установить, как мы будем соединяться: с паролем или просто по нажатию кнопки
  • groupOwnerIntent — вот он (споймал!), тот, кто решил мою проблему; целочисленное поле, значение которого варьируется от 0 до 15 (0 — хотим быть клиентом, 15 — хотим быть владельцем); по умолчанию -1, что дает системе право самой выбрать роль в этой связи

Status'ом (enum) выше является текущее положение устройства, если он создатель группы — GroupOwner, иначе — Client.

Необходимые доработки

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

Защита. Для входа в определенную группу было бы неплохо реализовать авторизацию.

Заключение

Не думаю, что я реализовал что-то новое или революционное, однако данный проект послужил хорошим примером неординарного использования Wi-Fi Peer-to-Peer соединения. Мною была успешно построена сеть между устройствами с помощью Wi-Fi Direct, что позволило беспрепятственно общаться между ними.

Это моя первая статья, поэтому судить строго. Спасибо за внимание.

→ Ссылка на GitHub
(модуль wifidirect может быть без проблем перенесен в любой андроид-проект)

Пиринговая или peer-to-peer (P2P) сеть - это сеть взаимосвязанных компьютеров (2х или более) с единой серверной системой, организованной таким путем, что все участники могут делиться ресурсами друг с другом. Здесь слово peer означает один компьютер, представленный в сети. В общем эта система относится к системе NODES (англ. "узлы"). Начало использования сетей P2P в бизнесе берет с начала 1980-х.

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

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

Где могут использоваться P2P сети?

  • Индустрия блокчейн
  • Банковский сектор
  • Денежные рынки
  • Бизнес решения
  • Транспортные сервисы
  • Сервисы такси и кар-шеринга
  • Электронная коммерция
  • Образование
  • Биржи труда
  • Комбинация сетей P2P и блокчейна

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

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


Если вы регулярно пользуетесь Интернетом, маловероятно, что вы не слышали о терминах peer-to-peer или аббревиатуре P2P. Было ли это упомянуто в новостной статье, на телевидении или в разговоре с другом, который сказал вам, что он только что загрузил последний эпизод «Игры престолов», вы, возможно, наткнулись на этот термин. Если вы хотите знать, что такое peer-to-peer, и для чего он используется, вы должны прочитать эту статью.

Что такое P2P или Peer-to-Peer?

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

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

Что делают сети P2P (peer-to-peer)?

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


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


Почему одноранговые сети полезны?

Сети P2P имеют несколько характеристик, которые делают их нужными:

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

Зачем нам нужны одноранговые сети? Правовые прецеденты для P2P

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

История сетей P2P

Следующей большой вещью в истории P2P был 1999 год, когда Napster ожил. Napster был файлообменным программным обеспечением, которое люди использовали для распространения и загрузки музыки. Музыка, распространенная на Napster, обычно защищалась авторским правом и, таким образом, была незаконной для распространения. Однако это не помешало людям получить его. Хотя Napster был тем, кто получил P2P в мейнстриме, Napster в конечном итоге потерпел неудачу и был закрыт властями из-за всего содержания, которое было незаконно распространено на нем. В настоящее время P2P остается одной из самых популярных технологий для обмена файлами через Интернет, как законно, так и незаконно.


Незаконное использование одноранговых сетей

Вывод

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

Читайте также: