Internet Protocol: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
fix
 
(419 versioni intermedie di oltre 100 utenti non mostrate)
Riga 1:
{{F|protocolli di rete|febbraio 2021}}
L<nowiki>'</nowiki>'''Internet Protocol''' ('''IP''') è un [[protocollo]] di rete a pacchetto; secondo la classificazione [[ISO]]/[[OSI]] è di livello rete (3).
 
'''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]].
La versione correntemente usata del protocollo IP è detta anche [[IPv4]] per distinguerla dalla più recente [[IPv6]], nata dall'esigenza di gestire meglio il crescente numero di [[computer]] connessi ad [[Internet]].
 
== Descrizione ==
IP è un protocollo di ''interconnessione di reti'' (''Inter''-''Net''working ''Protocol''), nato per interconnettere reti eterogenee per tecnologia, prestazioni, gestione.
È 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]].
I protocolli di trasporto utilizzati su IP sono soprattutto [[TCP]] e [[UDP]].
 
=== Compiti e funzioni ===
==Indirizzo IP==
[[File:UDP encapsulation.svg|thumb|upright=1.2|Esempio di incapsulazione dei dati da [[User Datagram Protocol|UDP]] a un Link protocol frame]]
All'interno di una [[reti di calcolatori|rete]] ad ogni macchina viene assegnato un indirizzo univoco, in modo da rendere possibili le comunicazioni tra un computer e l'altro.
 
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:
===Indirizzi IP ed indirizzi MAC===
* 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.
I protocolli di collegamento, al livello 2 del modello [[OSI|ISO/OSI]], indirizzano i calcolatori utilizzando il [[indirizzo MAC|MAC address]].
 
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.
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.
 
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.
La corrispondenza tra indirizzo IP e MAC address è gestita tramite il protocollo [[ARP]], che permette di conoscere il MAC address di un computer dato il suo indirizzo 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 ==
L'assegnazione di un indirizzo IP ad un calcolatore può essere manuale, o automatizzata da protocolli come [[DHCP]] o i più desueti [[BOOTP]] e [[RARP]].
{{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.
===IPv4===
L'indirizzo IPv4 è formato da 32 bit; viene descritto con 4 numeri [[Sistema numerico decimale|decimali]] rappresentati su 1 [[byte]] (quindi ogni numero varia tra 0 e 255) separati dal simbolo "punto"; un esempio di indirizzo IPv4 è 192.0.34.166.
 
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.
===Reti e Host===
 
=== Indirizzi IP e nomi DNS ===
Un indirizzo IP è diviso in due parti: la prima indica la [[sottorete]] a cui appartiene l'indirizzo, l'altra indica l'host all'interno della sottorete. Se un host deve comunicare con un altro host della stessa sottorete, userà il protocollo di livello 2 della rete a cui è collegato, altrimenti dovrà inviare i pacchetti ad un [[router|gateway o router]], che sarà connesso ad altre reti e si occuperà di inotrare i pacchetti ricevuti.
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 ===
Per indicare quali bit fanno parte dell'indirizzo di sottorete e quali fanno parte dell'indirizzo dell'host, si usa la [[maschera di sottorete]] (subnet mask), che a sua volta è un numero a 32 bit rappresentato come un indirizzo IP.
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.
I bit che nella maschera di sottorete sono a 1 fanno parte dell'indirizzo della sottorete, gli altri sono l'indirizzo dell'host. Normalmente, la maschera di sottorete è costituita da N bit a 1 seguiti da (32-N) bit a 0, e può essere abbreviata nella forma /N.
 
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.
Storicamente, gli indirizzi IPv4 sono stati divisi in quattro classi, e i primissimi bit dell'indirizzo indicano l'appartenenza di un indirizzo ad una classe:
*''classe A'': il primo byte rappresenta la rete, gli altri l'host; [0-127].x.x.x. La maschera di sottorete è 255.0.0.0, o /8. Questi indirizzi iniziano tutti con un bit a <math>0</math>.
*''classe B'': i primi due byte rappresentano la rete, gli altri l'host; [128-191].y.x.x (gli y sono parte dell'indirizzo di rete, gli x dell'indirizzo di host). La maschera di sottorete è 255.255.0.0, o /16. Questi indirizzi iniziano con la sequenza <math>10</math>
*''classe C'': i primi 3 byte rappresentano la rete, gli altri l'host; [192-223].y.y.x. La maschera di sottorete è 255.255.255.0, o /24. Questi indirizzi iniziano con la sequenza <math>110</math>
*''classe D'': riservata agli indirizzi [[multicast]]: [224-255].x.x.x
 
L'assegnazione di un indirizzo IP ad un calcolatore può essere manuale, o automatizzata da protocolli come [[DHCP]] o gli obsoleti [[BOOTP]] e [[RARP]].
Questa divisione è ora superata, e per permettere un migliore sfruttamento degli indirizzi IP disponibili è possibile usare maschere di sottorete di qualunque lunghezza. Questa tecnica è detta '''CIDR''' (Classless Internet Domain Routing). La maschera della vecchia classe C è ancora popolare, ma si usano anche maschere più corte per reti grandi (/23 o /22) o più lunghe per reti piccole (/25, /26, fino a /30 per reti punto-punto).
 
== Pacchetto IP ==
Il numero di indirizzi univoci disponibili in IPv4 è <math>2^{32} = 256^4 = 4.294.967.296 \cong 4,3 \cdot 10^9 </math>, ma bisogna tener presente che non vengono usati tutti, perché alcuni sono riservati a un particolare utilizzo (ad esempio gli indirizzi 0.0.0.0, 255.255.255.255, 192.0.34.166 e la classe 192.168.0.1/16) e perché certe classi non vengono sfruttate interamente per via della suddivisione interna in classi più piccole. In ogni caso, con l'esplosione della popolarità di [[Internet]], questo numero non sarà sufficiente ancora per molto a contenere tutte le macchine collegate alla [[Grande Rete]]: è anche per questo motivo che è stato progettato IPv6.
{{vedi anche|IPv4|IPv6}}
 
Nel pacchetto IP, cioè la sua [[Protocol Data Unit|PDU]] detta anche ''datagramma'', i campi più importanti sono:
Gli indirizzi IP sono univoci a livello mondiale, e vengono assegnati in modo centralizzato da una gerarchia di enti appositi. Sono considerati una risorsa preziosa da gestire con cura. Per rafforzare questo concetto, si parla di "indirizzi IP '''pubblici'''".
* ''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 ==
===Indirizzi IP "Privati"===
=== 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 ===
Onde permettere la creazione di reti che utilizzassero il protocollo IP senza per forza dover essere direttamente connesse ad internet, sono state riservate alcune classi di indirizzi IP come indirizzi '''privati'''.
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.
Questi indirizzi non possono essere utilizzati su internet, ma chiunque è libero di utilizzarli per una rete privata, che sia domestica o di una grande azienda.
 
=== Gateway o Router ===
Un computer che utilizzi uno di questi indirizzi non potrà collegarsi direttamente ad un computer su un indirizzo pubblico, ma esistono dei meccanismi per permettergli di fruire di un limitato accesso ad internet:
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]].
* il [[Network address translation|NAT]] viene spesso usato per far "uscire" una rete privata su internet attraverso un solo indririzzo pubblico. Questa tecnica è detta anche [[IP masquerading]].
* un [[proxy]] può essere collegato sia alla rete pubblica che ad una rete privata, permettendo ad esempio di navigare il [[web]] dalla rete privata.
 
== Visualizzare la configurazione IP ==
Le classi riservate agli indirizzi IP privati sono:
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:
* '''10.0.0.0/8''' con i primi 8 bit fissi e gli altri assegnabili, può contenere 16.777.216 calcolatori
* Windows:
* '''172.16.0.0/12''' con i primi 12 bit fissi e gli altri assegnabili, può contenere 1.048.576 calcolatori
** ipconfig
* '''192.168.0.0/16''' con i primi 16 bit fissi e gli altri assegnabili, può contenere 65.536 calcolatori
** Get-NetIPConfiguration (su [[PowerShell]])
* Linux:
** [[ifconfig]] (deprecato)
** ip
 
== Bibliografia ==
Naturalmente, ciascuna di queste classi di indirizzi può essere a sua volta suddivisa in [[sottorete|sottoreti]] di dimensione inferiore, ovvero con maschera di sottorete più lunga.
* {{IETF|791|Internet Protocol Specification}}
* {{IETF|1918|Address Allocation for Private Internets}}
 
== Voci correlate ==
===IPv6===
* [[IPv4]]
L'indirizzo IPv6 è costituito da 128 bit; viene descritto da 8 numeri [[Sistema numerico esadecimale|esadecimali]] rappresentati su 8 [[byte]] (quindi ogni numero varia tra 0 e 65535) separati dal simbolo "due punti". Un esempio di indirizzo IPv6 è 2001:0DB8:0000:0000:0000:0000:0000:0001, che può essere abbreviato in 2001:DB8::1 (i due punti doppi stanno a sostituire la parte dell'indirizzo che è composta di soli zeri consecutivi. Si può usare una sola volta, per cui se un indirizzo ha due parti composte di zeri la più breve andrà scritta per esteso).
* [[IPv6]]
* [[IP spoofing]]
* [[Indirizzo IP]]
* [[Protocollo di rete]]
* [[Protocollo di routing]]
* [[Rete internet]]
 
== Altri progetti ==
Il numero di indirizzi univoci disponibili in IPv6 è <math>2^{128} = 65.535^8 \cong 3,4 \cdot 10^{38}</math>, ma anche di questi ve ne sono alcuni riservati.
{{interprogetto|preposizione=sull'|wikt=IP|wikt_etichetta=IP}}
 
== Collegamenti esterni ==
===Range di IP===
* {{FOLDOC}}
Per indicare i ''range'' (gruppi) di IP si usa la notazione ''indirizzo_IP / bit_fissi''; la notazione ''192.0.34.166/8'' significa che dell'indirizzo IP 192.0.34.166 vanno tenuti fissi solo i primi 8 bit (quindi il primo byte, in questo caso il numero 192) mentre gli altri variano: in pratica, indica la rete di classe A che inizia con 192. ''192.0.34.166/16'' indica la rete di classe B che inizia con 192.0; allo stesso modo, ''2001:DB8::/32'' indica il gruppo di indirizzi IPv6 che iniziano con 2001:0DB8.
* {{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}}
===Indirizzi IP e nomi DNS===
{{Controllo di autorità}}
Gli indirizzi IP sono numeri, e come tali non sono facili da ricordare per la maggior parte degli esseri umani. Il problema è ancora più serio con IPv6. Per questa ragione, spesso ad un indirizzo IP viene associato un nome simbolico [[DNS]].
{{portale|informatica|internet|telematica}}
 
== Link ==
*[ftp://ftp.rfc-editor.org/in-notes/rfc791.txt RFC 0791 Internet Protocol Specification]
* [http://www.faqs.org/rfcs/rfc1918.html RFC 1918 Address Allocation for Private Internets]
 
[[Categoria:Standard Internet]]
[[Categoria:ProtocolliInternet di reteProtocol]]
 
[[bg:Internet Protocol]]
[[da:Internetprotokol]]
[[de:Internet Protocol]]
[[en:Internet Protocol]]
[[es:Protocolo IP]]
[[fr:Protocole Internet]]
[[he:IP]]
[[hu:IP szám]]
[[ja:Internet Protocol]]
[[ko:IP]]
[[nl:Internet Protocol]]
[[pl:IP]]
[[pt:Protocolo IP]]
[[zh-cn:互联网协议]]