Obwohl die Frage vollständig abgedeckt wurde. Ich bin der Meinung, dass dieser Prozess am besten Schritt für Schritt beschrieben werden sollte.
In diesem Beispiel sitze ich in einem privaten LAN, das über einen Router mit dem Internet verbunden ist. Da unser Netzwerk eine einzige öffentliche IP-Adresse hat, verwenden wir NAT.
Wenn ich also die Seite anfordere superuser.com
, werden viele IP-Pakete generiert. Schauen wir uns einen einzelnen an.
IP-Paketquelle
: 192.168.1.12
(meine IP)
Ziel: 64.34.119.12
(superuser.com)
Jetzt ist mein System höchstwahrscheinlich ähnlich wie das fragliche eingerichtet. Ich habe meine eigene IP-Adresse ( 192.168.1.12
), eine Subnetzmaske ( 255.255.255.0
) und ein Standard-Gateway ( 192.168.1.1
). Da mein Zielfeld in meinem IP-Paket auf ein anderes Netzwerk als mein eigenes verweist , wird es jetzt an mein Standard-Gateway (und nicht direkt an den Computer) gesendet.
Aber wie kann das Paket zum Standardgateway gelangen, wenn das Ziel woanders hin zeigt?
Ethernet
Das ist einfach, weil wir dafür die Adressierung des Ethernet-Protokolls verwenden. Wir stellen einfach unsere Ziel-IP-Adresse im IP-Paket und die MAC-Adresse unseres Standard-Gateways als Ziel im Ethernet-Frame ein .
Damit stellen Sie sicher, dass unser Standard-Gateway das Paket für erhält superuser.com
. Yay!
Jetzt hat das Gateway unser Paket und kann es direkt auf seinem Weg senden. Aber um sicherzustellen , wird es die Antwort zu bekommen, ist es zunächst notwendig , das Paket zu ersetzen Quelle - Adresse (sonst superuser.com
würde versuchen , die Antwort auf ein (möglicherweise zu senden) nicht vorhandenes Gerät mit meiner IP - Adresse in ihrem Netzwerk. Nun wäre das nicht sehr schön.)
Also mein Router wird seine öffentliche IP-Adresse im Feld Quelle platzieren :
IP-Paketquelle
: 92.69.127.243
(meine öffentliche IP)
Ziel: 64.34.119.12
(superuser.com)
Jetzt geht das gleiche Spiel mit allen Routern auf der Welt weiter und weiter, bis das Paket endlich ankommt superuser.com
und eine Antwort generiert wird.
Die Antwort
Antwort IP-Paket
Quelle: 64.34.119.12
(superuser.com)
Ziel: 92.69.127.243
(meine öffentliche IP)
Ok, die Antwort ging an meinen Router. Was nun? Woher weiß mein Router nun, an wen er die Antwort senden kann 192.168.1.12
?
TCP
Nun, das funktioniert tatsächlich, weil wir uns nur die IP- und Ethernet-Teile der Kommunikation angesehen haben. Was diese Arbeit macht, ist der TCP-Teil.
Sie wissen höchstwahrscheinlich, dass Webserver normalerweise auf einem Port ausgeführt werden 80
. IP kennt keine Ports . Das kommt von TCP . In TCP haben wir (wie in IP) eine Quelle und Ziel - Port .
Mein TCP-Paket an superuser.com
Quelle: 192.168.1.12
(meine IP)
Quellport: 11111
(der Port, aus dem mein Computer besteht)
Ziel: 64.34.119.12
(superuser.com)
Zielport:80
Wenn Ihr Router dieses erste Paket sendet (das an einen superuser.com
Port adressiert ist 80
), wird er dort einen neuen Quellport einfügen (wie 12345
).
Und das ist der wichtige Teil! Er wird sich an diesen Ersatz erinnern!
Das TCP-Paket meines Routers an superuser.com
Quelle: 92.69.127.243
(meine öffentliche IP)
Quellport: 12345
(der Port, aus dem sich mein Router zusammensetzt)
Ziel: 64.34.119.12
(superuser.com)
Zielport:80
Das vom Router empfangene Antwortpaket sieht also tatsächlich so aus:
Antwort-TCP-Paket von superuser.com
Quelle: 64.34.119.12
(superuser.com)
Quell-Port: 80
Ziel: 92.69.127.243
(meine öffentliche IP)
Ziel-Port: 12345
(der Port, aus dem sich mein Router zusammensetzt)
Jetzt bekommt er das Paket und sieht, dass es für einen Port bestimmt ist, an den er sich zuvor erinnert hat und der NAT-Operationen für die IP-Adresse 192.168.1.12
(meine IP-Adresse) zugewiesen wurde .
Antwort TCP-Paket von meinem Router
Quelle: 64.34.119.12
(superuser.com)
Quellport: 80
Ziel: 192.168.1.12
(meine IP)
Zielport: 11111
(der Port, aus dem sich mein Computer zusammensetzt)