Um NAT zu verstehen solltest du dir vllt. erstmal klarmachen was es für ein Problem gibt, wenn dein Router kein NAT machen würde.
Stell dir vor du sitzt mit deinem PC irgendwo hinter deinem Router. Ein anderer Server oder was auch immer möchte jetzt gerne mit dir eine Verbindung aufbauen und kennt auch zufällig deine öffentliche IP (also die IP, die dem Router vom Internetanbieter zugewiesen wurde).
Der Server schreibt also die öffentliche IP Adresse in den IP-Header seines Paketes und trägt den Port ein auf dem er dich erreichen möchte. Das Paket kommt jetzt beim Router an, aber der weiß garnicht an welchen PC er das im internen Netz weiterleiten soll. Könnte ja auch sein, dass das Paket für deinen Vater gedacht ist.
Deswegen führt ein Router solche NAT-Tabellen:
Wegen dem eben genannten Problem ist es auch nicht möglich, dass ein Rechner aus dem Internet mit dir eine Verbindung aufbaut wenn du hinter einer NATBox hängst. Du musst immer zuerst die Verbindung aufbauen damit ein Eintrag in der NAT Tabelle erstellt werden kann.
Das ganze läuft also so:
Du möchtest gerne Google aufrufen. Dein Netzwerkstack macht also das Paket fertig und schreibt in das IP-Paket in das "Sender" erstmal deine interne IP. Die kann aber im Internet nicht geroutet werden!
Der Router tauscht also die IP aus. Er schreibt bei "Sender" die öffentliche IP rein und tauscht auch den Port aus. Das ist wichtig!
Wenn du dir also das Bild anguckst versucht dein Rechner - in diesem Fall 192.168.1.3 - auf Port 1025 einen HTTP Request an Google zu senden.
Der Router tauscht die IP aus gegen die öffentliche IP und tauscht auch den Port aus gegen einen selbst gewählten. Dann wird die Anfrage weiter an Google geschickt.
Der Google Server verarbeitet dann dein Paket und schickt es zurück. Und zwar an die öffentliche IP-Adresse 212.23.4.65 auf Port 33386. (Weil es ja von da gekommen ist).
Vorher hatten wir das Problem, dass wir nicht wussten für welchen Rechner das Paket im internen Netz bestimmt ist. Jetzt kann der Router aber in der NAT Tabelle nachgucken. Er sieht also, dass er ein Paket mit Dest. IP 212.23.4.65 und Dest. Port 33386 bekommen hat. Dann guckt er nach welcher Rechner das Paket ursprünglich gesendet hat.
Danach tauscht er die Destination IP aus. Er schreibt also wieder die interne IP deines Rechners in den IP-Header und tauscht außerdem im TCP/UDP oder was auch immer Header den Port aus und schickt es an dich.
Und mehr ist NAT eigentlich nicht. Es verletzt allerdings das Ende-zu-Ende Prinzip da es Pakete modifiziert. Oft wird NAT auch als Sicherheitsfeature verkauft, was aber eigentlich eher ein Nebeneffekt ist.