Zum Inhalt springen

Prinzip Filesharing-Programme/p2p


Empfohlene Beiträge

Geschrieben

Hallo,

ich hab mal eine ganz allgemeine Frage bzgl. p2p-Programmen!

Ein typisches p2p Programm wartet ja auf einem bestimmten Port auf eingehende Verbindungen.

Soweit ist das auch alles logisch, die Gegenstelle benötigt nur IP-Adresse und Port um eine Verbindung aufzubauen.

Jetzt gibt es aber auch noch Spezialfälle die mir einfach nich so ganz klar sind: wenn sich z.B. 3 Rechner über ein internes Netz eine Internetverbindung teilen, so haben auch alle 3 Rechner nach aussen die selbe IP.

Wenn von einem der Rechner eine Webseite abgerufen wird ist mir noch klar warum das funktioniert, schliesslich baut einer der 3 Rechner die Verbindung auf und somit ist klar wie geroutet werden muss.

Wie aber funktioniert das bei einem p2p-Programm? Denn da werden ja von aussen Verbindungen zu den Rechnern aufgebaut. Ich habe es selber z.B. mal mit LimeWire ausprobiert, kann man problemlos auf mehreren Rechnern laufen lassen, auch dann wenn alle den gleichen Port abhören.

Mir ist allerdings echt schleierhaft wie das funktioniert!! Denn nach aussen hin sehen doch erstmal alle 3 Rechner gleich aus, oder nicht?

Danke für Eure Hilfe.

derflix

Geschrieben

Hallo!

Also wenn ich dich richtig verstanden habe, hat das alles nichts mit p2p zu tun sondern du sprichst ueber MASQ bzw. NAT. (-> Adressueberstezung) :)

Beispiel:


Box A

192.168.1.101 ----------|

                        |

Box B                   |        Box M (Masquerading Box)

192.168.1.102 ----------|::::::::: 192.168.1.1 ::::::::::::> Internet 11.22.33.44

                        |        PPP/ISDN/DSL

Box C                   |

192.168.1.103 ----------|

Die Box M dient als Router ins I-Net + Masquerading. Wie fuer die Clients A - C eingezeichnet werden IP-Addr. interne IPs (RFC-1918)verwendet. Box M dient als Gateway dieser Clients. Soweit so gut.

Da die IPs der Clients nur innerhalb des internen Netzwerkes verwendet werden duerfen muessen diese uebersetzt werden bzw umgewandelt werden. Eine Moeglichkeit dazu bietet das Masq.-Prinzip.

Wenn nun ein Paket von den Clients A-C kommt, aendert das Masq. auf Box M die IP-Adresse und den Port im TCP/IP-Paket auf die ausgehende Adresse. Und traegt die Aenderung, Paket, ... in eine interne Tabelle. Kommt nun eine Antwort von aussen, wird die Tabelle nach einem entsprechenden Eintrag geprueft und die IP-Adresse und Port wider in die des intenen Netzes gewandelt.

Das nur mal so grob angerissen. :D Ich kann mir durchaus vorstellen, das es dazu genuegend Material im Internet gibt. ;)

smokie

Geschrieben

Heir eine Erklärung dazu ich ich sehr gut und einfach zu verstehen fand... (weiss nicht mehr genau wo ich sie gefunden hab aber hier mal meine Version;))...

das Masq-Gateway ist sowas wie die Poststelle in einer Firma, die einzelnen Rechner dahinter sowas wie die einzelnen abteilungen. Wenn nun Abt. A einen Brief nach draussen schicken will landet dieser zuerst bei der Poststelle. Diese entfertn von Brief die Rücksendeadresse und die Briefmarke und ersetzt sie durch die Adresse der Poststelle und eine andere Marke, merkt sich aber welche Marke er da drauf hat und die urspr. Marke und Abt. Wenn eine Antwort kommt wieder genau dasselbe, nur diesmal erkennt die Poststelle anhand der Marke wohin das ganze soll und ersetzt die Adresse und Marke durch die Ursprünglichen.

Adresse ist die IP-Adresse und die Marke der jeweilige Port. Ich denke das Prinziip ist damit ganz gut erklärt...

Geschrieben

Danke schonmal für Eure Erklärungen. Nur hilft mir das nicht wirklich weiter. Denn in meinem Fall ist es ja so, dass ein Rechner hinter dem Router auf eine Verbindung wartet und diese nicht selber aufbaut!

Wenn der Rechner selber eine Verbindung aufbaut ist schon klar dass die Antwort ankommt, der Router weiss ja wer was angefordert hat. Wenn aber eine Verbindung "ankommt" von einem Rechner zu dem vorher kein Kontakt bestanden hat funktioniert das ganze leider nicht mehr.

Nur irgendwie muss das bei den p2p-Programmen ja auch funktionieren. Denn wenn ich auf meinem Rechner z.B. LimeWire starte, connecten mich ja andere User, und nicht umgekehrt. Und die Pakete der anderen User müssen ja irgendwie den Weg zu meinem Rechner finden.

Hat jemand irgend noch irgend eine Idee?

Geschrieben

Ich denke mal (bei LimeWire weiss ich es nciht genau, hab ich noch nicht probiert) solche Programme funktionieren vorallem mit Portforwarding. D.h. bestimmte Ports sind für einen Computer hinter dem Router reserviert und alles an diesem Port wird zu diesem Computer geleitet. Da viele P2P Programme ja über einen festen Port funktionieren müssen diese bei 2 Rechnern hinter einem Gateway eben auch 2 unterschiedliche Ports sein.

Wenn es nicht feste Ports sind, wird ja bei jedem Start nach freien Ports gesucht. Mit den gefundenen Meldet sich das Programm dann nach draussen, alle anfragen kommen dann über diesen Port und das Prinzip von oben funktioniert wieder. Masquerading funktioniert ja nicht nur 1:1 (also jede Anfrage nach draussen wird mit genau 1 antwort erwiedert). Eine anfrage nach einem Download erhält ja viel mehr Antwortpackete zurück. Der Router merkt sich also den Port und das Ziel.

Geschrieben
Original geschrieben von derflix

(...)Nur irgendwie muss das bei den p2p-Programmen ja auch funktionieren. Denn wenn ich auf meinem Rechner z.B. LimeWire starte, connecten mich ja andere User, und nicht umgekehrt. Und die Pakete der anderen User müssen ja irgendwie den Weg zu meinem Rechner finden.(...)

Das oben erklärte Prinzip funktioniert trotzdem, weil du mit dem Start eines jeden p2p-Programms schon eine Verbindung aufbaust. Das heisst, deine Daten sind dem Server bekannt, is ja klar, ohne Verbindung wär ja dein Rechner im Netz unsichtbar.

Geschrieben

Hallo!

Das klingt nach einem einfachen aber wirkungsvollem Mechanismus. Nur leider scheint es so nicht zu funktionieren :-(

Ich hab ein kleines Programm geschrieben welches von einem Rechner A zu einem Rechner C eine Verbindung aufbaut, Router ist in dem Fall Rechner B.

Die Verbindung wird über den lokalen Port aufgebaut, an dem später Daten empfangen werden sollen. Anschliessend wird die Verbindung getrennt und das Programm wartet an dem angegebenen Port auf eingehende Verbindung.

Dann hab ich versucht von Rechner C aus eine Verbindung zu Rechner A aufzubauen; funktioniert aber leider nicht.

Gruß

derflix

Geschrieben
Original geschrieben von derflix

Hallo!

Das klingt nach einem einfachen aber wirkungsvollem Mechanismus. Nur leider scheint es so nicht zu funktionieren :-(

Ich hab ein kleines Programm geschrieben welches von einem Rechner A zu einem Rechner C eine Verbindung aufbaut, Router ist in dem Fall Rechner B.

Die Verbindung wird über den lokalen Port aufgebaut, an dem später Daten empfangen werden sollen. Anschliessend wird die Verbindung getrennt und das Programm wartet an dem angegebenen Port auf eingehende Verbindung.

Dann hab ich versucht von Rechner C aus eine Verbindung zu Rechner A aufzubauen; funktioniert aber leider nicht.

Gruß

derflix

Kann auch nicht funktionieren, da dazu das Portforwarding auf dem Router eingeschaltet sein muesste!

Nic

Geschrieben

So sehe ich das ja eigentlich auch! Aber trotzdem funktioniert es ja bei den ganzen Gnutella-Clients etc. Der "Router" ist in diesem Fall auch einfach nur eine "Gemeinsam genutzte Internet-Verbindung" auf einem Windows XP pro Rechner der per Masq die IP-Adressen umschreibt.

Viel Konfigurationsmöglichkeiten hat man da sowieso nicht.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...