La maggior parte dei router domestici utilizza un caso speciale di NAT chiamato PAT.
Lo vedrai anche indicato come NAPT o IP Masquerading. Tutti e tre questi ultimi termini significano la stessa cosa in uso generale. (Gli acronimi: traduzione dell'indirizzo di rete / traduzione dell'indirizzo di porta / traduzione della porta di indirizzo di rete)
Quando il pacchetto esce dal computer interno, l'indirizzo di origine viene riscritto come ben sapete. Anche la porta di origine viene modificata, di solito in un numero elevato, e il router mantiene una tabella di traduzione degli indirizzi.
Ad esempio, supponiamo che tu abbia un computer client che va su www.google.com. Il tuo computer (ad esempio 192.168.1.100) cerca quell'indirizzo e crea una connessione TCP a 72.14.204.147 sulla porta 80 dal tuo indirizzo IP interno, usando una porta di origine casuale.
Al tuo computer, la connessione è simile alla seguente:
192.168.1.100:37641 <--> 72.14.204.147:80
Il computer invia il pacchetto al router, che seleziona una nuova porta alta casuale e riscrive il pacchetto. Ogni connessione in uscita ottiene la propria porta sul router. Il router inoltra quindi il pacchetto all'ISP dopo averlo aggiunto alla sua tabella di connessione:
PrivateIP PrivatePort PublicIP PublicPort Remote RemotePort
------------- ---------- ----------- ----------- ---------- -----------
192.168.1.100 37641 *10.6.23.5 59273 72.14.204.147 80
* Ad esempio, ho usato un indirizzo che inizia con 10, ma questi non sono instradabili pubblicamente. Anche la tabella è in qualche modo semplificata.
Per google, la connessione è simile alla seguente:
10.6.23.5:59273 <--> 72.14.204.147:80
Google invierà la sua risposta al 10.6.23.5 sulla porta 59273. Il router quindi cerca tali informazioni nella tabella e inoltra il pacchetto a 192.168.1.100:37641.
www.google.com
troverebbe se non avessi inviato una richiesta iniziale. In altre parole, i messaggi possono raggiungermi tramite il router solo se inizialmente ho inviato una richiesta tramite il router