Même si la question a été entièrement couverte. Je pense que ce processus devrait être décrit étape par étape.
Pour cet exemple, je suis assis dans un LAN privé connecté à Internet via un routeur. Parce que notre réseau partage une seule adresse IP publique, nous utilisons NAT.
Ainsi, lorsque je demande la page superuser.com
qui générera de nombreux paquets IP. Regardons un seul.
Source du paquet IP : 192.168.1.12
(mon IP)
Destination: 64.34.119.12
(superuser.com)
Maintenant, mon système est probablement configuré comme celui en question. J'ai ma propre adresse IP ( 192.168.1.12
), un masque de sous-réseau ( 255.255.255.0
) et une passerelle par défaut ( 192.168.1.1
). Maintenant, comme mon champ de destination dans mon paquet IP pointe vers un réseau différent du mien, il est envoyé à ma passerelle par défaut (plutôt qu'à l'ordinateur directement).
Mais comment le paquet peut-il accéder à la passerelle par défaut, si la destination pointe complètement ailleurs?
Ethernet
C'est facile, car nous utilisons l'adressage du protocole Ethernet pour cela. Nous venons de définir notre adresse IP de destination dans le paquet IP et l'adresse MAC de notre passerelle par défaut comme destination dans la trame Ethernet .
Maintenant, cela garantira que notre passerelle par défaut reçoit le paquet superuser.com
. Yay!
Maintenant, la passerelle a notre paquet et pourrait l'envoyer directement sur son chemin. Mais pour s'assurer qu'il obtiendra la réponse, il doit d'abord remplacer l' adresse source du paquet (sinon superuser.com
, j'essaierais d'envoyer la réponse à un appareil (éventuellement) inexistant avec mon adresse IP sur leur réseau. Maintenant, ce ne serait pas très agréable.)
Mon routeur placera donc son adresse IP publique dans le champ Source :
Source du paquet IP : 92.69.127.243
(mon adresse IP publique)
Destination: 64.34.119.12
(superuser.com)
Maintenant, ce même jeu continue encore et encore avec tous les routeurs du monde jusqu'à ce que le paquet arrive enfin superuser.com
et qu'une réponse soit générée.
La réponse
Réponse IP Packet
Source: 64.34.119.12
(superuser.com)
Destination: 92.69.127.243
(mon IP publique)
Ok, la réponse est arrivée à mon routeur, et maintenant? Comment mon routeur sait-il maintenant envoyer la réponse 192.168.1.12
?
TCP
Eh bien, cela fonctionne réellement parce que nous n'avons examiné que les parties IP et Ethernet de la communication. Ce qui fait que cela fonctionne, c'est la partie TCP.
Vous savez très probablement que les serveurs Web fonctionnent généralement sur le port 80
. IP n'a aucune notion de ports . Cela vient de TCP . En TCP, nous avons (comme en IP) un port source et de destination .
Mon paquet TCP vers superuser.com
Source: 192.168.1.12
(mon IP)
Port source: 11111
(le port créé par mon ordinateur)
Destination: 64.34.119.12
(superuser.com)
Port de destination:80
Lorsque votre routeur envoie ce paquet initial (qui est adressé au superuser.com
port 80
), il y mettra un nouveau port source (comme 12345
).
Et c'est la partie importante! Il se souviendra de ce remplacement!
Paquet TCP de mon routeur vers superuser.com
Source: 92.69.127.243
(mon IP publique)
Port source: 12345
(le port créé par mon routeur)
Destination: 64.34.119.12
(superuser.com)
Port de destination:80
Ainsi, le paquet de réponses reçu par le routeur ressemble en fait à ceci:
Répondre au paquet TCP de superuser.com
Source: 64.34.119.12
(superuser.com)
Port source: 80
Destination: 92.69.127.243
(mon IP publique)
Port de destination: 12345
(le port que mon routeur a constitué)
Alors maintenant, il obtient ce paquet et voit que c'est pour un port dont il se souvenait précédemment a été affecté aux opérations NAT pour l'adresse IP 192.168.1.12
(mon adresse IP).
Répondre au paquet TCP depuis mon routeur
Source: 64.34.119.12
(superuser.com)
Port source: 80
Destination: 192.168.1.12
(mon IP)
Port destination: 11111
(le port que mon ordinateur a créé)