Frage: Angenommen, PAT ist auf meinem Internet-Router zu Hause aktiviert. Woher weiß mein Router, an welche Hosts er Pakete demultiplexen muss, wenn er Pakete aus dem Internet empfängt?
Beispiel: In meinem LAN gibt es zwei Hosts. Jeder sendet eine Anfrage an denselben Server mit denselben Informationen. Jeder Host verwendet denselben Port. Woher weiß der Router, welche Pakete wohin gehen sollen? Jedes Paket sollte dieselbe Quell- und Zieladresse haben. Die Ports sollten gleich sein, es sei denn, es gibt irgendeine Port-Magie, die ich nicht kenne.
Meine Vermutung: Ich vermute, dass an Pakete Metadaten angehängt sind, die mir unbekannt sind und die jeden einzelnen Host in einem privaten Netzwerk irgendwie identifizieren. Aber das scheint im nächsten Beispiel nicht zu funktionieren.
Beispiel: Ein Host (ein anderer) in einem anderen Netzwerk möchte ein Paket an einen Host (meinen) in meinem LAN senden. Der andere Host sendet das Paket an die öffentliche IP-Adresse meines Netzwerks. Da mein Host das Paket jedoch nicht erwartet, konnte er meinem Router keine Metadaten darüber geben, wie das Paket demultiplext werden soll. Und der andere Host kennt keine anderen Metadaten als die öffentliche IP-Adresse meines Netzwerks.
Antwort1
Geräte, die Network Address Translation durchführen, pflegen eine Übersetzungstabelle, die Informationen zu den Quell- und Ziel-IP-Adressen und Portnummern enthält. Die Kombination aus Quell-IP-Adresse und Portnummer sowie Ziel-IP-Adresse und Portnummer ergibt eine eindeutige Kennung für jede Sitzung.
Antwort2
Quellports.
Jeder Client innerhalb des NAT weist einen zufälligen Port mit einer hohen Nummer als Quellport seiner Verbindung zum Server zu.
Wenn der Router eine Anfrage übersetzt, legt er auch einen Quellport fest und merkt sich, welcher Quellport welcher Verbindung zugewiesen wurde. Wenn der Webserver also etwas mit Quellport 80 und Zielport 35201 (oder was auch immer) zurücksendet, sucht der Router nach, welcher der Netzwerk-Clientverbindungen er 35201 zugewiesen hat.
Beachten Sie, dass der Webserver wahrscheinlichnichtwissen, welchen Quellport der ursprüngliche Client angefordert hat, sondern nur, in welchen Quellport der Router es übersetzt hat. (Der Quellport der Anforderung wird zum Zielport der Antwort.)
Antwort3
Ich möchte lediglich mit den obigen Antworten fortfahren und das von Ihnen erwähnte Beispiel eines externen Geräts, das versucht, Ihren internen Host zu erreichen, berücksichtigen. Basierend auf dem oben Gesagten wird Ihr Router standardmäßig den aus dem Internet initiierten Datenverkehr löschen, da er nicht weiß, welcher interne Host in Ihrem LAN den Datenverkehr empfangen soll, da in der NAT-Tabelle des Routers noch kein Eintrag hierfür erstellt wurde.
Um in Ihr LAN eingehenden Datenverkehr aus dem Internet zuzulassen, können Sie eine spezielle Regel zur Portweiterleitung (auch als statisches NAT bezeichnet) definieren. So teilen Sie Ihrem Router mit, dass er, wenn Datenverkehr aus dem Internet beispielsweise über Port 80 eingeht, diesen Datenverkehr an meinen Webserver im LAN mit der IP und dem Port 192.168.1.5:80 weiterleiten soll.