# DHCP (Dynamic Host Configuration Protocol)

Il `DHCP` (*Dynamic Host Configuration Protocol*) è un protocollo utilizzato per la configurazione automatica dei parametri di rete di un host, sia per IPv4 che per IPv6. Le informazioni fornite includono l'indirizzo IP, la netmask, il default gateway e i server DNS.

Il protocollo DHCP è basato su UDP (User Datagram Protocol) e utilizza le porte 67 (per i server DHCP) e 68 (per i client).

## Funzionamento del DHCP

Il DHCP opera in un modello client-server, dove uno o più client richiedono le configurazioni di rete a uno o più server DHCP:

1. **DHCP Discovery**: il client invia un pacchetto DHCP Discovery in broadcast sulla rete locale. Questo pacchetto è destinato a tutti i server DHCP presenti nella rete, che possono così ricevere la richiesta e formulare un'offerta di configurazione. Il `Transaction ID` viene utilizzato per identificare in modo univoco una transazione DHCP tra un client e un server, consentendo al client di abbinare le risposte dei server DHCP alle proprie richieste

2. **DHCP Offer**: ogni server DHCP che riceve il pacchetto Discovery elabora un'offerta di configurazione di rete e la invia al client. Il client potrebbe ricevere più offerte, a seconda del numero di server DHCP presenti nella rete, e dovrà scegliere quella più adatta alle sue esigenze. L'offerta viene sempre mandata in broadcast

3. **DHCP Request**: una volta scelta l'offerta, il client invia un pacchetto DHCP Request al server DHCP selezionato, informandolo dell'accettazione della sua offerta e richiedendo la conferma della disponibilità della configurazione

4. **DHCP Acknowledgment (ACK)**: il server DHCP risponde con un pacchetto DHCP Acknowledgment (ACK), confermando la disponibilità della configurazione e fornendo al client i parametri di rete necessari. Se la configurazione non fosse più disponibile, il server invia un pacchetto DHCP Negative Acknowledgment (NACK), e il processo ricomincia
