Peer2Peer auch ohne Wifi, Bluetooth und Server?

R

Reth

Neues Mitglied
2
Hallo zusammen,

kurze Frage: Kann man unter Android eine Peer2Peer-Kommunikation ähnlich wie bei Messengern auch ohne Wifi, Bluetooth oder einen zwischengeschalteten Server, der die zentrale Schaltstelle darstellt implementieren?
Sprich: Wenn man Informationen (keine SMS) mit einem Kontakt austauschen will reicht dessen Handynummer?
Bei einem kurzen Blick in die Pakete der Android-API konnte ich ein peer2peer-Paket nur beim wifi-Tree finden. Zudem hab ich bei bestehenden Diensten dazu immer gelesen, dass man sich registrieren muss und Server dieser Dienste (oder Cloud-Services) verwendet werden?

Geht denn so etwas nicht auch direkt?

Danke schon mal für eure Antworten!

Ciao
 
Hallo Reth ,

da bliebe nur NFC übrig
 
Hi swa00,

danke Dir. Hm, ist auch nicht das, was ich bräuchte. Bekommt man denn ohne "Backend"-Infrastruktur keine Kommunikation zwischen den Geräten hin, wenn man "nur" die Nummer des Kontaktes kennt?
 
Hallo Reith,

nun, du bist grundsätzlich auf die Peripherie des Devices angewiesen ...

Gegenfrage : was willst du denn noch "hervorzaubern" ausser ggf. USB Host ?
 
Vielleicht habe ich mich falsch ausgedrückt oder sehe das Gane zu naiv.
Ich möchte gern Daten von einem Handy auf ein anderes übertragen "nur" mit der Hilfe der Infrastruktur der Mobilfunkanbieter (ähnlich SMS) - also ohne eigene Server oder Clouds verwenden zu müssen).
 
Du wirst zwei Probleme haben:
1. das Discovery. Wie sollen die Geräte voneinander wissen, geschweige denn sich eindeutig identifizieren? Da fällt einem entweder das schon gesagt ein (NFC, SMS) oder halt eine zentrale Registry (möchtest du nicht)
2. Die Übertragung: Im mobilen Netz hat längst nicht mehr jeder eine öffentliche IP. Das ist (zumindest bis flächendeckendes IPv6 verfügbar) alles geNATet. Damit sind direkte Verbindungen schon wieder schwierig bis unmöglich wenn beide Seiten geNATet sind.

Ich verstehe aber immer noch nicht wie genau du dir das vorgestellt hast, die Mobilfunkanbieter machen für dich ja nicht extra einen neuen Kanal "ähnlich SMS" auf...
 
Hm, wie gesagt - gehe das Ganze ziemlich naiv an.

Discovery: Gegenseitig - ich kann nur mit in meinem Gerät bekannten Handynummern Kontakt aufnehmen. Wie lösen das denn Diensteanbieter mit eigener Infrastruktur wie Threema, Whatsapp usw.? Dort kann man ja auch nur in dieser Weise miteinander in Kontakt treten - aber über deren Infrastruktur. Evtl. verwenden diese Anbieter noch weitere Daten aus dem Endgerät als nur die Handynummer (man sieht ja, welche Berechtigungen sich Whatsapp geben lässt).
Das mit öffentlicher IP ist ja überall so. Nur da sehe ich das Problem nicht: Wie lösen denn dies andere Anbieter für Dienste, Programme oder Spiele die netzwerktauglich sind?
 
Hallo Reth,

Messenger, EMail und Ähnliches haben keine eigene Infrastruktur , sondern arbeiten mit dem FCM System .
Die Zuweisung erfolgt über die Registrierung des Devices über die Google-Server

Dazu kannst du dir die API einmal anschauen

Und Multiplayer : Auch hier befindet sich in der Mitte i.d.R. ein eigener Fork-Server-Daemon -
meist auf UDP Basis .
 
Zuletzt bearbeitet:
Hi nochmal,

also Threema hat nach eigenen Angaben ihre Server in der Schweiz und eine eigene Infrastruktur. SimsMe hat das Ganze bei der dt. Post in D.
Aber dessen ungeachtet. Wie leisten denn diese Infrastrukturen die Kontaktaufnahme und Datenübertragung? Gerade, wenn nicht im "Pull-ähnlichen" Modus das Endgerät permanent anfragt, ob Informationen vorliegen. Bei Threema und SimsMe kann ich ja Daten an mein Gegenüber absenden und dieses erhält sie dann in der entsprechenden App. Die Verbindungsaufnahme und Übertragung der Information muss ja auch von der Threema-/SimsMe-Infrastruktur zu meinem Gegenüber erfolgen.
 
Hallo Reith ,

du stehst komplett auf dem Schlauch.

Der Übertragungs-Layer für Push Nachrichten ist FCM.
Poll sollte man nicht anwenden, da der Datenverbrauch zu hoch wäre.

Innerhalb der FCM Message kannst du die Daten unterbringen, egal ob offen oder Verschlüsselt.
Da FCM i.d.R. nicht nur über die Google Server gemacht wird, sondern auch wiederum über einen
eigenen Server, findet z.b. bei Threema die Verschlüsselung des Inhaltes auf deren Servern statt.

Um Deine Frage abschliessend zu beantworten : Es gibt keine Peer2Peer im eigenlichen Sinne
im mobilen Bereich ( ausser hardware direkt Verbindung ( BT,WIFI,NFC, USB-Host)

Sämtlicher Austausch von Daten findet im mobilen Bereich über Server statt.
Und damit das Device benachrichtigt werden kann , dass was "Neues" vorliegt , benutzt man Push-FCM

Für dein Vorhaben baust du dir also einen Server auf und dieser empfängt die Nachricht des Sendenden.
Der Server benachrichtigt das Empfänger-Device über FCM mit dem was es bekommen soll
 
Bei Messengern sind mehrere Dinge involviert

a) "Discovery": Damit ich sehe wer Threema benutzt und ich mitteilen kann dass ich Threema nutze sage ich erst mal dem Threema Server mit meiner Telefonnummer Bescheid "Hallo hier bin ich". Der Threema Server speichert die dann. Danach schicke ich alle meine Telefonnummern zum Threema Server (ob Klartext oder gehasht spielt ja erstmal keine Rolle) und der Threema Server sagt mir dann pro Nummer "kenn ich, hier sind die Metadaten des Kontakts" oder "kenn ich nicht".
b) Message schreiben: Wenn ich jemandem eine Nachricht schreibe geht die an den Threema Server (ob verschlüsselt oder unverschlüsselt is ja erstmal egal) mit der Zusatzinfo "an diesen Kontakt bitte" (ob mit Telefonnummer oder mit der Threema ID spielt auch keine Rolle)
c) Nachricht abholen/Benachrichtigt werden: Zum aktiven Benachrichtigen des Users ohne dass dieser in der App ist wird, wie schon erwähnt, meistens Google FCM verwendet. Das sagt dem Device Bescheid "Hallo hier ist was". Dann kann das Device selbst nochmal den Threema Server fragen was da genau ist (Textnachrichten können schon in der FCM Message stehen, Bilder werden nachgeladen).

Da ist also sogar sehr viel Server Kommunikation involviert. Ohne wäre das nicht möglich. (Fun-Fact: Ich habe mal mit einem Kollegen das Konzept eines serverlosen Messengers durchgesprochen, bei dem die Devices DIREKT per FCM kommunizieren. Fazit war, dass es auf Grund von Sicherheit und Discovery nicht funktioniert)
[doublepost=1513112840,1513112734][/doublepost]
swa00 schrieb:
, findet z.b. bei Threema die Verschlüsselung des Inhaltes auf deren Servern statt.

Ich bin mir ziemlich sicher dass Threema Ende zu Ende verschlüsselt. Also das Device verschlüsselt, schickt die verschlüsselte Nachricht zum Server (mit der unverschlüsselten Information an wen das gerichtet ist) und der Server leitet es weiter. Der andere Client entschlüsselt dann. (Vorher muss natürlich über den Threema Server ein Schlüsselaustausch stattfinden)
 
  • Danke
Reaktionen: swa00
@deek , jetzt hat er es zweimal - ich hoffe das ist bei ihm angekommen :)


Ich bin mir ziemlich sicher dass Threema Ende zu Ende verschlüsselt. Also das Device verschlüsselt, schickt die verschlüsselte Nachricht zum Server (mit der unverschlüsselten Information an wen das gerichtet ist) und der Server leitet es weiter. Der andere Client entschlüsselt dann. (Vorher muss natürlich über den Threema Server ein Schlüsselaustausch stattfinden)

Sehr treffend !!!
 
  • Danke
Reaktionen: deek
Ja, ist beides angekommen! :winki: Danke für die Erläuterungen.

Hab mal ein bisschen weiter gestöbert. Es gibt wohl schon Möglichkeiten, allerdings dann mit kompletten eigenen mobilen Servern - siehe hier: GoldBug - Encrypted Communications - Browse /android at SourceForge.net
Hab mal durch das PDF geblättert, aber mich nicht in die Details begeben. Allerdings wird für die Offline-Verfügbarkeit auch eine weitere Lokation genutzt (
defines a virtual location, a separate device where messages are to be stored for later retrieval
).
 
Setze dir einen einfachen PHP server auf, integriere dort FCM, verwalte die User mittels MySQL
und bette FCM in die APP ein.

Und vorher machst du dir dann einen Developer-Account auf Google und eröffnest ein FCM Konto

Und schon ist der Käse gegessen :)
 

Ähnliche Themen

wernho
Antworten
11
Aufrufe
585
wernho
wernho
S
Antworten
4
Aufrufe
3.980
mblaster4711
mblaster4711
Jansenwilson
Antworten
1
Aufrufe
735
swa00
swa00
Zurück
Oben Unten