Il y a une idée fausse générale entre NAT (traduction d'adresse réseau) et PAT (traduction d'adresse de port), qui est ce que nous utilisons principalement dans nos routeurs domestiques.
NAT
Supposons que nous avons un réseau avec la topologie suivante:
Private_Network <-------> Routeur <-------> The_Internet
L'interface du routeur connecté au réseau privé a une adresse IP privée , c'est-à-dire qui n'est pas unique dans The_Internet . D'un autre côté, dans le cas de NAT , le routeur a plusieurs interfaces connectées à The_Internet . Chaque interface possède une adresse IP unique dans The_Internet . Supposons maintenant que Host_A et Host_B sont dans le Private_Network et qu'ils veulent tous les deux accéder à Website_X dans The_Internet en même temps. Les adresses IP et les ports de Host_ALe paquet sera:
Source IP: Host_A 'IP privé s
Source Port: Port A sur Host_A
IP de destination: Website_X ' public / IP unique du
port de destination: Un port où Website_X serveur d » écoute
et de la même manière pour un paquet provenant de Host_B .
Si l'adresse IP source reste inchangée, Website_X répondra à une adresse IP qui est privée, c'est-à-dire non unique, et donc le paquet ne pourra jamais retrouver son chemin. Afin de résoudre ce problème, le routeur vérifie si l'une de ses adresses IP uniques connectées à The_Internet n'est pas utilisée. Si tel est le cas, il effectue le mappage suivant:
Host_A ======= IP privée » Router's_unique_IP_K
et maintenant le paquet qui a commencé à partir de Host_A va vers Website_X et qui quitte maintenant l'interface du routeur connecté à The_Internet aura la forme:
Source IP: Router's_unique_IP_K
Source Port: port A sur Host_A
IP de destination: Website_X 'public / IP unique du
port de destination: Un port où Website_X ' s serveur écoute
Ainsi, vous pouvez comprendre qu'il existe une association un à un des adresses IP privées aux adresses IP publiques. Par conséquent, lorsqu'un paquet arrive de Website_X au routeur , cette association est vérifiée et l'adresse IP de destination est redéfinie sur l' adresse privée et remise avec succès à l'hôte approprié.
Comme vous pouvez le voir, cette méthode est assez simple, mais elle a un gros inconvénient: chaque hôte privé doit avoir une adresse IP unique réservée, ce qui est cher, nous choisissons donc d'avoir moins d'adresses IP uniques que les hôtes du réseau privé. Par conséquent, si tous les hôtes privés tentent d'accéder à The_Internet en même temps, seul un sous-ensemble d'entre eux, égal au nombre d'adresses IP publiques disponibles que le routeura, aura accès et le reste sera refusé.
Afin de contrer cela, nous avons créé PAT .
PAT
PAT est ce que la grande majorité de nos routeurs domestiques utilise. La limitation de base est que le routeur a une seule adresse IP unique avec laquelle il se connecte à The_Internet , mais nous voulons toujours autoriser plusieurs hôtes du réseau privé à accéder à The_Internet en même temps.
La façon dont nous le faisons est "similaire" à la façon dont NAT le fait avec une différence clé: au lieu que le routeur détienne un pool d'adresses IP, il détient un pool de numéros de port. Plus précisément, un paquet arrivant au Routeur depuis Host_A dans le Private_Network destiné à Website_X dansThe_Internet aura le format suivant:
Source IP: Host_A 'IP privé s
Source Port: Port A sur Host_A
IP de destination: Website_X ' public / IP unique du
port de destination: Un port où Website_X serveur d » écoute
Maintenant, le routeur effectuera deux tâches:
- Il changera l'IP source en IP publique unique du routeur ET
- Il changera le port source en un port d'un pool que le routeur gère et n'est pas déjà utilisé, par exemple Port_Z
et maintenant le paquet qui a commencé à partir de Host_A va vers Website_X et qui quitte maintenant l'interface du routeur connecté à The_Internet aura la forme:
Source IP: Router's_unique_IP_K
Source Port: Port_Z
Destination IP: Website_X 's public / IP unique
port de destination: Un port où Website_X ' s serveur écoute
et le routeur conservera le mappage suivant:
IP privée de Host_A ET un port sur Host_A ======= Port_Z
Pourquoi ça marche?
Maintenant, quand un paquet revient, le routeur vérifie simplement le numéro de port de destination et modifie l'adresse IP de destination et le numéro de port de destination en fonction du mappage précité et le paquet est livré avec succès.
Que faire si j'exécute plusieurs applications sur le même hôte?
Différentes applications auront des ports différents, par définition, donc elles seront mappées à un port différent du routeur .
Que faire si plusieurs hôtes tentent d'accéder à The_Internet en même temps et utilisent tous la même application?
Différents hôtes auront différentes adresses IP privées, par définition, ils seront donc mappés sur un port différent du routeur .
PAT s'équilibre dangereusement dans un espace gris de couches croisées. Les numéros de port font partie du protocole de transport tandis que les routeurs sont autorisés à fonctionner jusqu'au protocole Internet. Donc, techniquement parlant, c'est quelque chose qui n'est pas autorisé par les protocoles. Il existe donc, au moins théoriquement, des dangers potentiels: le pool de ports est limité. Par conséquent, si mon réseau privé se compose de 1 000 hôtes et que chacun exécute des applications port_pool / 10, la table de mappage sur le routeur sera à court d'entrées disponibles et l'accès aux applications sera refusé.
Cette réponse a largement dépassé ma longueur prévue, mais j'espère que cela a été utile.