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.
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
Beim Empfang von SYN sendet der Peer eine SYN + ACK zurück und die Verbindung wird hergestellt.