Votre question touche au cœur d'Internet et à la définition même du routage. Dans votre exemple, le routeur D envoie des données à l'ordinateur A sur la base de deux prémisses:
- On lui a dit d'envoyer des données à l'ordinateur A.
- Il s'agit déjà de données traitées par l'ordinateur A.
Votre scénario semble supposer la première option - le routeur D veut envoyer à l'ordinateur A. Mais comment y parvient-il? Il le fait grâce à l'utilisation de tables de routage qui sont partagées par les routeurs entre eux.
Le routeur C envoie régulièrement des mises à jour à tous les routeurs qui savent - y compris le routeur D - qu'il "connaît" le réseau "192.168. *" (En réalité - cela ne se produirait pas parce que ce réseau n'est pas routé - il est considéré comme privé. Mais ignorer cela.) Ainsi, le routeur D sait déjà que le routeur C connaît ce réseau.
Ainsi, lorsque les données sont destinées à l'ordinateur A, elles sont d'abord traitées par le réseau. Ainsi, le routeur D demande: "J'ai besoin de trouver le réseau 192.168. *. Est-ce que je le connais? Non. Est-ce que je connais quelqu'un d'autre qui le sait? Oui. Le routeur C le fait. Comment puis-je accéder au routeur C? 2.2 interface. "
Le routeur D envoie ensuite les données au routeur C. Le routeur C les obtient et dit: "Oh, j'ai des données du routeur D mais c'est pour le réseau 192.168. Est-ce que je connais ce réseau? Oui, via mon réseau 192.168.1.1" Et puis le transmet.
Il y a un autre travail à faire pour résoudre l'adressage IP et MAC, mais je couvre le routage, en soi, pas ARP et le réseau local.
Vous remarquerez que votre première hypothèse - le routeur distant doit connaître le mécanisme de routage - ne joue pas ici. Le routeur D ne se soucie pas si le routeur C utilise EIGRP, RIP, RIPv2, OSPF ou autre. Tout ce qui importe, c'est qu'il a obtenu une mise à jour. (Bien sûr, comment il a obtenu une mise à jour est important pour s'assurer que les deux restent synchronisés. Mais encore une fois, c'est un problème différent.)
Votre deuxième hypothèse - que le numéro de port est un facteur de routage - est également incorrecte. Les routeurs (généralement) n'ont pas besoin d'informations sur les ports pour prendre des décisions de routage. (Cela a légèrement changé, en raison de certaines nouvelles technologies de réseau et s'applique principalement aux pare-feu et aux proxys, mais l'hypothèse plus large s'applique toujours aux "vrais" routeurs.)
Poursuivant votre exemple, le routeur C transmettra les données sur le port 1000 (selon votre scénario) car il est possible qu'un service sur l'ordinateur A attend des données sur ce port spécifique. Mais il ne sait le faire que parce que le routeur D l'a envoyé sur le port 1000. Et le routeur D ne l'envoie que sur ce port parce que l'expéditeur des données l'a envoyé au routeur D sur ce port.
Je ne comprends pas que votre inclusion de programmes bittorrent ou P2P reflète la question que vous posez. Les mêmes explications s'appliqueraient. Les routeurs peuvent également être configurés avec un déclenchement de port qui associe un périphérique particulier (ou IP) à un port particulier. De telle sorte que lorsque le trafic arrive sur le port 1234, les routeurs savent envoyer des données au périphérique ABCD. Ceci est généralement associé à un port TCP sortant. ie si j'envoie du trafic sur le port 7890, le routeur sait que le trafic entrant sera sur le port 1234 et me l'envoie.
Mais le déclenchement de port n'est pas associé à des décisions de routage (à distance) - il concerne plutôt la table MAC / IP interne que le routeur utilise pour le LAN.
Mettre à jour / modifier : Pour répondre davantage et élaborer après votre commentaire. Le routeur D ne connaît l'ordinateur A que par son adresse IP (192.168.2.2). Mais le routeur C connaît l'ordinateur A par son adresse IP et par son adresse MAC. Le MAC (Media Access Control) est un identifiant unique (généralement ...) de 48 bits qui est défini par une norme internationale. Chaque appareil connecté à un réseau local (filaire et sans fil) est censé avoir une adresse MAC unique.
Le routeur (routeur C) associe l'adresse IP et l'adresse MAC ensemble dans une table (la table d'adresses MAC). Ainsi, lorsque le trafic arrive sur le routeur C et que le routeur y réalise son "local", il effectue une recherche dans la table d'adresses MAC. Le routeur modifie alors littéralement les informations d'adressage de trame.
Il reconstruit (réécrit) les informations de destination de la couche 2 pour avoir l'adresse MAC de destination de l'ordinateur A mais conserve les informations d'adresse IP (couche 3) pour qu'elles soient identiques.
Si l'itinéraire ne connaît PAS l'adresse MAC. Ou n'a pas de relation IP-MAC dans sa table, il fait quelque chose appelé ARP (protocole de résolution d'adresse) pour demander "HEY, tout le monde sur ce réseau. Avez-vous cette adresse MAC?" Ou parfois - "Tout le monde, quelle est votre adresse MAC?"). Le ou les périphériques appropriés répondent et le routeur crée sa table IP-MAC.