Wie erreichen IP-Antwortpakete ihr Ziel in einem privaten LAN? [Duplikat]

26

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.

Schlaflosigkeit
quelle
Habe gerade ein schönes Video zum Thema gesehen: Network Address Translation - Computerphile
Der Hochstapler

Antworten:

56

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.comwü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.comund 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.comPort 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)

Der Hochstapler
quelle
1
Ich habe Ihre Antwort bearbeitet, es wurde nicht klar angezeigt, was mit den Portnummern geschah. Ich habe weitere Beispiele zu den Zwischenschritten und den Portnummern hinzugefügt.
Scott Chamberlain
1
@OliverSalzburg Ich suchte nach der gleichen beantworteten Frage und Ihre Erklärung half mir, mich zu erinnern, nur eine kurze Frage dazu. Wenn Sie sich fragen, wie lange der Router diese umgekehrten Zuordnungen (Quellport) beibehalten würde, würde ihm der Speicherplatz ausgehen, wenn er dies für so viele Anforderungen fortsetzt. Werden sie zu regelmäßig gelöscht?
Ahmed
@Ahmed: Die Speicherkapazität zum Verfolgen dieser Informationen ist begrenzt. Es gibt 65536 mögliche Portnummern, diese werden in 2 Bytes gespeichert. Wenn Sie sich also eine IP-Adresse (4 Byte) für jeden Port merken, ergibt dies eine Summe von 65536 x 4 Byte = 262144 Byte = 256 KB. Die Details sind jedoch im Router implementiert, das ist nicht viel Speicher.
Der Hochstapler
@Oliver Tolle Antwort, genau das, wonach ich gesucht habe! Ich habe ein paar Fragen - (1) "dasselbe Spiel geht weiter und weiter mit allen Routern auf der Welt" - ist das korrekt? Sicherlich würde das Quellfeld nicht weiterhin bei jedem Schritt ersetzt werden? (2) Erinnert sich der Router langfristig an die geöffneten Ports oder lässt er sie regelmäßig fallen, wenn Anfragen nicht beantwortet werden? (3) Bedeutet dies, dass ein Hacker mit einem Man-in-the-Middle-Angriff Pakete über die Firewall Ihres Routers hinwegbekommen kann: Schnüffeln Sie Ihre ausgehenden TCP-Pakete und zielen Sie dann auf den offenen TCP-Port Ihres Routers mit einer gefälschten Quell-IP, die Ihrem Ziel entspricht?
Jon Bentley
1
Wie kommt eine ICMP-Ping-Antwort auf einen Computer im LAN zurück? Hat es etwas Ähnliches wie Port für TCP? Wie wäre es mit anderen Protokollen?
Jean
11

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.

JRobert
quelle
2
JRobert: Was ist mit IP-Protokollen (z. B. ICMP) außer TCP oder UDP, die keine Portnummer haben?
Uri
0

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.

RedGrittyBrick
quelle
0

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.

LawrenceC
quelle
0

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.

Spiff
quelle