Frage

Gibt es bekannte Verfahren zum Auffinden von Peers ohne einen dedizierten zentralen Server zu verwenden?

dh:. Wenn ich Kollegen, die auf das Internet trennen und wiederherstellen, sondern eine neue IP-Adresse jedes Mal bekommen, und ich mag sie verbinden, ohne einen dedizierten Server einrichten registrieren

Ich dachte an Gleichaltrigen E-Mail-Adresse in regelmäßigen Abständen ein Manifest des verbundenen Peers zu schicken, mit irgendeiner Art von Timecode, negiert die Notwendigkeit für einen dedizierten Server. Dies wäre ein Rückfall, wenn keine der Peers verbunden werden könnte, nachdem alle bisher bekannten Peer-Adressen versuchen. Aber die bestehenden Modelle von Gleichaltrigen zu finden wäre vorzuziehen.

War es hilfreich?

Lösung

Es gibt keinen Weg, um mindestens einen Anfang Peer wissen zu müssen, mehr zu entdecken. Vollständig P2P-Protokolle, wie Gnutella oder Gnutella2 oder die einfachere Overnet (bekannt durch Sturmwurm), sind auf jedem Client-basierten eine Start-up-Liste von ein paar Kollegen haben. Diese können einen Web-basierte automatisierten Tracker zum Beispiel abspringen. Der Kunde wird das gesamte Netz oder Teile davon, indem er andere Peers für mehr Adressen, zum Beispiel entdecken, wenn eine Dateisuche zu delegieren.

Wenn Sie wirklich nicht jede Art von einer zentralen Ressource haben können, das Beste, was Sie tun können, ist die erste Peer durch ausgestrahlte Nachrichten zu finden und schließlich IP-Adresse Scannen. Der erste Ansatz ist gut gemeinte, aber in mindestens 98% der Fälle keine Ergebnisse ergeben. Der spätere Ansatz, natürlich, missbrauchen das Internet, sowie illegal in den meisten Ländern.

Ich würde wirklich überdenken irgendeine Art von einem zentralen Tracker. Es kann etwas so Einfaches wie ein PHP-Skript auf einem Webserver sein (das Gnutella-Netzwerk, heute wird von 10 bis 20 solche Skripte, veranstaltet von Menschen gehalten, die nicht einmal einander kennen). Und das ist sicher leichter als E-Mail (die aufgrund Spam-Filter zumindest würde sowieso nicht funktionieren).

Andere Tipps

In dem begrenzten Fall von Peers innerhalb eines Intranets ist es möglich, eine Broadcast-UDP-Nachricht an einem bekannten Port bat um Kollegen zu senden zu berichten.

Nutzen Sie alle vorhandenen Forum, in dem Daten geschrieben werden. Denken Sie geheimer IRC-Kanal, Daten in Fotos Einbetten und 4chan ?, jede Website zur Foto-Sharing-Websites veröffentlichen, die Ihre Anwendung ohne Captia Anmeldungen usw.

anmelden und post-Daten erlauben würden,

http://chatzilla.hacksrus.com/faq/#password

Ein andere Strategie könnte in digitalen Währungstransaktionen zu eingebetteten Nachrichten sein. Wählen Sie eine billige Münze, die sich um wahrscheinlich zu hängen ist ... Doge oder MOON Münze vielleicht. Baue wallet-Funktionalität in Ihrer Anwendung. so dass Sie Ihre Anwendung Kontrollen Mikrotransaktionen hin und her zwischen den Adressen, die Beiträge schreiben können. Es wäre immer noch ein Bergarbeiter Gebühr, aber das ist nur Bruchteile von ein paar Cent. Auch wenn sie später Hinzufügen von Metadaten zu Transaktionen verbieten, könnten Sie eine Transaktion entsprechen Ihre IP-Adresse in MOON, machen und Eitelkeit Adressen in MOON Münze für Ihre App verwenden. so dass, wenn ein neuer Knoten online geht es weiß, was die blockchain suchen - 2daMOON% bootStr @ pM3. SEND -. 104,003021133 MOON IP = 104.3.21.133 nicht eine teuere Angelegenheit

Der BitcoinQT Client eine Vielzahl von Methoden verwendet Knoten zu finden, könnten einige von ihnen für Sie nützlich sein.

Satoshi Client-Knoten Entdeckung

IRC nicht mehr verwendet wird, könnte aber die meisten einfach zu implementieren sein:

  

Ab Version 0.6.x den Bitcoin-Client nicht mehr verwendet IRC Bootstrapping standardmäßig und ab Version 0.8.2 Unterstützung für IRC Bootstrapping wurde vollständig entfernt. Diese Dokumentation unten ist genau für die meisten früheren Versionen.

     

Zusätzlich zu lernen und seine eigene Adresse teilen, erfuhr der Knoten über andere Knotenadressen über einen IRC-Kanal. Siehe irc.cpp .

     

Nach der seine eigene Adresse zu lernen, ein Knoten kodiert seine eigene Adresse in einen String als Spitzname verwendet werden. Dann trat er zufällig einen IRC-Kanal namens zwischen # bitcoin00 und # bitcoin99. Dann erteilt sie einen Befehl WHO. Der Faden las die Linien, wie sie in dem Kanal auf, und die IP-Adressen der anderen Knoten in dem Kanal dekodiert. Sie tat dies in einer Schleife, für immer, bis der Knoten Abschaltung war.

     

Wenn der Client eine Adresse von IRC entdeckt, stellten sie den Zeitstempel auf der Adresse auf die aktuelle Zeit, aber es verwendete, um eine „Strafe“ von 51 Minuten, das heißt, es sah aus wie es eigentlich fast eine Stunde früher zu sehen war.

Drei Wege, aus der Spitze von meinem Kopf, wenn Sie immer einige zentralen Server gehen zu müssen, um die Verbindung zu starten, wenn Sie mit der Option gehen 3.

  • Zentralserver, die bekannte Liste von Peers unterhält, mit Keep-Alive.
  • Ein oder mehr zentrale Server, die einig gemeinsame Ressource Peers sie, verwenden kann, halten zu entdecken, aber einmal nicht mehr verbunden, um den zentralen Server benötigt, solange der Peer (so etwas wie BitTorrent) verbunden bleibt; Kette können Verbindungen auch spähte.
  • Port / IP-Scans ( stark nicht empfohlen ).

In Ihrem Beispiel, würden Sie noch eine Art zentralen Server, auf das der Peers registriert werden würde; das Protokoll ist der einzige Unterschied.

Alte Frage, aber ich habe über dieses Problem nachgedacht, ich so wird ad meinen 2-Cent. Kurz gesagt, wird ein zentraler Server nicht erforderlich, wenn ein Knoten bewusst mindestens ein gültiges Peer ist. von einem jetzigen Mitglied (z eingeladen, oder Knoten laicht einer anderen Knoten, je nach Anwendung) zu dem Netzwerk hinzugefügt werden, um neue Knoten müssen.

Unter der Annahme, dass:

  • Agenten verfolgen Peers; die Größe dieses Adressbuch und wie Einträge verwaltet werden, von der Art des Systems ab; z.B. wie lange Peers verbunden bleiben, wenn Peers verwenden stabile Adressen

  • Agenten teilen Peer Informationen mit anderen Peers

  • zumindest einige Mittel für relativ lange Zeit in Bezug auf Frequenz Knoten verfügbar bleiben verbindet es Adressbuch Netzwerk zu aktualisieren (oder Knoten haben stabile Adressen)

  • .
  • zusätzlich Adressen-to-Peer, werden Erreichbarkeitsinformationen auch verfolgt (viele Optionen hier je nach System Beispiele: ob Peer eine stabile Adresse, wenn zuletzt gesehen, einige Verfügbarkeit metrisch, Inhalts- / Diensttypinformationen, Adresse gültig-bis zum Zeitpunkt, wenn bekannt)

  • neuen Mittel werden mit mindestens einem gültigen peer initialisiert (muss nicht ein Zentralknoten ist, kann ein beliebiger gültiger Knoten sein)

  • Vertrauensmechanismen sind erforderlich, wenn bösartige Peers eine Möglichkeit,

  • sind

Wenn ein Peer online geht, fragt er die Peers in seiner Peer-Tabelle zu entdecken, die aktiv sind und entfernt möglicherweise abgelaufen dynamische Adressen. Die Knoten tauschen Informationen Peer und können selbst verbunden sein. Dieser Peer-Entdeckung / Austausch eine bestimmte Anzahl von Sprüngen fortsetzen kann oder über Irrfahrt bis Peer Liste, wenn einer ausreichenden Größe und / oder Qualität.

Noch ein paar Details:

  • Knoten verbinden und Peer-Informationen mit der Frequenz, wie oft Knotenadressen ändern Zusammenhang teilen, so Adressbuch werden nicht abgestanden und Knoten wird unterbrochen, weil nichts davon ist ehemalige Kollegen an ihren letzten bekannten Adressen verfügbar sind

  • Die Knoten müssen möglicherweise die Anzahl von Peers begrenzen, die sie akzeptieren, Tendenz zur Zentralisierung um die stabilste Knoten zu vermeiden.

  • Die Knoten sollten über die Peers selektiv sein sie zu halten; das heißt solche, bei denen sie eher zum Austausch von Daten (beispielsweise Gewicht, basierend auf der Geschichte)

  • Knotenverbindungen asymmetrisch sein können oder symmetrisch in Abhängigkeit von der Anwendung

Um es einfach nicht, gibt es keine Möglichkeit, dies ohne eine zentrale Sever zu tun.

Wenn Sie dies müssen Sie einfach ein tun wollen oder mehrere zentrale Server, sei es durch dynamische dns oder nicht. Die Kunden benötigen eine Methode, um herauszufinden, wo sie eine Verbindung herstellen soll, und die einzige wirklich sinnvolle Weg, dies mit Ihrem eigenen Server zu tun, im einfachsten Fall braucht es nur eine IP-Adresse als Antwort zu senden.

Virtual severs kann für rund $ 15 / Monat hat, die IMO ist wesentlich billiger als zu versuchen, jemand anderes Bandbreite zu nutzen oder missbrauchen.


[Bearbeiten].

Um es einfach auszudrücken, gibt es eine andere Art und Weise, wie folgt.

Nach einigen Überlegungen glaube ich, was ich tun würde, ist eine Reihe von Kollegen als Cluster-Controller zu benennen und einen dynamischen DNS-Dienst verwenden, um andere Peers zu erlauben, um den Cluster-Controller zu entdecken.

Wählen Sie einen dynamischen DNS-Provider Ich nenne es myc.ath.cx (I Verwenden Sie http: // www. dyndns.com/ ).

Jeder Peer fähig sein, muss ein Cluster-Controller zu werden. Ein Cluster-Controller wird eine Liste von allen anderen Peers beinhalten verbunden.

Wenn ein Peer gestartet wird es myc.ath.cx sucht und versucht, zu verbinden. Wenn die Verbindung nicht innerhalb einer Frist, sagen wir 30 Sekunden durchgeführt werden, es übernimmt die Registrierung der DNS-Eintrag.

Jeder Peer will andere Peers entdecken, kann einfach myc.ath.cx abfragen und eine Liste zur Verfügung gestellt werden

Alle Peers sind verantwortlich für die regelmäßig die Liste von Peers, falls das Herunterladen sie brauchen Controller gruppieren.

Der Cluster-Controller wird in regelmäßigen Abständen den DNS-Eintrag abfragen - wenn aus seinem IP-Adresse geändert hat, dann weiß er, dass es nicht mehr ist der Cluster-Controller - so wird es die Cluster-Controller in Verbindung, die derzeit den DNS-Eintrag hat und bietet es ist Liste der bekannte Hosts.

Der Cluster-Controller wird in regelmäßigen Abständen Hosts auf der Liste kontaktieren, um sicherzustellen, dass sie noch gültig sind.

Ihre Methode E-Mail senden, einen dedizierten Server nicht verwendet, obwohl; der E-Mail-Server des Peer, um genau zu sein.

Grob gesagt, ich glaube nicht, es möglich ist, ohne irgendeine Art von dedizierten Speicher oder Server mit (die die E-Mail-Ansatz der Fall ist, wenn auch schräg), wenn Sie sind in der Lage, die Verbindung zum Internet zu charakterisieren, die Ihre Kollegen verwenden.

Grundsätzlich, wenn Sie eine Reihe von X Anzahl von Peers haben, die für Y Höhe der Zeit zu verbinden, und sie sind dann aus dem Netz für Z Höhe der Zeit ... im Wesentlichen, können Sie eine Wahrscheinlichkeitsgleichung, wie wahrscheinlich konstruieren es ist, dass der Satz von Peers, die Sie zuletzt noch verfügbar kontaktiert ist; wo die Wahrscheinlichkeit 1 (für einen gegebenen Satz von X, Y und Z oben) nähert, können Sie am ehesten ein Peer-to-Peer-Netzwerk unterstützen, ohne Speicherung verwendet wird.

Möglicherweise mehr im Geist; statt mit einem „dedicated zentralen Server“, verwenden Sie einfach online kostenlos Dienst eine Peer-Liste angeben. Stellen Sie eine Yahoo-Gruppe, oder so ähnlich; Kunden können automatisch suchen und eine Peer-Adresse erhalten, aus denen eine Reihe von Peers abzufragen; der Client kann mit der Authentifizierung der Gruppe zu erstellen codiert werden, und hinterlassen kann dessen IP-Adresse in regelmäßigen Abständen, so daß andere die Gruppe von bekannten aktiven Peers anfordern können.

Wenn Sie wirklich schwierig bekommen möchten, können Sie im Grunde mit Steganographie-Methoden beginnen zu Peer-Ortsinformationen zu verbergen. D. h erhält eine Google-Suche nach „blah“; finden Sie die erste Seite in den Ergebnissen aufgelistet, die einen ungeschützten (keine CAPTCHA) message board hat; findet die dritte (oder was auch immer) Post, die mit (oder was auch immer) beginnt „Unzweifelhaft“, und die Kopfzeile der ersten Nachricht dort finden, und es gibt die IP-Adresse eines Peer. Wenn das nicht funktioniert, wird die Liste der Suchbegriffe zum nächsten gehen.

Aber das ist hinterhältig. : -)

Könnten Sie wieder verwenden ein vorhandenen dedizierten Server zum Zweck?

ich insbesondere denke jeden des Peers mit einem dynamischen DNS-Registrierung, aber wenn Sie sind bereit, ein bisschen hässlicher zu bekommen, Zugang zu einem bekannten Hotmail-Konto teilen oder Google Doc oder dergleichen.

Sie können entweder ein zentrales Verzeichnis oder irgendeine Art von Rundfunkprotokoll für Service Discovery verwenden. Unter der Annahme, dass Sie sie von Google indiziert werden könnten, könnten Sie ein System vorstellen, wobei jeder Peer betreibt eine Website mit einigen einzigartigen, seltenen Worten auf einer bestimmten Seite. Sie könnten dann Google-Suchergebnisse zu diesen Worten basiert verwenden, um potenziellen Peers zu identifizieren. Dies würde im Wesentlichen ein (laut und langsam) Internet übertragen.

Wenn die Seitenstruktur ein gut bekanntes Muster oder enthaltenen identifizierbare Verbindungsinformationen für diese Peer ist, wäre es leicht, sie in den Suchergebnissen zu unterscheiden. Unter Verwendung eines solchen öffentlichen Verzeichnis lässt Sie auf kompromittierten Knoten im Netzwerk öffnen, das gebildet wird, aber das ist so ziemlich gilt für jedes P2P-Netzwerk einige Sicherheitsmechanismen fehlen.

Getting die Web-Sites gekrochen und stark von Google (oder einer anderen Suchmaschine) für Ihren obskuren Satz von Suchbegriffen wäre der Trick rangieren. Ich kann von ein paar Möglichkeiten denken, aber sie sind nicht diejenigen, die ich verwenden würde. Für einen legitimen Service, würde ich lieber das Geld ausgeben, oder eine kostenlose Website finden, die als Verzeichnis funktionieren könnten.

Was ist ein anderes P2P-System, das speziell Online-Peers von anderen P2P-Systemen verfolgen gebaut?

Dann reduzieren wir das Problem des Peers für jedes neues P2P-System zu finden, einfach zu finden Peers für das ‚Haupt‘ P2P-System, mit dem Ihnen die Adressen von Online-Peers für das System Sie bei der Verwendung interessiert geben ...

Dies ist eine typische Verwendung einer verteilten Hash-Tabelle Algorithmus. Ich würde vorschlagen, um so etwas wie Gebäck suchen. Es verwendet ein Overlay-Netzwerk (Application Layer-Netzwerk) auf den anderen Schichten.

Jeder Knoten hat eine GUID, die der Übertragung von Anfragen über das Peer-Netzwerk verwendet wird.

Wenn Sie nach einem bereits etablierten zentralen Server loooking sieht dann den Metaserver Eintrag auf Seite hier:
http://martindevans.appspot.com/
Sie können Peers dort anmelden und dann andere Peers kann sie finden. Natürlich ist dies ein zentraler Server, aber es erfordert keine Wartung auf Ihrer Seite.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top