Ich versuche mit einigen P2P-Netzwerk zu experimentieren. Nach einigen Nachforschungen ist eines der größten Hindernisse, die ich gelernt habe, "Was ist, wenn ein Client hinter einer NAT/Firewall ist", später entdeckte ich über Lochstanzen, aber es ist nicht immer garantiert zu arbeiten.
Soweit ein Ich verstehe, verstehe ich nicht, warum es scheitern könnte, das ist, was ich bisher weiß: Was ist so schwer an P2P Lochung?
Basierend auf dem Diagramm oben, das ist, wie ich verstehe, wie eine erfolgreiche Verbindung kann festgestellt werden.
- Alice schließt sich das Netzwerk (1) durch Verbindung mit einem Verzeichnis-Server erzeugt wird. Wenn das passiert, erstellt Alice NAT eine Zuordnung von ihrer öffentlichen IP zu ihrer lokalen IP.
- Der Verzeichnisserver empfängt die Verbindung und speichert Alices öffentliche
ip:port
im Verzeichnis - Bob macht die gleiche (2), schließt sie das Netzwerk und veröffentlicht seine
ip:port
im Verzeichnis - Alice möchte mit bob kommunizieren. Also schaut sie Bob's
ip:port
aus dem Verzeichnis. (3) - Alice sendet Daten über Bobs
ip:port
, die sie vom Server erhielt. (5) - Seit Bob auch eine Zuordnung hat von
ip:port
zu seinem lokalen istip:port
, leitet der NAT einfach alle Daten auf Bob öffentlicheip:port
seinen Computer empfangen. - Gleiche Werke für Alice
Ich hoffe, dass ich in meiner Erklärung klar war, was ich verstehe. Meine Frage ist, was ist daran so schwer oder unzuverlässig? ich muss eindeutig etwas vermissen. Kannst du mir erklären, was es ist?
danke für deine antwort! Nur eine Frage zu: 'Ein Problem ist, dass die NAT-Mappings in Alice 'NAT-Server eine Zeitüberschreitung haben. Könntest du das nicht lösen, indem der Verzeichnisserver Alice ständig anpingt? Wenn nicht, wie umgehen typische p2p-Clients dieses Problem? – Krimson
1) Es könnte funktionieren. 2) Ich weiß es nicht. Ich habe nie versucht, den Quellcode eines NAT-fähigen P2P-Systems zu lesen. (Aber Sie könnten.) 3) Diese ganze Frage ist Off-Topic für StackOverflow. –