Internet Protocol: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Riportata alla revisione precedente di Iron Bishop |
fix |
||
(432 versioni intermedie di oltre 100 utenti non mostrate) | |||
Riga 1:
{{F|protocolli di rete|febbraio 2021}}
'''Internet Protocol''' ('''IP'''), in [[telecomunicazioni]] e [[informatica]], è un [[protocollo di rete]], che si occupa di indirizzamento/[[instradamento]], appartenente alla [[suite di protocolli Internet|suite di protocolli Internet TCP/IP]] su cui è basato il funzionamento della rete [[Internet]].
== Descrizione ==
È un protocollo di ''interconnessione di reti'' (''Inter''-''Net''working ''Protocol''), classificato al [[livello di rete]] (3) del [[modello ISO/OSI]], nato per interconnettere reti eterogenee per tecnologia, prestazioni, gestione, pertanto implementato sopra altri protocolli di [[Livello di collegamento dati|livello collegamento dati]] (2).
È un protocollo a [[pacchetto (reti)|pacchetti]] [[comunicazione senza connessione|senza connessione]] e di tipo [[best effort]], che non garantisce cioè alcuna forma di affidabilità della comunicazione in termini di [[controllo di errore]], [[controllo di flusso]] e [[controllo della congestione|controllo di congestione]], che può essere invece realizzata dai [[livello di trasporto|protocolli di trasporto]] di livello superiore (livello 4), come [[Transmission Control Protocol|TCP]].
Correntemente sono usate due versioni del protocollo IP, l'originaria [[IPv4|versione 4]] e la più recente [[IPv6|versione 6]], nata dall'esigenza di gestire meglio il crescente numero di dispositivi ([[host]]) connessi ad [[Internet]].
=== Compiti e funzioni ===
[[File:UDP encapsulation.svg|thumb|upright=1.2|Esempio di incapsulazione dei dati da [[User Datagram Protocol|UDP]] a un Link protocol frame]]
Il principale compito di IP è l'Indirizzamento e l'[[instradamento]] ([[commutazione (telecomunicazioni)|commutazione]]) tra sottoreti eterogenee, che a livello locale utilizzano invece un indirizzamento proprio, tipicamente basato sull'indirizzo fisico o [[indirizzo MAC]] e protocolli di [[livello datalink]] (2) del modello ISO-OSI (es. [[Ethernet]], [[Token ring]], [[Token bus]]). Per far ciò è necessario assegnare un nuovo piano di indirizzamento a cui tutte le sottoreti devono sottostare per poter comunicare e [[interoperabilità|interoperare]] tra loro: tale piano è rappresentato proprio dal Protocollo IP. Questo comporta infatti:
* l'assegnazione a ciascun terminale che ne fa richiesta (cioè si connette alla rete Internet) di un nuovo diverso indirizzo, univocamente associato all'indirizzo MAC locale, detto [[Indirizzo IP]] (tramite protocolli [[RARP]], [[Bootstrap Protocol|BOOTP]] o [[DHCP]]);
* la definizione delle modalità o procedure tese a individuare il percorso di rete per interconnettere due qualunque sottoreti durante una comunicazione tra [[host]] sorgente di una certa sottorete e host destinatario di un'altra sottorete, cui l'indirizzo IP appartiene. La conoscenza di questo percorso di rete comporta a sua volta l'assegnazione e la conoscenza dell'indirizzo IP a ciascun [[router|commutatore]] (router) che collega la rete dell'host emittente con quella dell'host destinatario, cioè quindi la conoscenza della sequenza di tutti i [[router]] di tutte le sottoreti da attraversare.
In sostanza dunque IP rappresenta la "colla" che unisce tra loro tutte le varie sottoreti eterogenee, a livello di indirizzamento\instradamento, permettendone il dialogo o scambio di informazioni tra loro cioè l'interlavoro (''internetworking'') o [[interoperabilità]] in fatto di trasmissione. Rimane invece compito delle singole sottoreti occuparsi di instradare, tramite i protocolli locali di livello 2, verso il successivo commutatore se la rete locale attraversata è solamente una rete di transito lungo il percorso verso un'altra sottorete di destinazione, oppure instradare verso l'Indirizzo MAC locale dell'host destinatario, cui è associato l'indirizzo IP destinatario, se la sottorete è la sottorete finale risolvendo l'indirizzo IP dell'host in indirizzo MAC tramite protocollo [[Address Resolution Protocol|ARP]]. Sotto questo punto di vista (che coincide con la nascita e lo sviluppo storico di Internet) si parla comunemente di integrazione nell'[[architettura di rete|architettura logico-protocollare]] delle sottoreti del protocollo IP.
In generale dunque l'instradamento in Internet può essere ''diretto'' (o locale) (''direct forwarding'') se deve essere attraversata una sola sottorete fisica cioè l'host destinatario fa parte della stessa sottorete dell'host sorgente oppure ''indiretto'' (''indirect forwarding'') se devono essere attraversate più di una sottorete ovvero se l'host destinatario non appartiene alla stessa sottorete dell'host sorgente. Per quanto detto precedentemente quest'ultimo tipo di indirizzamento altro non è che una successione di instradamenti diretti.
Anche se l'indirizzamento indiretto altro non è che una successione di instradamenti diretti tramite i protocolli locali di trasporto di livello 2, in generale operare un indirizzamento di livello 3 tramite i soli indirizzi MAC, pur essendo questi univoci per ciascun terminale host, non sarebbe stato possibile perché essi non danno vita ad un piano di indirizzamento gerarchico cioè gli indirizzi MAC, il cui assegnamento è pseudo-casuale, non sono raggruppabili in sottoreti con lo stesso prefisso identificativo come invece lo sono gli indirizzi Host_IP.
In altri termini esisterebbero notevoli problemi di [[scalabilità]] nell'implementare tabelle di instradamento indicizzate non per identificativi di sottoreti (Net_ID), ma per ciascun indirizzo MAC esistente.
== Indirizzo IP ==
{{vedi anche|Indirizzo IP}}
All'interno di una [[reti di calcolatori|rete]] IP, ad ogni ''[[interfaccia (informatica)|interfaccia]]'' connessa alla rete fisica viene assegnato un [[indirizzo IP|indirizzo]] univoco.
L'indirizzo IP è assegnato propriamente all'interfaccia (ad esempio una [[scheda di rete]]) e non all'[[host]], perché è questa ad essere connessa alla rete. Un [[router]], ad esempio, ha diverse interfacce e per ognuna occorre un indirizzo IP.
=== Indirizzi IP e nomi DNS ===
Gli indirizzi IP sono numeri, e come tali non sono facili da ricordare per la maggior parte degli esseri umani. Il problema diventa ancora più serio con IPv6 che ha una stringa di indirizzamento di 128 bit anziché i consueti 32 di IPv4. Per questa ragione, spesso ad un indirizzo IP viene associato un nome simbolico [[DNS]].
=== Indirizzi IP ed indirizzi MAC ===
I protocolli di collegamento, al livello 2 del modello [[ISO]]/[[Modello OSI|OSI]], indirizzano i calcolatori utilizzando il [[indirizzo MAC|MAC address]].
Quando su una rete locale si utilizza IP, ad ogni calcolatore deve essere assegnato anche un indirizzo IP, per permettergli di comunicare con i calcolatori al di fuori della sua rete locale.
La corrispondenza tra indirizzo IP e MAC address è gestita tramite il protocollo [[Address Resolution Protocol|ARP]], che permette di conoscere il MAC address di un computer dato il suo indirizzo IP tramite un'interrogazione distribuita.
L'assegnazione di un indirizzo IP ad un calcolatore può essere manuale, o automatizzata da protocolli come [[DHCP]] o gli obsoleti [[BOOTP]] e [[RARP]].
== Pacchetto IP ==
{{vedi anche|IPv4|IPv6}}
Nel pacchetto IP, cioè la sua [[Protocol Data Unit|PDU]] detta anche ''datagramma'', i campi più importanti sono:
* ''Header Length'': lunghezza dell'header;
* ''Total Length'': Lunghezza totale del pacchetto IP;
* ''TOS'': gestione priorità e QoS;
* ''Protocol number'': Questo campo indica quale protocollo di alto livello è stato usato per creare le informazioni immagazzinate nella porzione di dati del pacchetto;
* ''Time-to-live'': Tempo di vita del pacchetto. Il TTL è un numero che viene decrementato ogni volta che il pacchetto IP percorre un [[Nodo (telecomunicazioni)|nodo di rete]] fino ad arrivare a zero. Se il TTL arriva a zero vuol dire che il pacchetto non è riuscito ad arrivare a destinazione ed è stato scartato per evitare di appesantire il traffico inutilmente; si utilizza per evitare possibili cicli infiniti di instradamento.
* ''Identification'': identifica in modo univoco tutti i frammenti di un pacchetto;
* ''Fragment Offset'': indica il numero di byte di dati presenti nel pacchetto ad esso precedente. Se il frammento è il primo o univoco è uguale a 0;
* ''Header Checksum'': checksum in complemento a 1;
* ''Source IP address'': Indirizzo IP del mittente;
* ''Destination IP address'': Indirizzo IP del destinatario;
* ''Padding'': bit riempitivi (0) per riallinearsi su multipli di 32 bit;
* ''Data'': dati da inviare ([[Carico utile (informatica)|carico utile]]).
== 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 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]].
== Visualizzare la configurazione IP ==
La maggior parte dei sistemi operativi offrono soluzioni, via [[shell (informatica)|shell]] o applicativi dedicati anche grafici, per visualizzare la configurazione IP del proprio computer.
Alcuni esempi a riga di comando sono:
* Windows:
** ipconfig
** Get-NetIPConfiguration (su [[PowerShell]])
* Linux:
** [[ifconfig]] (deprecato)
** ip
== Bibliografia ==
* {{IETF|791|Internet Protocol Specification}}
* {{IETF|1918|Address Allocation for Private Internets}}
== Voci correlate ==
* [[IPv4]]
* [[IPv6]]
* [[IP spoofing]]
* [[Indirizzo IP]]
* [[Protocollo di rete]]
* [[Protocollo di routing]]
* [[Rete internet]]
== Altri progetti ==
{{interprogetto|preposizione=sull'|wikt=IP|wikt_etichetta=IP}}
== Collegamenti esterni ==
* {{FOLDOC}}
* {{cita web|lingua=en|url=https://www.cloudflare.com/learning/network-layer/internet-protocol/|titolo=What is the Internet Protocol?|sito=[[Cloudflare]]|accesso=31 gennaio 2024}}
{{IPstack}}
{{Controllo di autorità}}
{{portale|informatica|internet|telematica}}
[[Categoria:Standard Internet]]
[[Categoria:Internet Protocol]]
|