La plupart des routeurs domestiques utilisent un cas particulier de NAT appelé PAT.
Vous verrez également qu'il est appelé NAPT ou IP Masquerading. Les trois derniers termes signifient la même chose en usage général. (Les acronymes - traduction d'adresse réseau / traduction d'adresse de port / traduction de port d'adresse réseau)
Lorsque le paquet sort de votre machine interne, l'adresse source est réécrite comme vous le savez. Le port source est également modifié, généralement en un nombre élevé, et le routeur conserve une table de traduction d'adresses.
Par exemple, disons que vous avez un ordinateur client qui va sur www.google.com. Votre ordinateur (par exemple, 192.168.1.100) recherche l'adresse et établit une connexion TCP vers 72.14.204.147 sur le port 80 à partir de votre adresse IP interne, à l'aide d'un port source aléatoire.
Pour votre ordinateur, la connexion ressemble à ceci:
192.168.1.100:37641 <--> 72.14.204.147:80
Votre ordinateur envoie le paquet au routeur, qui sélectionne un nouveau port haut aléatoire et réécrit le paquet. Chaque connexion sortante obtient son propre port sur le routeur. Le routeur transmet ensuite le paquet à votre fournisseur de services Internet après l'avoir ajouté à sa table de connexion:
PrivateIP PrivatePort PublicIP PublicPort Remote RemotePort
------------- ---------- ----------- ----------- ---------- -----------
192.168.1.100 37641 *10.6.23.5 59273 72.14.204.147 80
* À titre d'exemple, j'ai utilisé une adresse commençant par 10, mais celles-ci ne sont pas publiquement routables. La table est aussi un peu simpliste.
Pour google, la connexion ressemble à ceci:
10.6.23.5:59273 <--> 72.14.204.147:80
Google enverra sa réponse au 10.6.23.5 sur le port 59273. Votre routeur recherchera ensuite ces informations dans la table et transmettra le paquet à 192.168.1.100:37641.
www.google.com
me trouverait si je ne lui envoyais pas une demande initiale. En d'autres termes, les messages ne peuvent me parvenir via le routeur que si j'ai initialement envoyé une demande via le routeur