Ihre Verwirrung beruht auf falschen Annahmen.
Aber das einzige Gerät, das diesen Routing-Mechanismus kennt, ist sicherlich Router-C selbst! Weder Computer-A noch Computer-B wissen davon, oder?
Was, warum? Warum wurde der Router dann so konfiguriert, dass er diese Ports an diese IPs weiterleitet? Sie müssen den P2P-Client für die Verwendung eines bestimmten Ports einrichten und dann den entsprechenden Router einrichten.
Aber woher soll Router-D wissen, dass Pakete über Port 1000 gesendet werden und nicht über Port 1001?
Weil Sie den P2P-Client so konfigurieren, dass er einen bestimmten Port verwendet (Standard oder Nicht-Standard für dieses Protokoll).
Die einzige Lösung, die ich mir vorstellen kann, besteht darin, dass Router-D das Paket über alle Ports an Router-C sendet, sodass es an Computer-A weitergeleitet wird. Gibt es jedoch eine bessere Lösung?
Es ist viel einfacher als das. Wenn der Client eine Verbindung zu einem Peer herstellt, gibt er an, welchen Port er verwenden möchte, sodass der Peer die Daten an diesen Port sendet.
Hmm, aber Bittorrent verändert das Verhalten des Routers nicht richtig? Woher weiß Computer-A, dass ein Routing-Mechanismus dynamisch sein kann, wie in superuser.com/a/187190/78897 gezeigt.
Der Client wirkt sich nicht direkt auf den Router aus, aber der Router kann so konfiguriert / intelligent sein, dass er sich an das Verhalten des Clients anpasst. Sie können aktivieren UPnP sowohl im Router und Client automatisch die Verbindung zu konfigurieren und die meisten Router haben Stateful - Inspection - Fähigkeiten als Teil ihres Port-Forwarding - Mechanismus.
Zusammenfassend bedeutet dies, dass eine Verbindung dynamisch an einem zufälligen Port hergestellt werden kann und der Router dann verfolgen kann, was passiert, anstatt alles als zufällige, bedeutungslose Verbindungen anzuzeigen. Auf diese Weise kann eine Verbindung bei Bedarf weitergeleitet werden, da es sich beispielsweise um eine Antwort auf diese andere Verbindung handelt, die gerade zustande gekommen ist .
Das Problem tritt auf, wenn Sie mehrere Systeme haben, die dasselbe Programm verwenden. Wenn mehrere Systeme mit demselben Router verbunden sind, dieselbe IP-Adresse verwenden und dynamische Ports verwenden, kann dies schnell nicht mehr verwaltet werden, und es ist schwierig, wenn nicht sogar unmöglich, die ordnungsgemäße Funktion zu gewährleisten. In diesem Fall müssen statische Ports (Standard oder anderweitig) verwendet werden.
Wenn Sie ein Programm wie SmartSniff oder TCPView zum Überwachen Ihrer Verbindungen verwenden, werden Sie feststellen, dass die P2P-Verbindungen normalerweise den von Ihnen konfigurierten Port (oder den Standard für den Client) als Ziel für eingehende Verbindungen haben und entweder den Standard- oder einen benutzerdefinierten / zufälliger Port für die Quelle und umgekehrt für ausgehende Verbindungen.
Ihre Frage berührt das Herz des Internets und die Definition des Routings. In Ihrem Beispiel sendet Router D Daten basierend auf zwei Voraussetzungen an Computer A:
In Ihrem Szenario wird anscheinend die erste Option angenommen: Router D möchte an Computer A senden. Aber wie gelangt er dorthin? Dies geschieht durch die Verwendung von Routingtabellen, die von Routern untereinander gemeinsam genutzt werden.
Router C sendet regelmäßig Aktualisierungen an alle Router, die über das Netzwerk "192.168" "Bescheid wissen (einschließlich Router D") ignorieren Sie das.) Router D weiß also bereits, dass Router C dieses Netzwerk kennt.
Wenn also Daten für Computer A bestimmt sind, werden sie zuerst vom Netzwerk adressiert. Also fragt Router D: "Ich muss das 192.168. * -Netzwerk finden. Weiß ich das? Nein. Kennt ich jemanden, der das tut? Ja. Router C tut das. Wie komme ich zu Router C? Über meinen 2.2. 2.2 Schnittstelle. "
Router D sendet die Daten dann an Router C. Router C empfängt sie und sagt: "Oh, ich habe Daten von Router D, aber es ist für das 192.168-Netzwerk. Kenne ich dieses Netzwerk? Ja, über mein 192.168.1.1-Netzwerk." Und dann leitet es weiter.
Es gibt noch einige andere Arbeiten, um die IP- und MAC-Adressierung aufzulösen, aber ich beschreibe das Routing per se, nicht ARP und lokales Netzwerk.
Sie werden feststellen, dass Ihre erste Annahme - der Remote-Router muss den Routing-Mechanismus kennen - hier nicht zum Tragen kommt. Router D ist es egal, ob Router C EIGRP, RIP, RIPv2, OSPF oder was auch immer verwendet. Alles was es interessiert ist, dass es ein Update hat. (Natürlich ist es wichtig , wie es zu einem Update kam, damit die beiden synchron bleiben. Aber auch das ist ein anderes Problem.)
Ihre zweite Annahme, dass die Portnummer ein Faktor für das Routing ist, ist ebenfalls falsch. Router benötigen (im Allgemeinen) keine Portinformationen, um Routing-Entscheidungen zu treffen. (Das hat sich aufgrund einiger neuer Netzwerktechnologien leicht geändert und gilt hauptsächlich für Firewalls und Proxys. Die allgemeinere Annahme gilt jedoch weiterhin für "echte" Router.)
Wenn Sie mit Ihrem Beispiel fortfahren, leitet Router C Daten an Port 1000 weiter (gemäß Ihrem Szenario), da möglicherweise ein Dienst auf Computer A Daten an diesem bestimmten Port erwartet. Dies ist jedoch nur möglich, weil Router D es an Port 1000 gesendet hat. Und Router D sendet es nur an diesem Port, weil der Urheber der Daten es an Router D an diesem Port gesendet hat.
Ich verstehe nicht, dass Ihre Aufnahme von Bittorrent- oder P2P-Programmen die von Ihnen gestellte Frage widerspiegelt. Die gleichen Erklärungen würden zutreffen. Router können auch mit einem Port-Trigger konfiguriert werden, der einem bestimmten Port ein bestimmtes Gerät (oder eine bestimmte IP-Adresse) zuordnet. Wenn der Datenverkehr an Port 1234 eingeht, können die Router Daten an Device ABCD senden. Dies ist normalerweise mit einem ausgehenden TCP-Port verbunden. Wenn ich also Datenverkehr über Port 7890 sende, weiß der Router, dass eingehender Datenverkehr über Port 1234 erfolgt, und sendet ihn an mich.
Port-Triggering ist jedoch nicht mit (Remote-) Routing-Entscheidungen verbunden, sondern bezieht sich auf die interne MAC / IP-Tabelle, die der Router für das LAN verwendet.
Aktualisieren / Bearbeiten : Zur weiteren Beantwortung und Bearbeitung Ihres Kommentars. Router D kennt Computer A nur über seine IP-Adresse (192.168.2.2). Router C kennt Computer A jedoch anhand seiner IP-Adresse und seiner MAC-Adresse. Die MAC (Media Access Control) ist eine eindeutige (normalerweise ...) 48-Bit-Kennung, die nach internationalem Standard definiert ist. Jedes an ein LAN angeschlossene Gerät (verkabelt und drahtlos) muss eine eindeutige MAC-Adresse haben.
Der Router (Router C) verknüpft die IP-Adresse und die MAC-Adresse in einer Tabelle (der MAC-Adressentabelle). Wenn also Datenverkehr in Router C eingeht und der Router erkennt, dass er "lokal" ist, führt er eine MAC-Adressentabellensuche durch. Der Router ändert dann buchstäblich die Frame-Adressierungsinformationen.
Es rekonstruiert (überschreibt) die Layer 2-Zielinformationen, um die Ziel-MAC-Adresse von Computer A zu erhalten, behält jedoch die IP-Adressinformationen (Layer 3) bei.
Wenn die Route die MAC-Adresse NICHT kennt. Oder hat es keine IP-MAC-Beziehung in der Tabelle, so etwas wie ein ARP (Address Resolution Protocol), um zu fragen: "Hey, alle in diesem Netzwerk. Haben Sie diese MAC-Adresse?" Oder manchmal - "Alle, wie lautet Ihre MAC-Adresse?"). Das entsprechende Gerät (die entsprechenden Geräte) antwortet und der Router erstellt seine IP-MAC-Tabelle.
quelle
Port-Triggering. Wie sendet Ihnen ein Webserver eine Webseite, nachdem Sie diese angefordert haben? Weil du es angefordert hast. Wenn Sie es anfordern, muss der Router eine Antwort erwarten, und wenn er sie erhält, leitet er sie an den entsprechenden PC weiter. Einige Programme sind so geschrieben, dass sie in Erwartung eines Signals von einem bestimmten PC ein Öffnen auslösen, auch wenn man nicht wirklich unterwegs ist.
Einige Modelle verfügen über einen zentralen Server für die grundlegende Kommunikation. Zum Beispiel:
Server kennt jetzt alle Dateien, die Client1 und Client2 haben.
Client1 hat den Router lediglich dazu gebracht, diesen Port für Client2 zu öffnen.
In einigen Fällen, z. B. bei BitTorrent oder dem ursprünglichen Napster (iirc), müssen Sie einen Port auf Ihrem Router weiterleiten, damit er optimal funktioniert.
Wenn andere Clients zunächst wissen, mit welchem Port sie sich verbinden sollen, hat Ihr Client dem Schwarm oder Server mitgeteilt, welchen Port Sie verwenden. BitTorrent verwendet häufig einen Tracker, der nachverfolgt, welche Ports von welchen Clients verwendet werden.
quelle