# IPv4 e NAT/PAT

## Differenza tra IP Pubblici e Privati

Gli indirizzi IP pubblici e privati hanno ruoli distinti nella comunicazione di rete. Un IP pubblico consente a un dispositivo di uscire da una rete locale (LAN) e comunicare con altre reti globali. Al contrario, un IP privato non è univoco a livello globale e viene utilizzato all'interno di una LAN. Gli indirizzi IP privati sono riservati per l'uso interno e non possono essere instradati su Internet.

## Limitazioni di IPv4

Il protocollo IPv4 consente un massimo di 2^32 indirizzi, che corrisponde a circa 4 miliardi di possibili combinazioni. Questo numero, sebbene sembri elevato, è limitato a livello globale e ha portato a preoccupazioni riguardo l'esaurimento degli indirizzi IPv4. La soluzione definitiva a questo problema è la transizione a IPv6, che offre un numero praticamente illimitato di indirizzi (2^128). Tuttavia, la transizione a IPv6 è lenta e complessa.

Una soluzione temporanea, che non risolve definitivamente il problema ma ne attenua gli effetti, è la distinzione tra indirizzi IPv4 pubblici e privati. Gli indirizzi IP privati consentono la comunicazione all'interno di reti locali, mentre il Network Address Translation (NAT) è il meccanismo che consente di associare indirizzi IP privati a un indirizzo IP pubblico. Questo approccio consente di risparmiare sull'uso degli indirizzi IP, poiché diverse reti possono utilizzare gli stessi indirizzi IP privati, ma solo un singolo indirizzo IP pubblico per comunicare con l'esterno.

## Tipi di NAT

Il NAT classico è un processo gestito dai router e consiste nella traduzione degli indirizzi IP privati in pubblii (e viceversa). Esistono due principali varianti di NAT:

- **NAT Statico**: In questo caso, l'amministratore di rete configura manualmente il router per associare un determinato indirizzo IP privato a un indirizzo IP pubblico specifico

- **NAT Dinamico**: Questa variante offre un maggiore automatismo, utilizzando un pool di indirizzi IP pubblici. Quando un dispositivo interno richiede accesso a Internet, il router assegna dinamicamente un indirizzo IP pubblico disponibile dal pool

Con il NAT classico, un host deve attendere il proprio turno per comunicare. Quando un dispositivo all'interno della LAN invia un pacchetto verso Internet, il router traduce l'indirizzo IP privato del dispositivo in un indirizzo IP pubblico. Tuttavia, se più dispositivi tentano di comunicare contemporaneamente utilizzando lo stesso indirizzo IP pubblico, il router deve tenere traccia di quale pacchetto appartiene a quale dispositivo.

Nel NAT classico, non esiste un meccanismo per identificare univocamente i pacchetti provenienti da diversi dispositivi che utilizzano lo stesso indirizzo IP pubblico. Senza un sistema di identificazione univoca, il router potrebbe confondersi nel determinare quale pacchetto di risposta inviare a quale dispositivo.

## NAT/PAT

Per migliorare l'efficienza del NAT, si utilizza il Port Address Translation (PAT). L'associazione tra indirizzo IP e porta consente di identificare univocamente ciascun dispositivo, evitando la necessità di turni per l'uso dell'indirizzo IP pubblico.

Il PAT viene sempre implementato a livello del router, che mantiene una tabella di NAT contenente ogni associazione univoca. Quando un pacchetto di risposta ritorna, il router utilizza questa tabella per inviare il pacchetto al dispositivo corretto, effettuando la traduzione inversa dell'indirizzo.
