2016-04-27 8 views
1

Während ich ein wenig mit WebRTC gearbeitet habe, habe ich gelernt, was das Biest NAT und STUN ist und ich war auf dem Weg, mein Verständnis zu testen, wie alles funktioniert.Get Public IP und Port

Hier ist die link, wo Sie Ihre Remote-Adresse und Port zusammen mit Ihrer lokalen erhalten können.

Zum Beispiel: meinem lokalen ip: port ist

192.168.1.2:4500 

mein Internet-Provider es

209.200.1.2:14500 

übersetzen und wird die Übersetzungstabelle speichern wie

|209.200.1.2:14500|192.168.1.2:4500| 

und es bedeutet effektiv, wenn Verbindung zu 209.200.1.2:14500 kommt es Forwar ist zu 192.168.1.2:4500.

Angenommen, dass ich ein korrektes Verständnis von NAT habe, erwarte ich, dass wenn ich eine eingehende Verbindung auf Port 4500 (lokal) hören eine Verbindung über 209.200.1.214500 herstellen kann, aber es ist nicht passiert (Verbindung kann nicht hergestellt werden) WARUM?

Vielen Dank für Ihre Hilfe.

Antwort

3

NAT wurde nur entwickelt, um mit ausgehenden Verbindungen zu arbeiten. Der NAT-Router erkennt nicht automatisch, dass ein Computer auf einer privaten IP-Adresse anfängt, auf einem Port zu horchen, und es gibt normalerweise keine garantierte Entsprechung zwischen dem öffentlichen IP-Port des NAT-Routers und dem privaten IP-Port. Außerdem ist es für den NAT-Router unmöglich, eingehende tcp/ip-Verbindungspakete (SYN) korrekt an private IPs weiterzuleiten, da es völlig unerkennbar ist, für welche private IP sie bestimmt sind.

Allerdings gibt es eine Reihe von Techniken namens hole-punching, die es schaffen, praktisch zu arbeiten. Sie benötigen normalerweise einen Server eines Drittanbieters mit einer Nicht-NAT-Adresse, die zwischen den zwei Endpunkten vermittelt, um die Verbindung einzurichten, und dann findet der Hauptteil des tcp/ip-Austauschs zwischen den ursprünglichen zwei Hosts statt.