Wie verfolgt ein Router Verbindungen? Wenn Sie eine HTTP-Anfrage senden, geht sie an den Router, der sie dann über das Internet an einen anderen Router usw. sendet. Aber woher weiß sie dann, dass sie zum Server gehen soll? Wird sie an einen Lastenausgleich weitergeleitet? Und wenn das Paket zurückkommt, woher weiß es dann, dass es zum PC zurückgehen soll, da das Paket an den Router und nicht an den PC zurückgesendet wurde? Ist es möglich, von außerhalb dieses Routers eine Verbindung zu einem von einem Router gesteuerten PC herzustellen? Können Sie also ein Paket an einen PC weiterleiten, der nicht direkt mit dem Internet verbunden ist?
Antwort1
Ich versuche, diese alte Frage zu beantworten, in der Hoffnung, jemandem zu helfen, der nach so etwas sucht. Bitte lassen Sie mich auch wissen, wenn ich Fehler gemacht habe.
Damit die Informationen von Ihrem Computer zu einem Webserver im Internet fließen können, sind viele verschiedene Komponenten, Geräte und Algorithmen im Spiel. Wir konzentrieren uns jedoch auf die Netzwerkalgorithmen, die dies ermöglichen.
Ich glaube, dass es hauptsächlich zwei Internettechnologien sind, die den Informationsfluss zwischen Ihrem Computer und einem Internet-Webserver am stärksten ermöglichen: das Routing-Protokoll und NAT.
Wir konzentrieren uns auf das IP-Paket, da es die Dateneinheit ist, mit der das Routing-Protokoll und NAT arbeiten.
- Wenn das von Ihrem Browser an den Internetserver gesendete IP-Paket den Heimrouter erreicht, wird es überprüft und seine Quell-IP wird von der lokalen LAN-IP des ursprünglichen Absenders in die öffentliche IP des Heimrouters geändert und dann an die Ziel-IP weitergeleitet. Diese Übersetzung wird imVerbindungstabelle.Das ist die Aufgabe von NAT.
- Wenn das Ziel Teil des Netzwerks der öffentlichen IP des Routers ist, wird es an diese IP gesendet, andernfalls wird es anhand der Routing-Tabelle auf eine Übereinstimmung geprüft. Wenn der Router keine finden kann, leitet er das Paket an sein eigenes Standard-Gateway weiter. Dieser Vorgang wird fortgesetzt, bis ein Router schließlich eine Übereinstimmung findet.Hier kommt das Routing-Protokoll ins Spiel.
- Wenn keine Route gefunden wurde, wird eine ICMP-Meldung „Ziel nicht erreichbar – Host nicht erreichbar“ an den Quellhost gesendet.
- Sobald der endgültige Host gefunden ist, akzeptiert er die IP-Pakete, entkapselt sie, verarbeitet die darin enthaltene Anfrage und sendet dann eine Antwort zurück. Die Ziel-IP der Antwort ist die IP des Quellrouters.
- Die Antwort folgt demselben Prozess wie die Anfrage, bis sie den Absender erreicht. Beachten Sie, dass Pakete, die einen bestimmten Weg zu ihrem Ziel nehmen, NICHT unbedingt denselben Weg zurück nehmen müssen.
- Sobald die Ziel-Internet-IP erreicht ist, gleicht der Router den eingehenden Datenverkehr mit seiner Verbindungstabelle ab, führt eine Rückübersetzung durch und leitet die Pakete anschließend an die entsprechende Maschine weiter.
Auf diese Weise fließen die IP-Pakete vom Browser zum Ziel-Webserver.
- Es gibt 4 Verbindungen, da ich glaube, dass für die Erstellung der Seite, die ich geöffnet habe, 4 verschiedene Anfragen verwendet wurden.
- Der Client, der die Verbindung initiiert, kann jeden verfügbaren Quellport verwenden. Dieser Port wird vorübergehend reserviert, bis beide Rechner sich darauf einigen, die Verbindung zu schließen. Die IANA schlägt vor, den Bereich 49152 bis 65535 für diese sogenannten „ephemeren Ports“ zu verwenden. Webserver laufen im Allgemeinen auf Port 80, dem Standardport für HTTP-Verkehr, sodass Clients ihre Anfragen zum Anzeigen einer Webseite an diesen Port senden würden.
- Die Swimlane des Home-Routers dient als Snapshot der Verbindungstabelle des Routers.
- In der Swimlane des SuperUser-Servers befindet sich ein Snapshot der mit dem Server hergestellten Verbindungen.
Die Verbindungstabelle stellt die Eindeutigkeit sicher, indem sie hauptsächlich die Kombination aus Quell-IP, Quellport, Ziel-IP und Zielport verwendet. Der wichtigste Faktor zur Bestimmung der Eindeutigkeit ist natürlich der Quellport. Wenn also ein anderer interner Host versucht, einen vorhandenen Quellport zu verwenden, ändert der Router diesen Port und vermerkt diese Änderung in der Verbindungstabelle.
Dies sollte alle Ihre Fragen beantworten, außer dieser:Ist es möglich, von außerhalb des Routers eine Verbindung zu einem von einem Router gesteuerten PC herzustellen. Können Sie also ein Paket an einen PC weiterleiten, der nicht direkt mit dem Internet verbunden ist?
Wenn Sie den auf dem Router für eine bestimmte Internet-IP verwendeten NAT-Port kennen und in der Lage sind, die IP-Pakete zu fälschen und an den Router zu senden, während der NAT-Port des Routers geöffnet ist, sollte dies theoretisch möglich sein. Ich bin jedoch sicher, dass die meisten Router weitere Parameter verwenden, um die Einzigartigkeit und Authentizität von IP-Paketen zu ermitteln.
Zur Formulierung meiner Antwort habe ich die folgenden Referenzen verwendet:
Antwort2
Router verbinden Netzwerke über Gateways oder Schnittstellen, vereinfacht ausgedrückt:
Do I know where this packet should go?
yes - is it one of mine?
yes - send to appropriate interface.
no - send on to next gateway
no - return a packet saying unreachable
Auf Ihrem Heimrouter läuft eine Software zur Verbindungsverfolgung. Sie führt eine Liste der Verbindungen, mit denen die Computer in Ihrem Netzwerk über das Internet kommuniziert haben. Auf diese Weise kennt der Router die Adressen und Ports, an denen die Antworten zurückgegeben werden müssen.
TCP-Pakete haben ein spezielles Feld, das die Adresse des ursprünglichen Rechners enthalten kann. Der Router verwendet etwas namens Masquerading, um seine Rücksendeadresse einzufügen, und der Zielrechner fügt sie ebenfalls ein. Dies kann dem Verbindungstracker etwas Arbeit ersparen, offenbart dem Remote-Server aber auch interne IP-Adressen.
Die Rücksendung von UDP-Paketen hingegen ist auf das Verbindungstrackermodul des Routers angewiesen, um Antworten an den ursprünglichen Rechner zurückzusenden. Bis vor einigen Jahren war dies ein schwer zu lösendes Problem.
Für neue eingehende Verbindungen gibt es keine Einträge im Verbindungs-Tracker, sodass der Router nicht weiß, wohin er die Daten senden soll, sofern er keine spezifischen Weiterleitungsanweisungen für diesen Pakettyp erhält. Außerdem gibt es in allen Routern eine Möglichkeit, anzugeben, welcher Rechner in Ihrem Netzwerk beispielsweise neue Anfragen für Port 80 erhält.
TCP ist ein komplexes und erstaunliches zustandsgesteuertes Protokoll. Pakete müssen nicht die gleichen Routen nehmen, können in kleinere Teile aufgeteilt werden, kommen in anderer Reihenfolge an, wobei die Fehlerkorrektur das erneute Senden einzelner Pakete anfordert, und der Datenstrom kann neu zusammengesetzt werden, ohne dass die Anwendungen an beiden Enden irgendwelche Schwierigkeiten bemerken, es sei denn, sie sind zu groß, um die Leistung zu beeinträchtigen. Viele Doktortitel wurden damit erworben!
Antwort3
Um das Routing zu verstehen, sollten Sie zunächst ein Verständnis für dieOSI-Modellund Sie sollten auch ein Verständnis vonCIDR.
Dies wird ziemlich einfach sein:
Wenn ein Paket einen Computer in einem Standard-Heimnetzwerk verlässt, weiß der Computer, dass es sich um ein privates Netzwerk handelt, und versteht aufgrund von CIDR, dass das endgültige Ziel außerhalb des Netzwerks liegt, und sendet das Paket daher an das Standard-Gateway. Das Standard-Gateway sieht sich die IP an und sendet sie an die Routerkette, bis sie das Zielnetzwerk erreicht (basierend auf den IP-Informationen im Paketheader). Dieses Gateway leitet sie dann an die richtige IP im Netzwerk weiter (manchmal basiert dies auf dem Port in den Paketdetails, manchmal nur auf der IP, je nach Server/Netzwerk am anderen Ende). Wenn die angeforderten Informationen zurückgesendet werden, weiß Ihr Router aufgrund eines Ports, der zum Markieren der Sitzung ausgewählt wurde, an welchen Computer es geht, und er weiß, zu welcher privaten IP diese Sitzung gehört. Es gibt noch viel mehr dazu, aber dies ist eine ziemlich ausführliche Erklärung, um das Konzept des Routings zu verstehen. Ich bin sicher, dass andere mich korrigieren oder ergänzen werden.
Die Antwort auf Ihre Frage lautet: Ja, das ist möglich. Sie müssen nur die öffentliche IP-Adresse am Endpunkt und den Port kennen, über den die Verbindung hergestellt werden muss. Der Router muss wissen, an welchen Computer dieser Port weitergeleitet werden muss, um den Server im privaten Netzwerk zu erreichen (basierend auf NAT-Regeln).
Antwort4
Ich bin mir nicht sicher, ob ich das richtig verstehe, aber ich gebe meine beste Vermutung ab. Sie haben gefragt: „Ist es möglich, eine Verbindung zu einem PC herzustellen, der von einem Router gesteuert wird?“ Ich gehe davon aus, dass Sie sich auf Fernzugriff beziehen. Sie können so etwas wie VNC oder Remote Desktop oder so etwas verwenden. Wenn Sie von zwei PCs sprechen, die über das Internet verbunden sind, sehen Sie sich VPN an. Wenn Sie meinen, dass einer eine IP von einem anderen zuweist, dann wäre das eine Server/Client-Verbindung und über ein WAN müsste es so etwas wie ein VPN sein.
Das TCP-Paket enthält die Informationen zum LAN-Ziel innerhalb des Pakets.