Dies ist eine kleine theoretische Frage, die mich schon ziemlich lange verwirrt hat.
Wenn wir uns in einem privaten LAN befinden und eingehende Pakete beispielsweise an einen HTTP-Server auf einem der Computer weiterleiten möchten, leiten wir Ports weiter, damit eingehende Pakete genau diesen Computer erreichen.
Jetzt bin ich ziemlich verwirrt darüber, wie Antwortpakete ihr Ziel in einem LAN erreichen, wenn wir beispielsweise eine Webseite öffnen. Kann nicht wirklich nützliche Informationen zu diesem Thema finden.
Ich hoffe, jemand kann mir ein paar Hinweise geben oder mich mit Informationen verknüpfen, die es erklären könnten. Vielen Dank.
EDIT: Ich denke, ich sollte klarstellen. Ein Beispiel für die Frage wäre:
1. Ein Computer in einem LAN mit einer einzelnen externen IP versucht, eine Webseite von einem Webserver außerhalb dieses LANs zu laden (im Grunde genommen im Internet).
2 Der Webserver antwortet und sendet die Webseite an diesen Computer zurück.
Was mich an dieser Stelle ziemlich verwirrt, ist, woher der Router weiß, auf welchem Computer die eingehenden Daten gesendet werden sollen (vorausgesetzt, der Router ist mit einem LAN mit mehreren Computern verbunden), ohne dass zuvor ein Port weitergeleitet wurde.
Antworten:
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 ist80
), wird er dort einen neuen Quellport einfügen (wie12345
).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)quelle
Netzwerkadressübersetzung . Kurz gesagt, wenn der Gateway-Router des privaten LANs die private LAN-Quelladresse durch seine eigene öffentliche Adresse ersetzt, ändert er das Paket auf eine Art und Weise, indem er dem ursprünglichen LAN-Knoten und der ausgehenden Anforderung eine eindeutige und ansonsten lokal bedeutungslose Portnummer zuweist . Es merkt sich diese Portzuordnung, sodass es (der Router) weiß, wie es die Zuordnung zu demjenigen seines Ursprungsknotens aufhebt, wenn eine Antwort an die öffentliche IP / eindeutige Portnummer zurückkommt. Auf diese Weise können Sie auch mehrere Registerkarten, Browser oder Browser-Instanzen ausführen, und die Antworten auf jede Browseranforderung werden auf die richtigen Browser und Registerkarten zurückgeführt.
quelle
Wenn ein erstes Paket an der externen Schnittstelle des Routers ankommt, ändert es die Ziel-IP-Adresse des Pakets gemäß der Portweiterleitungskonfiguration und überträgt das geänderte Paket an die interne Schnittstelle des Routers (nach dem üblichen ARP, falls erforderlich).
Das Paket erreicht den Webserver und hat immer noch eine externe Quell-IP-Adresse, die als Zieladresse für jede Antwort verwendet wird. Der Server adressiert dementsprechend die ausgehenden Antwortpakete auf die übliche Weise mit einer Ziel-IP-Adresse, die der Quell-IP-Adresse der Anforderung entspricht. Da die IP-Adresse des Anforderers extern ist, wird das Paket auf der MAC-Ebene an die interne Schnittstelle des Routers adressiert.
Beachten Sie, dass es in jeder Netzwerkschicht unterschiedliche Ziele gibt.
quelle
Die Portweiterleitung erfolgt normalerweise über einen Router oder ein Gerät in der Nähe. Wenn ein Gerät in einem LAN Datenverkehr an ein anderes Gerät in demselben LAN sendet, ist der Router überhaupt nicht beteiligt. Der Verkehr berührt es nicht einmal. Ihre Portweiterleitungsregeln haben keine Auswirkungen auf den LAN-zu-LAN-Verkehr.
Ethernet wurde unter Berücksichtigung einer "Bus" -Topologie entwickelt, bei der jeder Computer physisch mit demselben Medium verbunden war. Während moderne Switches den Verkehrsfluss optimieren, indem sie die MAC-Adresse am anderen Ende des Ports lernen und den Verkehr entsprechend replizieren, bleibt die "Bus" -Topologie erhalten. Alles, was an einen Standard-Switch angeschlossen ist, kann "direkt" etwas anderes erreichen (vorausgesetzt, es befindet sich im selben Subnetz), ohne ein Zwischengerät wie einen Router "durchlaufen" zu müssen.
Sie könnten verwirrt sein, wenn das Gerät, an das Sie alle Computer anschließen, mehrere "LAN" -Ethernet-Ports und dann einen einzigen "WAN" -Port hat. Diese Arten von Geräten sind eigentlich sowohl ein Router als auch ein Switch im selben Gehäuse.
Wenn Ihr HTTP-Server in Ihrem LAN die Adresse 192.168.1.55 hat, müssen Sie " http://192.168.1.55 " in die Adressleiste Ihres Browsers eingeben, um ihn in Ihrem LAN zu erreichen . Router sieht es nie. Um es außerhalb Ihres LAN zu erreichen, müssen Sie Ihre externe IP- Adresse eingeben , z. B. " http://256.99.88.77 : {der hier weitergeleitete Port}" oder was auch immer. Dies trifft Ihren Router, die NAT-Funktion des Routers arbeitet darauf und der Router sendet es an 192.168.1.55.
quelle
Ganz einfach: Wenn ein Computer im privaten LAN eine ausgehende Verbindung initiiert, generiert das NAT-Gateway automatisch eine Portzuordnung für ihn. Sie entsprechen in etwa den zuvor manuell eingegebenen Portzuordnungen: {öffentlicher Port, private Adresse, privater Port} und werden in etwa auf dieselbe Weise verwendet. Der größte Unterschied zu dynamischen Zuordnungen besteht darin, dass das NAT-Gateway die öffentlichen Ports für die Zuordnungen häufig willkürlich zuweisen muss, wenn die erwartete Portnummer bereits verwendet wird.
quelle