In questo articolo, Il livello Rete – protocollo IPv4, analizziamo uno dei principali protocolli, il protocollo IP,nella versione 4 che è quella ampiamente utilizzata nelle reti.

In questo articolo, Il livello Rete – protocollo IPv4, analizziamo uno dei principali protocolli, il protocollo IP,nella versione 4 che è quella ampiamente utilizzata nelle reti.

Indice dei contenuti

Introduzione

Nello stack TCP/IP il Network Layer ha il ruolo di trasferire i pacchetti da un host mittente a un host destinatario, usufruendo dei servizi offerti dal sottostante livello Physical.

Ad esempio: Un server che trasmette pacchetti li costruisce a partire dai dati prodotti a livello applicativo (livello 7 del modello ISO/OSI) e anche il PC che li riceve consuma i dati al livello applicativo, ma i router che instradano i pacchetti nel percorso dal server al PC utilizzano solo le informazioni disponibili al livello di rete (livello 3 del modello ISO/OSI) relative ad un particolare protocollo che studieremo in questa sezione: il protocollo IP.

Per realizzare la funzione di trasferimento pacchetti, il Network layer svolge due compiti fondamentali:

  • forwarding: è l’attività di inoltro dei dati nella rete, svolta all’interno del router quando riceve un pacchetto da una linea (input link) e deve selezionare la linea su cui trasmetterlo (output link) per inoltrarlo al prossimo router;
  • routing: il livello Network determina il percorso (route) che seguono i pacchetti nella rete, passando da un router all’altro, usando alcuni algoritmi detti algoritmi di routing; il routing permette anche la localizzazione degli instradamenti alternativi da usare in caso di guasti nella rete

I router che, come abbiamo visto svolgono le due funzioni precedentemente descritte, interconnettono dunque reti diverse stabilendo collegamenti tra host non direttamente collegati.

Affinchè sia possibile determinare il percorso migliore che devono seguire i pacchetti da un dispositivo mittente ad uno destinatario è necessario che ciascun dispositivo terminale di ciascuna rete sia opportunamente identificato. In realtà come vedremo anche le interfacce dei router dovranno essere opportunamente identificate.

L’identificativo per ciascuna interfaccia di ciascun dispositivo è detto indirizzi IP che prende il nome da uno dei più importanti protocolli dello stack, il protocollo IP – INTERNET PROTOCOL

A differenza dell’ indirizzo MAC, definito a livello data link, che è un indirizzo fisico, l’indirizzo IP è un indirizzo logico cioè scollegato dall’hardware. Questo significa che un’interfaccia di un dispositivo può essere configurata (in modo opportuno) con indirizzi IP differenti in base alla rete alla quale il dispositivo stesso è connesso.

Funzioni svolte dal livello Network

Prima di definire le funzioni di forwarding e routing, che saranno trattate in seguito in un articolo dedicato, descriviamo altre due funzioni importantissime realizzate a livello Network:

  • Il packet switching (commutazione)
  • La frammentazione

La commutazione ( switching)

La commutazione è la tecnica che permette di creare, mantenere e abbattere i
circuiti (percorsi) di collegamento tra i nodi di una rete. Questi circuiti possono
essere fisici o logici.

Commutazione di circuito (circuit switching)

Nel caso di circuiti fisici si parla di commutazione di circuito (circuit switching): questa tecnica si realizza con una connessione fisica tra le stazioni remote collegando i nodi intermedi della rete.

Attraverso la commutazione di circuito prima di iniziare la trasmissione si deve
chiudere il circuito, prenotando uno alla volta tutti i canali tra i due nodi interessati. Una volta chiuso il percorso, e solo allora, i dati possono essere trasferiti senza soluzione di continuità. Se i canali hanno velocità diverse, l’intera trasmissione
avverrà alla velocità del canale più lento.

Pur essendo la tecnica più semplice (in uso nelle comunicazioni telefoniche) essa presenta diversi svantaggi.
Innanzitutto il meccanismo di prenotazione fa sì che un canale possa risultare occupato anche se in quel momento nessuno sta trasmettendo su quel canale. Supponiamo per esempio di avere una rete come nella figura seguente e di dover trasmettere tra il nodo A e il nodo D attraverso il percorso più breve ABCD.

Se il mittente dopo aver prenotato i canali A-B e B-C trovasse occupato il canale C-D, la trasmissione non potrebbe partire non essendosi chiuso il circuito, ma intanto i
due primi canali risulterebbero inutilizzabili da altri utenti (in quanto prenotati) con
evidente calo dell’efficienza della rete. I danni possono essere limitati consentendo
percorsi alternativi, pur non avendo comunque la garanzia di trovarne di liberi.

Nel caso peggiore potrebbe verificarsi anche uno stallo (deadlock). Se nell’esempio
sopra alla comunicazione tra A e D si sovrapponesse una comunicazione tra D e B
attraverso il percorso più breve DCB e quest’ultima fosse riuscita a prenotare il canale C-D, ci troveremmo nella spiacevole situazione in cui il primo mittente è in attesa che si liberi il canale C-D e il secondo in attesa che si liberi B-C. Dunque entrambi si trovano bloccati avendo ciascuno occupato una risorsa che serve all’altro e quindi entrambi non sono in grado di chiudere il percorso. La soluzione consiste nell’introdurre un timeslot al termine del quale rilasciare tutti i canali qualora non si sia riusciti a chiudere l’intero percorso tra mittente e destinatario

La commutazione di circuito è tipica delle comunicazioni telefoniche e, storicamente, fu la prima a essere utilizzata per mettere in contatto stazioni remote. Impiegata inizialmente per la voce, è stata successivamente usata anche per il trasporto dei dati. La connessione tra due apparecchi telefonici fissi veniva stabilita «commutando
il circuito», attuando cioè un contatto fisico diretto tra i due estremi interessati alla comunicazione. Tutte le chiamate di un distretto passavano da una centrale e la linea veniva commutata per mettere in collegamento gli apparecchi.

Commutazione di pacchetto ( packet switching)

All’inizio degli anni ’80 del secolo scorso, le richieste provenienti dai settori più
industrializzati, che necessitavano di prestazioni superiori, non consentirono più di accettare i limiti imposti dalla commutazione di circuito. Il passaggio naturale fu l’introduzione della commutazione di pacchetto (packet switching).
Da un’assegnazione fisica del canale si è passati a un’assegnazione logica.
L’intero messaggio da trasmettere è diviso in pacchetti di grandezza limitata che, autonomamente, raggiungono la destinazione saltando da un nodo all’altro della rete. Il pacchetto dati è l’unità minima (PDU – Protocol Data Unit) su cui si basa un protocollo per trasferire dati, ed è costituito da una sequenza finita e strutturata di bit.

La suddivisione dei messaggi in pacchetti fa sì che i pacchetti possano arrivare a destinazione in un ordine diverso da quello di invio. Si rende quindi necessario
aggiungere ai dati veri e propri (payload) un’intestazione (header) e una chiusura
(trailer) che contengono informazioni quanto meno sul mittente, sul destinatario
e sul numero di sequenza del pacchetto al fine di rendere possibile l’instradamento dei pacchetti (routing) da parte dei nodi intermedi e il riassemblaggio dei dati da
parte del nodo finale.

I dati che provengono dal livello Trasporto (PDU del Livello 4) sono imbustati nella PDU del Livello 3 per creare un pacchetto nella cui intestazione sono presenti le informazioni necessarie per la consegna.

La commutazione di pacchetto è realizzata con due diverse tecniche: connection oriented e connectionless

Commutazione orientata alla connessione (PACKET SWITCHING WITH VIRTUAL CIRCUIT)

Il servizio connection oriented ricalca, dal punto di vista logico, la filosofia della commutazione di circuito, realizzando un circuito virtuale tra sorgente e destinazione. A differenza della commutazione di circuito tradizionale, però, le risorse sono allocate in maniera esclusiva solo per un flusso di pacchetti e non per l’intera trasmissione. Flussi diversi possono quindi arrivare a destinazione attraverso percorsi diversi

È una tecnica utilizzata dalle compagnie telefoniche del passato, che preferivano fornire un servizio di trasporto affidabile, garantendo l’arrivo ordinato e corretto dei pacchetti:

  • ogni pacchetto è marcato con un identificatore («numero di canale logico»);
  • all’inizio della comunicazione viene creato un circuito virtuale, cioè una strada che tutti i pacchetti che appartengono allo stesso messaggio devono seguire per giungere a destinazione

Commutazione connectionless

La commutazione di pacchetto senza connessione (connectionless) non è affidabile, nel senso che non garantisce né l’ordine di consegna dei pacchetti né la loro correttezza. I vantaggi riguardano:

  • l’ottimizzazione dell’uso del canale che collega due nodi. Il canale è assegnato solo per il tempo strettamente necessario a trasferire i pacchetti di dati;
  • la tolleranza ai guasti, in quanto ciascun pacchetto è inviato dai router in modo autonomo rispetto agli altri e può seguire percorsi diversi per giungere a destinazione

I messaggi sono frammentati in pacchetti di dati (chiamati anche datagrammi):

  • la dimensione massima, in byte, dei pacchetti (MTU – Maximum Transmission Unit) è stabilita dal livello Collegamento Dati;
  • nessun percorso è assegnato in anticipo. Il percorso viene stabilito, di volta in volta, dai router attraversati;
  • ogni nodo (router) analizza l’indirizzo del destinatario contenuto nell’intestazione del pacchetto e, servendosi di un algoritmo, sceglie la via su cui instradarlo.

La frammentazione

Le moderne reti utilizzano la tecnica del packet switching in modalità connectionless per cui è necessaria la frammentazione del messaggio.

Tutte le informazioni relative alla frammentazione (identificativo del frammento, offset rispetto all’inizio del messaggio ed altre informazioni) dovranno essere tracciate necessariamente. Come vedremo queste informazioni sono contenute in particolari campi dell’header del livello Network aggiunto dal protocollo IP

Internet Protocol (IP)

Il protocollo IP è stato specificato nel 1981 e pubblicato in RFC (Request For Comment) 791, in seguito aggiornato dagli RFC 1349, 2474, 6864.

Il protocollo IP è il principale protocollo del livello Rete. Insieme a TCP costituisce il cuore di Internet, tanto che le due espressioni insieme – TCP/IP danno nome alla architettura di Internet. Il protocollo IP è nato con lo scopo di assicurare il collegamento tra nodi della rete Internet anche in caso di malfunzionamenti, prevedendo la possibilità di percorsi alternativi.

IP è un protocollo:

  • connectionless, perché non utilizza alcuna connessione logica tra mittente e destinatario. Ogni router riceve un pacchetto e lo inoltra a un altro router. Per awrrivare a destinazione, un pacchetto deve fare dei salti da un router
    all’altro (“hop”). La scelta del router a cui passare il pacchetto dipende dallo stato della rete. Il protocollo IP fa del suo meglio (best effort) per consegnare i pacchetti a destinazione, senza curarsi di recuperare eventuali pacchetti persi, o correggere errori di trasmissione; questi problemi saranno eventualmente risolti dal protocollo TCP del livello Trasporto;
  • media independent, cioè indipendente dal mezzo fisico di trasmissione che collega i nodi della rete (rame, fibra ottica, segnali radio, …).

Sono due gli standard attualmente utilizzati:

  • IPv4 (IP versione 4, quarta generazione). In questa versione gli identificativi, indirizzi IP, sono costituiti da 32 bit e possono indirizzare circa 4 miliardi di host (232), un numero che sembrava irraggiungibile quando il protocollo nacque. Tuttavia nel 2011 gli indirizzi IPv4 si sono esauriti. Ciò nonostante, ancora oggi IPv4 è la versione più utilizzata su reti private e pubbliche.
  • IPv6 (IP versione 6, sesta generazione). IPv6 è definito dagli standard RFC 2373 e RFC 2374 del 1988. Il numero di bit dedicati agli indirizzi passa a 128, permettendo di indirizzare un numero di host enormemente più elevato (2128 ≈ 3,4 ⋅ 1038). Il suo utilizzo è in forte crescita ed è correlato allo sviluppo dell’IoT. Questa versione del protocollo verrà studiata in seguito, in un articolo dedicato

I compiti del protocollo IP sono:

  • indirizzamento dei dispositivi: ogni dispositivo in Internet deve essere
    identificato con un indirizzo;
  • imbustamento (encapsulation): lato mittente, al segmento del livello Tra-
    sporto è aggiunta l’intestazione del livello Rete (livello 3);
  • routing: occorre determinare il percorso migliore per far giungere i pacchetti
    a destinazione;
  • spacchettamento (decapsulation): lato destinazione, viene tolta l’inte-
    stazione del livello Rete e i dati vengono passati al livello Trasporto

Header di IPv4

L’imbustamento e lo spacchettamento consistono rispettivamente nell’aggiun-
gere e nel togliere l’intestazione che contiene tutte le informazioni utili al fun-
zionamento del protocollo IP. Particolarmente rilevanti sono l’indirizzo IP del
mittente e l’indirizzo IP del destinatario del pacchetto.

L’intestazione di IPv4 è composta da 20 byte ai quali, raramente, possono essere
aggiunti altri byte per informazioni aggiuntive.

I dati veri e propri sono inseriti nel campo payload, alla fine dell’intestazione. Lo schema dell’intestazione si legge da sinistra a destra e dall’alto in basso, considerando righe di 4 byte, ossia 32 bit.
L’ordine in cui i dati sono memorizzati e trasmessi avviene a partire dal bit 0 (il
più significativo) del campo “versione” (modalità big endian).
Il pacchetto IP può contenere al massimo 65535 byte di dati, ma solitamente la dimensione è di qualche kilobyte.

La tabella seguente descrive nei dettagli i campi dell’intestazione IPv4:

CAMPOLUNGHEZZA
(in bit)
DESCRIZIONE
Version4Specifica la versione del protocollo IP. Per sempio, 0100 (codificato in binario), indica il valore 4 per IPv4
IHL (Internet
Header Length)
4Esprime la lunghezza dell’intestazione in “parole” di 32 bit. Poiché la lunghezza dell’intestazione è variabile, il suo valore deve essere specificato. Il valore minimo di IHL è 5, che indica che l’intestazione è lunga 5 parole di 32 bit: 5 · 32 bit = 160 bit = 20 byte. Il valore massimo della lunghezza dell’intestazione è 15 (IHL = 1111), che corrisponde a 60 byte. Ciò implica che il
campo options è lungo al massimo 40 byte (60 – 20).
DS
(Differentiated
Services)
8Specifica la qualità del servizio (QoS). È diviso in due sottocampi. I sei bit più significativi identificano i servizi differenziati (Differentiated Services Code
Point – DSCP) che determinano la priorità del pacchetto (3bit), il ritardo (1 bit), la capacità trasmissiva (throughput, 1 bit) e affidabilità (1 bit). I restanti due bit indicano la notifica della congestione di rete (Explicit Congestion Notification – ECN).
Total Length16Indica la lunghezza totale del pacchetto completo di intestazione e dati, in byte (ottetti). Il valore massimo è 65535
Identification16È un numero che identifica un pacchetto. Quando un pacchetto viene suddiviso in più frammenti, ogni frammento ha lo stesso numero di identification. Serve al destinatario per determinare a quale pacchetto appartiene il frammento appena arrivato.
Flags3I flag sono tre, ma solo due sono utilizzati:
bit 1: DF (Don’t Fragment, “Non frammentare”). Se vale 1 impone ai router di non frammentare il pacchetto. Se DF = 1 e il pacchetto non può essere inviato
senza essere frammentato, allora viene scartato;
bit 0: MF (More Fragments). Se vale 1 il frammento fa parte di un pacchetto
che è stato frammentato, se vale 0 il frammento è l’ultimo del pacchetto.
TTL
(Time to live)
8È un numero binario utilizzato come contatore per limitare la “vita” del pacchetto. Il dispositivo di origine imposta i
l valore di TTL. Il numero viene decrementato a ogni “salto” (passaggio da un router all’altro). Quando arriva a
zero, il pacchetto è scartato e viene inviato all’indirizzo di origine un pacchetto di avviso. Questo impedisce ai pacchetti di girare a vuoto in rete.
Protocol8Indica il protocollo del livello Trasporto utilizzato nella parte relativa ai dati del pacchetto. I valori sono specificati negli standard RFC 790 e RFC 1700. Per esempio, TCP ha il codice 6, mentre UDP ha il codice 17.
Header
Checksum
8Contiene il valore del Checksum. Tale valore è calcolato solamente sull’intestazione e non sul campo di payload. È ricalcolato ogni volta che il
pacchetto entra in un router, perché almeno il campo TTL varia (RFC 791).
Se il Checksum dell’intestazione è errato, i
l pacchetto viene scartato.
Source Addres32È l’indirizzo IP del mittente.
Destination
Address
32È l’indirizzo IP del destinatario
OptionsVariabileSono campi opzionali inseriti tra la fine del
l’intestazione e l’inizio dei dati; nefanno parte:
– Security, utilizzato per trasportare informazioni riguardanti la sicurezza
(Confidential, Restricted, Secret, Top Secret);
– Loose Source Routing (lista dei router da non mancare);
– Strict Source Routing (cammino da seguire con i router che è obbligatorio
attraversare);
– Record Route (ogni router deve registrare il proprio indirizzo per tracciare i
lpercorso effettuato in rete);
– Internet Timestamp (contiene una serie di informazioni dettagliate sui router
attraversati dal pacchetto; è analogo a un timbro postale).
PaddingVariabilebit di riempimento (in base ai bit di options) per consentire all’eader di avere una lunghezza che sia un multiplo di 32

Esempio di utilizzo dei campi ID, flags e Fragment offset

Immaginiamo di avere un pacchetto identificato con ID = 345, lunghezza totale = 5140 byte (20 byte di intestazione e 5120 byte di payload). Il pacchetto dovrà essere frammentato in pacchetti di dimensioni massime 1500 byte.

Il primo frammento avrà id =345, lunghezza 1500 byte (20 + 1480), DF = 0 (perchè fa parte della frammentazione), MF = 1 (ci sono ulteriori pacchetti frammentati) ed il fragment offset =0 (è il primo)

Il secondo frammento avrà id=345, lunghezza = 1500 byte, DF=0, MF=1 ed il fragment offset pari a 185 infatti esso parte dal byte 1480. Si divide per 8 e si ottiene 185

In definitiva avremo la frammentazione visibile nella figura seguente:

Indirizzi IPv4

Un indirizzo IPv4 è costituito da 32 bit. Per comodità di lettura, esso viene anche
espresso in notazione decimale puntata (dotted decimal notation), cioè come una
sequenza di quattro numeri decimali separati da un punto.
Per esempio, i quattro ottetti binari 10101100.00010000.01110000.00001010
presenti nel campo Source Address o Destination Address dell’intestazione IP corrispondono all’indirizzo decimale 172.16.112.10

L’indirizzo IPv4 usa 32 bit, quindi il numero massimo, teorico, di indirizzi a disposizione è 232 = 4.294.967.296

Il numero è teorico, in quanto non tutti gli indirizzi possono essere usati e assegnati
a un’interfaccia di rete, come si vedrà in seguito.

Gli indirizzi possono assumere un valore compreso tra 0.0.0.0 e 255.255.255.255

Un indirizzo IPv4 individua univocamente un’interfaccia di rete di un dispositivo. Ha una struttura gerarchica in cui i 32 bit sono divisi in due parti: il numero di rete (prefisso di rete) e il numero dell’host (dispositivo) su quella rete.

Nell’esempio della figura, 24 bit sono dedicati alla rete e 8 bit all’host. Tuttavia, il numero di bit utilizzati per le parti rete e host può variare.
Per indicare, come nel caso precedente, che 24 bit sono riservati alla rete, si usa
la notazione: 192.168.0.1/24 (slash notation)

Assegnazione degli indirizzi IPv4

Consideriamo il seguente indirizzo IP:
172.16.112.10/24 notazione decimale
10101100 00010000 01110000 00001010 notazione binaria

  • L’indirizzo di rete è costituito dal prefisso di rete con tutti zero nella parte host:
    172.16.112.0
    10101100 00010000 01110000 00000000
  • Gli indirizzi IP disponibili per gli host di questa rete sono quelli compresi tra:
    172.16.112.1 e 172.16.112.254
    10101100 00010000 01110000 00000001
    10101100 00010000 01110000 00000010
    10101100 00010000 01110000 00000011

    10101100 00010000 01110000 11111110
  • Non è possibile assegnare a un host l’indirizzo 0, perché quest’ultimo è un
    indirizzo di rete.
  • Non è possibile assegnare a un host un indirizzo con tutti 1 (in notazione binaria), perché quest’ultimo è un indirizzo di broadcast ed è utilizzato quando è necessario inviare un messaggio a tutti gli host della rete.
    In generale possiamo affermare:
    su una rete /n il numero massimo di host indirizzabili è: 232 – n – 2
    (–2 perché non dobbiamo considerare l’indirizzo di rete e quello di broadcast).

Per esempio:

  • su una rete /24 il numero massimo di host indirizzabili è: 232 – 24 – 2 = 254;
  • su una rete /20 il numero massimo di host indirizzabili è: 232 – 20 – 2 = 4094;
  • su una rete /30 il numero massimo di host indirizzabili è: 232 – 30 – 2 = 2

La subnet mask

Se due host hanno gli stessi bit nella parte rete significa che appartengono
alla stessa rete
; ma è necessario che un dispositivo possa distinguere i bit che identificano la rete da quelli dell’host. Per questo scopo viene utilizzata la maschera di sottorete o subnet mask.
Se analizziamo i parametri di rete di un dispositivo vediamo infatti che alla scheda di rete sono assegnati sia l’indirizzo IP sia la subnet mask (evidenziati nella figura). Assegnare il solo indirizzo IP non basta, perché è necessario precisare che quell’host si trova in quella rete.

La subnet mask è rappresentata da una sequenza di bit a 1, seguita da una sequenza di bit a 0.

I bit a 1 nella subnet mask devono essere tutti consecutivi ad iniziare dal MSB!

Questo significa che un indirizzo 255.255.0.0 rappresenta una subnet mask valida poichè la conversione da: 11111111.11111111.00000000.00000000

Un indirizzo 192.255.0.0 non rappresenta una subnet mask valida poichè la conversione da: 11000000.11111111.00000000.00000000

Nell’esempio della figura precedente:
11111111.11111111.11111111.00000000 per identificare la porzione di rete, la subnet mask è confrontata, da sinistra a destra, con i bit dell’indirizzo completo:
I bit a 1 nella subnet mask identificano la porzione di rete, mentre quelli a 0 indicano quali sono i bit dell’indirizzo dell’host.

Per completezza, in base a quanto abbiamo detto, il numero che segue lo slash in un indirizzo IP in notazione slash notation rappresenta il numero di bit a 1 della subnet mask.

È possibile inoltre isolare l’indirizzo di rete, applicando l’operatore logico AND bitwise (bit a bit) all’indirizzo IP e alla subnet mask, entrambi scritti in notazione binaria.

Ricordiamo che la tabella di verità dell’operatore AND prevede un output a 1 se e solo se entrambi gli input sono uguali a 1.

Facciamo un esempio: se avessimo l’indirizzo IP 172.16.112.10/24 e volessimo conoscere l’indirizzo IP di rete, facciamo l’operazione di AND tra IP e subnet mask. Il risultato definisce l’indirizzo di rete di appartenenza:

Tipi di indirizzamento IPv4

Gli indirizzi IPv4 possono appartenere a tre categorie, in base al destinatario del
pacchetto :

  • Unicast: è un indirizzo che identifica in modo univoco un’interfaccia di rete. È utilizzato quando il dispositivo di origine invia un messaggio a un singolo destinatario. Il pacchetto contiene l’indirizzo IP di destinazione e quello sorgente. La trasmissione unicast è di tipo uno-a-uno
  • Broadcast: è un indirizzo che identifica tutti i nodi di una rete. È utilizzato quando un dispositivo invia un messaggio a tutti i dispositivi presenti in rete. Un pacchetto di broadcast ha un indirizzo IP di destinazione con tutti i bit a 1 nella parte di indirizzo dedicata agli host. Per esempio, un host sulla rete 192.168.0.0/24 invia un pacchetto di broadcast 192.168.0.255.
    Il broadcast è una trasmissione rivolta a tutti.
  • Multicast: è un indirizzo che identifica un gruppo di host. È utilizzato quando un dispositivo invia un pacchetto a un insieme selezionato di host che hanno fatto una sottoscrizione a un gruppo multicast (indirizzi compresi tra 224.0.0.0 e 239.255.255.255).

Indirizzamento classful e classless

Lo standard IPv4 prevedeva la suddivisione degli indirizzi IP in cinque “classi”: A, B, C, D, E. Questa impostazione, detta classful, assegna lunghezze prestabilite alla parte rete e a quella host.
La classe è determinata dai bit più significativi, come è mostrato nella tabella seguente. Lo scopo di questa struttura è poter creare poche reti con tanti host (classe A), fino ad arrivare a tante reti con pochi host (classe C).

La classe D è riservata agli indirizzi multicast (224-239.x.x.x): tutti i 32 bit sono
usati per indirizzare un gruppo di host. La classe E non è utilizzata perché è stata
riservata per usi futuri.
L’idea di stabilire delle classi per il formato degli indirizzi si è rivelata troppo
rigida e per questo classful è stata sostituita da classless (CIDR – Classless Inter-
Domain Routing (si pronuncia saider))
, oggi comunemente utilizzata.
CIDR è stato introdotto con RFC 1519 del 1993 e poi aggiornato con RFC 4632 del 2006.
CIDR rende flessibile il numero di bit utilizzati per la rete e per gli host, con la
conseguenza di fornire indirizzi su misura, senza sprecarli inutilmente.
La tecnica CIDR consente di realizzare il supernetting in contrapposizione al subnetting (entrambe le tecniche le spiegheremo in seguito in un articolo dedicato)

Indirizzi IP statici e dinamici, indirizzi IP pubblici e privati

Per essere collegato a Internet un host deve avere un indirizzo IP pubblico, cioè
visibile da tutti gli altri host connessi a Internet. Questo indirizzo deve essere univoco, affinché l’host possa essere identificato nella rete.

Gli indirizzi IP pubblici sono assegnati da ICANN (Internet Corporation for Assigned Names and Numbers) che ha assunto la funzione di IANA (Internet Assigned Numbers Authority).
Per “risparmiare” indirizzi e far fronte al problema dell’esaurimento degli indirizzi IPv4, sono stati introdotti gli indirizzi privati, indirizzi che possono essere utilizzati e visti solo all’interno della rete privata di un’organizzazione.
Questo permette agli host di una LAN di comunicare con gli altri senza la necessità di un indirizzo IP pubblico.
LAN diverse e separate possono usare gli stessi indirizzi IP privati non utilizzabili in Internet.

Gli host con indirizzi privati si connettono a Internet mediante un indirizzo pubblico gestito da un proxy server o mediante un router NAT (Network Address Translation).
I range di indirizzi privati sono definiti in RFC 1918 “Address Allocation for Private
Internets” e valgono:

L’ultimo blocco di indirizzi (dal 169.254.0.1 al 169.254.255.254) sono detti indirizzi APIPA (Automatic Private IP Addressing): sono indirizzi riservati per l’autoconfigurazione degli host. Un tipico impiego è nelle reti che usano l’assegnazione dinamica degli indirizzi IP con DHCP (il protocollo DHCP è descritto in seguito): quando un host non riceve l’indirizzo IP dal server DHCP si assegna in automatico un indirizzo 169.254.X.Y

Gli indirizzi IPv4 possono essere statici o dinamici.

Gli indirizzi IP statici sono quelli assegnati manualmente e sono immutabili nel tempo. Sono utili per servizi che necessitano di accessi costanti e specifici, come server o dispositivi da remoto, richiedono una configurazione manuale nel caso in cui si decidesse di assegnare all’interfaccia di quel dispositivo un diverso indirizzo IP

Gli indirizzi IP dinamici sono assegnati automaticamente da un server DHCP e sono lo standard per la maggior parte degli utenti domestici. Possono essere modificati nel tempo (l’interfaccia di uno stesso dispositivo può essere riconfigurata con un nuovo IP)

Conclusione

Gli indirizzi IPv4 sono necessari ad indentificare l’interfaccia di un dispositivo.

La subnet mask serve ad identificare la rete di appartenenza di un dispositivo.

Ciascuna interfaccia deve essere indirizzata opportunamente assegnando almeno:

  • IP
  • Subnet mask
  • Default gateway. Questo rappresenta l’indirizzo IP dell’interfaccia del router lato LAN alla quale sono collegati tutti i dispositivi di quella rete. Rappresenta la porta attraverso la quale i pacchetti inviati da ciascun dispositivo interno alla rete ed indirizzato verso l’esterno devono necessariamente transitare

La progettazione di una rete richiede il piano di indirizzamento argomento che sarà trattato adeguatamente in un articolo dedicato

Il livello network offre tutte le funzionalità, attraverso l’implementazione di specifici protocolli, affinchè un dispositivo appartenente ad una rete possa comunicare con un altro dispositivo appartenente ad una rete diversa

Di seguito la rappresentazione di due reti LAN interconnesse:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *