Wie kann eine Peer-to-Peer-Kommunikation ohne Portweiterleitung hergestellt werden?

0

Mein ISP stellt mir eine lokale statische IP-Adresse zur Verfügung. Wie kann ich eine Verbindung mit einem anderen Computer im Internet herstellen, ohne eine öffentliche IP-Adresse zu haben? Ich möchte nur eine einfache Anwendung erstellen, mit der Daten an einen anderen Computer außerhalb meines lokalen Netzwerks gesendet werden können. Ich weiß ein wenig über Portweiterleitung Bescheid, aber leider kann mein ISP keine Portweiterleitung für mich durchführen. Ist das wirklich ohne Portweiterleitung möglich? Wie? Vielen Dank.

muntasir2000
quelle
Haben Sie überprüft, ob UPnP funktioniert? UPnP ist ein Protokoll für die Portweiterleitung, und wenn Sie Glück haben, funktioniert es auch dann, wenn der ISP Ihnen nichts davon mitteilt.
Nitro2k01

Antworten:

1

Wenn der andere Teilnehmer die Portweiterleitung einrichten kann (oder NAT nicht verwendet), sind Sie fertig. Eine TCP-Verbindung ist immer duplexfähig.

Wenn dies nicht möglich ist, können Sie auf " Hole Punching " zurückgreifen , eine Technik, mit der NAT-Geräte mithilfe eines universell erreichbaren Drittanbieters dazu gebracht werden, eine "eingehende" Verbindung zuzulassen.

Aus dem verlinkten Artikel entnommen ist das Grundprinzip:

    • Peer A sendet eine SYN an Peer B
    • Peer B sendet eine SYN an Peer A
    • Wenn NAT-a die ausgehende SYN von Peer A empfängt, erstellt es eine Zuordnung in seiner Zustandsmaschine.
    • Wenn NAT-b die ausgehende SYN von Peer B empfängt, erstellt es eine Zuordnung in seiner Zustandsmaschine.
  1. Beide SYN kreuzen sich irgendwo entlang des Netzwerkpfads.

    • SYN von Peer A erreicht NAT-b, SYN von Peer B erreicht NAT-a
    • Abhängig vom Zeitpunkt dieser Ereignisse (bei denen sich das SYN im Netzwerk kreuzt) lässt mindestens eines der NAT das eingehende SYN durch und ordnet es dem internen Ziel-Peer zu
  2. Nach Erhalt der SYN sendet der Peer eine SYN + ACK zurück und die Verbindung wird hergestellt.

Daniel B
quelle