Dieser Artikel ist eine freie Ăbersetzung eines Eintrags in .
Mit Erlaubnis des Autors (auch zur Veranschaulichung und aus Interesse) habe ich ihn mit Links versehen und mit einigen persönlichen Erkenntnissen ergÀnzt.
EinfĂŒhrung
Derzeit muss mindestens ein Nutzer aus dem Paar, das sich verbindet, im aktiven Modus sein. Der NAT-Umgehungsmechanismus ist nĂŒtzlich, wenn bei keiner der Seiten der aktive Modus eingerichtet ist. Dies geschieht normalerweise aufgrund der Blockierung eingehender Verbindungen durch eine Firewall oder ein NAT-GerĂ€t.
Wenn beide Clients im aktiven Modus sind
sendet der initiierende Client einen Befehl, der seine eigene IP-Adresse und den Port enthÀlt, an den anderen Client. Der empfangende Client stellt unter Verwendung dieser Daten die Verbindung zum Initiator her.
Wenn einer der Clients im passiven Modus ist
ĂŒber den Hub sendet der passive Client A den Befehl an den aktiven Clienten, Bder dann mit dem Befehl $ConnectToMe antwortet.

Als Server O fungiert in obigem Fall der DC-Hub.
Wenn beide Clients im passiven Modus sind,
Clients, die sich hinter unterschiedlichen NATs befinden, A und B haben sich mit dem Hub verbunden. O.

So sieht die Verbindung zum Hub aus der Sicht des Clients aus. A
Der Hub akzeptiert Verbindungen am Port 1511. Der Client A stellt aus seinem privaten Netzwerk heraus ausgehende Verbindungen ĂŒber den Port 50758 her. Der Hub sieht wiederum die NAT-Adresse des GerĂ€ts, arbeitet damit und ĂŒbertrĂ€gt den Clients entsprechend ihren Identifikatoren.
Kunde A sendet eine Nachricht an den Server O mit der Bitte, die Verbindung zum Client zu unterstĂŒtzen. B.
Hub: [Outgoing][178.79.159.147:1511] DRCM AAAA BBBB ADCS/0.10 1649612991
Auch im passiven Modus muss der Client, Bnach Erhalt dieses Befehls, seinen privaten Port mitteilen, der fĂŒr die Verbindung zum Hub ĂŒber NAT verwendet wird.
Hub: [Incoming][178.79.159.147:1511] DNAT BBBB AAAA ADCS/0.10 59566 1649612991
Nach Erhalt dieser Informationen A versucht der Client sofort, eine Verbindung zum Client herzustellen B und gibt seinen eigenen privaten Port an.
Hub: [Outgoing][178.79.159.147:1511] D<b>RNT</b> AAAA BBBB ADCS/0.10 <b>50758</b> 1649612991Was ist da interessant? Es geht darum, den Endpunkt derselben Verbindung zu verschieben, indem eine neue Verbindung zur öffentlichen Adresse ĂŒber den bereits verwendeten privaten Port hergestellt wird.

Bingo!
NatĂŒrlich hat das NAT des Clients B das volle Recht, die erste Verbindungsanfrage des Clients abzulehnen, Aaber bereits seine eigene Anfrage strömt in das 'Loch', das durch diese Verbindung geschaffen wurde, und die Verbindung wird tatsĂ€chlich hergestellt.

Eine Illustration, die zu dem gesamten Prozess passt, mit der EinschrĂ€nkung, dass keine öffentlichen Ports verwendet werden, die von einer Sitzung geöffnet sind NATâO, sowie private Adressen.
Epilog
Zum Zeitpunkt des Schreibens des (originalen) Artikels arbeiten etwa die HÀlfte der DC-Kunden im passiven Modus. Das bedeutet, dass ein Viertel aller möglichen Verbindungen nicht hergestellt werden kann.
ZukĂŒnftig , indem bestehende Verbindungen genutzt werden AâO und BâO um eine direkte Client-zu-Client-Verbindung herzustellen, selbst wenn A und B sie sich im passiven Modus befinden.
Quelle: habr.com
