Wie kann man die Peer-to-Peer-Kommunikation ohne Portweiterleitung einrichten?

1261
muntasir2000

Mein ISP bietet mir eine lokale statische IP-Adresse. Wie kann ich eine Verbindung zu einem anderen Computer im Internet herstellen, ohne eine öffentliche IP-Adresse zu besitzen? Ich möchte nur eine einfache Anwendung erstellen, die Daten an einen anderen Computer außerhalb meines lokalen Netzwerks senden kann. Ich weiß ein wenig über Portweiterleitung, aber mein ISP kann leider keine Portweiterleitung für mich durchführen. Ist das ohne Portweiterleitung wirklich möglich? Wie? Vielen Dank.

0
Haben Sie überprüft, ob UPnP funktioniert? UPnP ist ein Protokoll zur Portweiterleitung, und wenn Sie Glück haben, funktioniert es auch, wenn der ISP Sie nicht darüber informiert. nitro2k01 vor 10 Jahren 0

1 Antwort auf die Frage

1
Daniel B

Wenn der andere Teilnehmer eine Portweiterleitung einrichten kann (oder kein NAT 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, bei der NAT-Geräte dazu gebracht werden, eine "eingehende" Verbindung mit Hilfe eines universell erreichbaren Drittanbieters zuzulassen.

Aus dem verlinkten Artikel folgt das Grundprinzip:

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

    • SYN von Peer A erreicht NAT-b, SYN von Peer B erreicht NAT-a
    • Abhängig vom Zeitpunkt dieser Ereignisse (wo sich im Netzwerk das SYN-Kreuz befindet) lässt mindestens einer der NAT den eingehenden SYN durch und ordnet ihn dem internen Ziel-Peer zu
  2. Beim Empfang von SYN sendet der Peer eine SYN + ACK zurück und die Verbindung wird hergestellt.