Woher weiß der Router, wohin das Paket weitergeleitet werden soll?

30210
Kornelije Petak

Wenn mehrere Computer mit lokalen Adressen (192.168.0. #) An einen Router angeschlossen sind und jeder Computer einen Webbrowser öffnet und eine Seite über HTTP anfordert, wenn diese TCP: 80-Pakete gesendet werden, wechselt der Router die lokale Adresse mit statische IP-Adresse des Routers (dh vom Provider vorgegebene IP-Adresse), damit der Server an die entsprechende Adresse antworten kann.

Aber woher weiß der Router, an welchen Computer die HTTP-Antwort weitergeleitet werden soll, da der TCP-Header nicht die lokale IP-Adresse enthält (oder?) Und alle Computer Port 80 verwenden?

Hat das etwas mit den MAC-Adressen zu tun?

Wie funktioniert das genau?

58

2 Antworten auf die Frage

67
Paul

Die meisten Heimrouter verwenden einen speziellen NAT-Fall namens PAT.

Es wird auch NAPT oder IP-Masquerading genannt. Alle drei letzteren Ausdrücke bedeuten im Allgemeinen dasselbe. (Akronyme - Netzwerkadressenübersetzung / Portadressenübersetzung / Netzwerkadressenportübersetzung)

Wenn das Paket von Ihrem internen Rechner ausgeht, wird die Quelladresse umgeschrieben, sobald Sie wissen. Die Quelle - Port wird auch geändert, in der Regel auf eine hohe Zahl, und der Router hält eine Adreßübersetzungstabelle.

Angenommen, Sie haben einen Client-Computer, der zu www.google.com wechselt. Ihr Computer (z. B. 192.168.1.100) sucht nach dieser Adresse und stellt eine TCP-Verbindung zu 72.14.204.147 an Port 80 von Ihrer internen IP-Adresse her mit einem zufälligen Quellport her.

Für Ihren Computer sieht die Verbindung folgendermaßen aus:

192.168.1.100:37641 <--> 72.14.204.147:80 

Ihr Computer sendet das Paket an den Router, der einen neuen zufälligen High-Port auswählt und das Paket neu schreibt. Jede ausgehende Verbindung erhält einen eigenen Port am Router. Der Router leitet das Paket dann an Ihren ISP weiter, nachdem Sie es zu seiner Verbindungstabelle hinzugefügt haben:

PrivateIP PrivatePort PublicIP PublicPort Remote RemotePort ------------- ---------- ----------- ----------- ---------- ----------- 192.168.1.100 37641 *10.6.23.5 59273 72.14.204.147 80 

* Zum Beispiel habe ich eine Adresse verwendet, die mit 10 beginnt, aber diese sind nicht öffentlich routbar. Der Tisch ist auch etwas vereinfacht.

Für Google sieht die Verbindung folgendermaßen aus:

10.6.23.5:59273 <--> 72.14.204.147:80 

Google sendet seine Antwort an 10.6.23.5 an Port 59273. Ihr Router sucht dann in der Tabelle nach diesen Informationen und leitet das Paket an 192.168.1.100:37641 weiter.

Zusammenfassend verwendet der Router die Portnummern, um sich zu merken, was von außen das lokale Netzwerk zu dem Inhalt des Netzwerks führt. Dies erklärt jedoch nicht, wie "www.google.com" mich finden würde, wenn ich ihm keine erste Anfrage übermittelte. Mit anderen Worten, Nachrichten können mich nur dann über den Router erreichen, wenn ich zunächst eine Anfrage über den Router gesendet habe CodyBugstein vor 9 Jahren 3
AFAIK, NAPT und PAT und IP Masquerading sind umgangssprachlich und technisch gleich. Und es sind Fälle von NAT. Mit NAT gibt es https://www.rfc-editor.org/rfc/rfc2663.txt traditionelles NAT, Basis-NAT und NAPT. barlop vor 9 Jahren 0
@Imray google.com (oder sonstiges im Internet) kann Ihren Computer nicht finden, wenn Ihr Computer die Anforderung nicht initiiert hat. Aus diesem Grund erhöht ein Router die Sicherheit. Jason vor 9 Jahren 2
@ Jason Das ist ein gefährlicher Mythos. Eine * Firewall * erhöht die Sicherheit. Die Aufgabe eines typischen SoHo-Routers besteht einfach darin, die Dinge zum Laufen zu bringen und nicht zu stoppen. Weitere Informationen erhalten Sie hier [http://security.stackexchange.com/a/8773/4295]. David Schwartz vor 9 Jahren 4
@David Schwartz Ich habe Ihren Link, die Kommentare und den Chat gelesen. Während der Ausbildung ist es in der Praxis oder im Zusammenhang mit dieser Frage nicht wirklich hilfreich. Wie Sie selbst sagten, verwenden Heim- / SOHO-Router kein reines NAT. Wenn Sie also einen Router haben, werden vom Internet keine Anfragen mit Ihrem PC initiiert. Jason vor 9 Jahren 0
@Jason Dass "ein Router mehr Sicherheit bietet" ist ein gefährlicher Mythos, auch wenn er manchmal wahr ist. Und in der Tat ist Ihre spezifische Behauptung ("Ihren Computer kann nicht gefunden werden, wenn Ihr Computer die Anforderung nicht initiiert hat") völlig falsch - permissive NAT ist in SoHo-Routern durchaus üblich, weil dadurch viel mehr Dinge gemacht werden Arbeit'. David Schwartz vor 9 Jahren 0
@Jason Besser, deinen Kommentar nicht zu löschen, es macht das Lesen einer Diskussion lohnenswert und nicht lesbar. barlop vor 9 Jahren 1
Schönes Beispiel, aber bedeutet das, dass alle High-Number-Ports auf unseren Routern immer geöffnet sind? jiggunjer vor 9 Jahren 2
Nein. Oft hängt die NAT-Funktion eher vom Firewall-Code im Router ab als von der normalen Netzwerkfunktionalität. Der Port befindet sich nicht in einem LISTEN-Status oder nimmt keine neuen Verbindungen an. Sobald das Mapping jedoch vorhanden ist, kann es anderen eingehenden Paketen möglicherweise nicht erlauben, dieses Mapping zu verwenden. Neuere Systeme lassen in der Regel nur Pakete des tatsächlichen Systems zu, zu dem Sie die Verbindung hergestellt haben. Einige Ausnahmen von dieser Regel: 1) Durch die spezielle Handhabung von FTP-Verbindungen werden Ports geöffnet. 2) UPnP-Geräte können einen eingehenden Port anfordern. 3) Sie haben die Portweiterleitung für ein bestimmtes Protokoll manuell konfiguriert. Paul vor 9 Jahren 1
Nur um das Thema hinzuzufügen: Da Sie nicht vorhersagen können, welchen öffentlichen Port der Router generieren wird, können Sie nicht Peer-to-Peer kommunizieren, auch wenn der entfernte Benutzer (ein Freund) Sie über seine öffentliche IP-Adresse informiert. Aus diesem Grund verfügen die meisten Router über Konfigurationen für die Portweiterleitung. Es stellt sicher, dass Pakete, die über diese konfigurierten Ports gesendet werden, unverändert bleiben und somit der Port bekannt ist, über den Sie eine P2P-Verbindung haben können. Praktisch, wenn Sie eine P2P-App wünschen, ohne einen Server für NAT Punch Trough zu benötigen. Icebone1000 vor 7 Jahren 0
Wäre es nicht möglich, dass alle Geräte dieselbe IP-Adresse erhalten? das Wichtigste ist doch der Port, oder? Ich meine, wie der Router die MAC-Adresse der Geräte kennt ... Pablito vor 7 Jahren 0
Schöne Erklärung. Was ich nicht verstehe ist: Warum generiert der Router einen neuen PublicPort, anstatt den PrivatePort zu verwenden? @ Paul gedamial vor 5 Jahren 0
@gedamial - Technisch gesehen gibt es keinen Grund, warum PublicPort und PrivatePort unterschiedlich sein müssen, solange diese Portnummer nur für ein internes System gleichzeitig benötigt wird. In der Praxis ist dies für normalen Verkehr wenig vorteilhaft. Es ist wahrscheinlich einfacher für die NAT-Implementierung, einen zufälligen, nicht verwendeten Port zu wählen, anstatt Kollisionen (zwei Systeme mit derselben Portnummer) speziell zu behandeln, wenn sie auftreten. Die meisten ausgehenden Verbindungen hinter PAT verwenden ohnehin zufällige High-Ports (ephemere Ports), sodass Sie hinsichtlich der Vorhersagbarkeit nicht viel gewinnen. Paul vor 5 Jahren 0
Also, jede Anfrage wählt einen neuen Port aus? Ist dies wahr, es gibt nur 64k-Ports, die ich verwenden kann, was bedeutet, dass ich nur 64k-Anfragen von meinem Computer aus machen kann swayamraina vor 5 Jahren 0
@swayamraina - Das, worauf Sie sich beziehen, wird "Port-Erschöpfung" genannt und ja, es ist möglich. In der Praxis ist dies wahrscheinlich nur dann ein Problem, wenn Sie ungewöhnlich viele ausgehende Verbindungen herstellen oder große Netzwerke hinter einer einzigen externen IP-Adresse maskieren. Das genaue Verhalten hängt von der Implementierung ab. Wenn Verbindungszeitgeber jedoch ablaufen oder TCP-Sitzungen abgebrochen werden, werden die Ports im Allgemeinen freigegeben und können für verschiedene abgehende Verbindungen wiederverwendet werden. Paul vor 5 Jahren 0
0
CodyBugstein

Die Router zwischen dem lokalen Netzwerk und dem restlichen Internet verwenden eine als NAT bezeichnete Technik.

Nur ein Auszug aus dem TCP / IP Illustrated-Band 1 über NAPT mit einem Wort zu den Mängeln seines einfachen Vetters Basic NAT:

Basic NAT führt nur das Umschreiben von IP-Adressen aus. Im Wesentlichen wird eine private Adresse als öffentliche Adresse umgeschrieben, häufig aus einem Pool oder einem Bereich von öffentlichen Adressen, die von einem ISP bereitgestellt werden. Diese Art von NAT ist nicht die beliebteste, da sie nicht dazu beiträgt, den Bedarf an IP-Adressen drastisch zu reduzieren. Die Anzahl der global routbaren Adressen muss mindestens der Anzahl der internen Hosts entsprechen, die gleichzeitig auf das Internet zugreifen möchten. Ein viel beliebterer Ansatz, NAPT, beinhaltet die Verwendung der Transportschichtkennungen (dh Ports für TCP und UDP, Abfragekennungen für ICMP), um zu unterscheiden, welcher Host auf der privaten Seite des NAT einem bestimmten Paket zugeordnet ist (siehe Abbildung 7- 4). Dies ermöglicht eine große Anzahl von internen Hosts (dh mehrere Tausend) gleichzeitig mit einer begrenzten Anzahl öffentlicher Adressen, oftmals nur einer, auf das Internet zugreifen. Normalerweise verwenden wir den Begriff NAT, um sowohl traditionelles NAT als auch NAPT einzubeziehen, es sei denn, die Unterscheidung ist in einem bestimmten Kontext wichtig.