Anche se la domanda è stata interamente trattata. Sento che questo processo dovrebbe essere meglio descritto passo dopo passo.
Per questo esempio, mi siedo in una LAN privata connessa a Internet tramite un router. Poiché la nostra rete condivide un unico indirizzo IP pubblico, utilizziamo NAT.
Quindi quando richiedo la pagina superuser.com
che genererà molti pacchetti IP. Diamo un'occhiata a uno solo.
Origine pacchetto IP : 192.168.1.12
(il mio IP)
Destinazione: 64.34.119.12
(superuser.com)
Ora, molto probabilmente il mio sistema è impostato in modo simile a quello in questione. Ho il mio indirizzo IP ( 192.168.1.12
), una subnet mask ( 255.255.255.0
) e un gateway predefinito ( 192.168.1.1
). Ora, poiché il mio campo Destinazione nel mio pacchetto IP punta a una rete diversa dalla mia, viene inviato al mio gateway predefinito (anziché direttamente al computer).
Ma come può il pacchetto arrivare al gateway predefinito, se la Destinazione punta da qualche altra parte?
Ethernet
È facile, perché per questo utilizziamo l'indirizzamento del protocollo Ethernet. Abbiamo appena impostato il nostro indirizzo IP di destinazione nel pacchetto IP e l'indirizzo MAC del nostro gateway predefinito come destinazione nel frame Ethernet .
Ora questo assicurerà che il nostro gateway predefinito ottenga il pacchetto per superuser.com
. Sìì!
Ora il gateway ha il nostro pacchetto e potrebbe inviarlo direttamente sul suo percorso. Ma per essere sicuri che otterrà la risposta, è necessario prima di sostituire il pacchetto sorgente indirizzo (altrimenti superuser.com
avrebbe cercato di inviare la risposta ad alcuni (forse) dispositivo inesistente con il mio indirizzo IP sulla loro rete. Ora che non sarebbe molto bello.)
Quindi il mio router inserirà il suo indirizzo IP pubblico nel campo Origine :
Origine pacchetto IP : 92.69.127.243
(il mio IP pubblico)
Destinazione: 64.34.119.12
(superuser.com)
Ora lo stesso gioco continua all'infinito con tutti i router del mondo fino a quando il pacchetto arriva finalmente superuser.com
e viene generata una risposta.
La risposta
Rispondi a IP Packet
Source: 64.34.119.12
(superuser.com)
Destinazione: 92.69.127.243
(il mio IP pubblico)
Ok, la risposta è arrivata al mio router, e adesso? Come fa ora il mio router a inviare la risposta 192.168.1.12
?
TCP
Bene, in realtà funziona perché abbiamo esaminato solo le parti IP ed Ethernet della comunicazione. Ciò che rende questo lavoro è la parte TCP.
Molto probabilmente sai che i server web di solito vengono eseguiti sulla porta 80
. IP non ha nozioni di porte . Viene da TCP . In TCP abbiamo (come in IP) una fonte e destinazione di porta .
Il mio pacchetto TCP su superuser.com
Fonte: 192.168.1.12
(il mio IP)
Porta di origine: 11111
(la porta creata dal mio computer)
Destinazione: 64.34.119.12
(superuser.com)
Porta di destinazione:80
Quando il tuo router invia quel pacchetto iniziale (a cui è indirizzato superuser.com
sulla porta 80
), inserirà una nuova porta sorgente (come 12345
).
E questa è la parte importante! Ricorderà quella sostituzione!
Il pacchetto TCP del mio router su superuser.com
Fonte: 92.69.127.243
(il mio IP pubblico)
Porta di origine: 12345
(la porta creata dal mio router)
Destinazione: 64.34.119.12
(superuser.com)
Porta di destinazione:80
Quindi il pacchetto di risposta ricevuto dal router in realtà è simile al seguente:
Rispondi al pacchetto TCP da superuser.com
Fonte: 64.34.119.12
(superuser.com)
Porta di origine: 80
Destinazione: 92.69.127.243
(il mio IP pubblico)
Porta di destinazione: 12345
(la porta creata dal mio router)
Quindi ora ottiene quel pacchetto e vede che è per una porta che in precedenza ricordava è stata assegnata alle operazioni NAT per l'indirizzo IP 192.168.1.12
(il mio indirizzo IP).
Rispondi al pacchetto TCP dal mio router
Fonte: 64.34.119.12
(superuser.com)
Porta di origine: 80
Destinazione: 192.168.1.12
(il mio IP)
Porta di destinazione: 11111
(la porta creata dal mio computer)