Woher weiß der Router, wo er das Paket weiterleiten soll?


68

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, wechselt der Router beim Senden dieser TCP: 80-Pakete die lokale Adresse mit statische IP des Routers (dh vom Provider angegebene IP), damit der Server auf 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 dies etwas mit den MAC-Adressen zu tun?

Wie genau funktioniert das?

Antworten:


78

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

Sie sehen es auch als NAPT oder IP-Masquerading bezeichnet. Alle drei letztgenannten Begriffe bedeuten im allgemeinen Sprachgebrauch dasselbe. (Die Akronyme - Network Address Translation / Port Address Translation / Network Address Port Translation)

Wenn das Paket von Ihrem internen Computer gesendet wird, wird die Quelladresse, wie Sie wissen, neu geschrieben. 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 diese Adresse und stellt von Ihrer internen IP-Adresse über einen zufälligen Quellport eine TCP-Verbindung zu 72.14.204.147 auf Port 80 her.

Die Verbindung zu Ihrem Computer sieht 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 er es seiner Verbindungstabelle hinzugefügt hat:

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

* Ich habe zum Beispiel eine Adresse verwendet, die mit 10 beginnt, die aber nicht öffentlich weitergeleitet werden kann. Die Tabelle 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 auf Port 59273. Ihr Router schlägt diese Informationen in der Tabelle nach und leitet das Paket an 192.168.1.100:37641 weiter.


3
Zusammenfassend verwendet der Router Portnummern, um sich zu merken, was von außerhalb des lokalen Netzwerks in das Innere des Netzwerks übertragen wird. Dies erklärt jedoch nicht, wie es www.google.commich finden würde, wenn ich ihm keine erste Anfrage senden würde. Mit anderen Worten, Nachrichten können mich nur über den Router erreichen, wenn ich zuerst eine Anfrage über den Router
gesendet habe

2
@Imray google.com (oder irgendetwas anderes im Internet) kann Ihren Computer nicht finden, wenn Ihr Computer die Anfrage nicht initiiert hat. Dies ist der Grund, warum ein Router viel Sicherheit bietet.
Jason

6
@ Jason Das ist ein gefährlicher Mythos. Eine Firewall erhöht die Sicherheit. Die Aufgabe eines typischen SoHo-Routers ist es, Dinge zum Laufen zu bringen und nicht zu verhindern, dass sie funktionieren. Ich hier für weitere Informationen.
David Schwartz

1
@Jason Besser nicht deinen Kommentar löschen, es macht was eine lohnende Diskussion zum Lesen gewesen wäre, nicht zum Lesen möglich.
Barlop

2
Nettes Beispiel, aber bedeutet das, dass auf unseren Routern immer alle Ports mit hoher Anzahl offen sind?
Jiggunjer

1

Die Router zwischen dem lokalen Netzwerk und dem Rest des Internets verwenden eine Technik namens NAT.

Nur ein Auszug aus TCP / IP Illustrated Volume 1 über NAPT mit einem Wort über die Mängel seines einfachen Verwandten Basic NAT:

Basic NAT schreibt nur IP-Adressen um. Im Wesentlichen wird eine private Adresse in eine ö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. NAPT ist ein weit verbreiteter Ansatz, bei dem mithilfe der Transportschichtkennungen (dh Ports für TCP und UDP, Abfragekennungen für ICMP) unterschieden wird, 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 auf das Internet zuzugreifen, wobei eine begrenzte Anzahl von öffentlichen Adressen verwendet wird, häufig nur eine einzige. Wir werden den Begriff NAT normalerweise sowohl für traditionelles NAT als auch für NAPT verwenden, es sei denn, die Unterscheidung ist in einem bestimmten Kontext wichtig.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.