L'assegnazione di un indirizzo IP ad un calcolatore può essere manuale, o automatizzata da protocolli come [[DHCP]] o gli obsoleti [[BOOTP]] e [[RARP]].
== Funzionamento ==
=== Host ===
Un host è un calcolatore che utilizza una rete IP. Un host ha normalmente una interfaccia attiva, configurata con un '''indirizzo IP''' (configurato manualmente oppure ricevuto tramite protocolli automatici come [[DHCP]] o [[Point-to-Point Protocol|PPP]]). Questo indirizzo è caratterizzato da una '''[[maschera di sottorete]]''', che permette di calcolare se un altro indirizzo IP appartiene alla stessa [[sottorete]] oppure no. Inoltre lo strato IP è configurato con l'indirizzo IP del '''[[gateway (informatica)|gateway]]'''.
=== Instradamento ===
Estratto l'indirizzo IP dal pacchetto (datagramma IP), mettendo in AND l'indirizzo IP e la subnet-mask si ottiene l'indirizzo di Net_Id che individua la sottorete di destinazione: se tale indirizzo coincide con quello dell'interfaccia del router si ha ''[[instradamento]] diretto'' all'interno della stessa sottorete dopo risoluzione IP/MAC tramite [[Address Resolution Protocol|protocollo ARP]], se invece la Net_ID calcolata non corrisponde a nessuna interfaccia del router verso le rispettive sottoreti interconnesse, dopo l'indirizzamento ottenuto tramite consultazione della [[routing table|tabella di routing]], si ha ''instradamento indiretto'' ovvero il router utilizza l'''instradamento diretto'' (locale) di livello 2 tramite protocollo ARP per inviare il pacchetto verso il [[gateway (informatica)|gateway]] o il successivo [[router]] (''next hop'') il quale procederà per successivi salti di instradamento fino alla sottorete di destinazione sempre seguendo le informazioni di instradamento contenute nelle tabelle di routing dei rispettivi router, a loro volta create e aggiornate dinamicamente dai [[protocolli di routing]].
Suddividere l'instradamento in due parti distinte, instradamento per sottorete (Net_Id) e instradamento finale per host (Host_Id), fa parte dunque del piano gerarchico di instradamento secondo IP e ha fondamentalmente ragioni pratico-implementative oltre che di efficienza: non sarebbe infatti possibile instradare pacchetti unicamente secondo l'intero indirizzo IP (o anche l'indirizzo MAC) dell'host in quanto le tabelle di routing avrebbero dimensioni ingestibili da parte dei processi di elaborazione sui router. A tale problema si aggiunge inoltre il fatto che gli indirizzi IP Host_Id sono molto spesso assegnati in maniera dinamica.
=== [[Gateway (informatica)|Gateway]] o [[Router]] ===
Questi dispositivi possiedono più interfacce e collegano tra loro sottoreti diverse, inoltrando pacchetti IP da una all'altra. Per decidere su quale interfaccia inviare un pacchetto ricevuto, cercano l'indirizzo destinazione del pacchetto in una tabella di routing, che nei casi non banali viene gestita dinamicamente tramite uno o più [[Protocolli di routing]].