Gli indirizzi dell Internet Protocol IP Address
Il protocollo IP Prevalente è ormai diventato nell implementazione di reti di computer la tecnologia sintetizzata nei protocolli TCP- Ip IP è un protocollo di livello network della pila DOD/Darpa
Header di un pacchetto IP
IP è un protocollo di livello Network non orientato alla connessione e senza riscontro che riceve i dati dal livello di trasporto, li incapsula e successivamente li instrada
Un'architettura Internet consiste di un insieme di reti interconnesse che possono essere considerate come un'unica entità Le reti sono collegate da particolari apparati detti Router, che hanno come funzione primaria quella di instradare i dati sulla base dell'indirizzo della rete destinataria
Per instradare correttamente i pacchetti, i router necessitano di informazioni sulla topologia della rete
in particolare ogni nodo della rete o host deve essere identificato in modo univoco Ciò avviene mediante un indirizzo detto IP address
Un indirizzo IP è una sequenza (nella versione IPv4) di 32 bit. Questi bit sono organizzati in gruppi di 8 bit che non vengono indicati come byte ma ottetti nella rappresentazione usuale ogni ottetto è rappresentato con il suo valore decimale
Ad esempio l indirizzo 01111111 00000000 00000000 00000001 diventa 127.0.0.1
Gli indirizzi IP vengono assegnati da un organismo internazionale: IANA Internet Assigned Numbers Authority
Classi di indirizzi IP Si distinguono cinque classi di indirizzi IP
Tutti gli host che appartengono ad una stessa rete hanno una parte del proprio indirizzo IP in comune che li identifica come appartenenti a quella rete. Una seconda porzione dell indirizzo è invece univoca e identifica ogni host della rete
Indirizzi di classe A Il valore del primo ottetto è compreso tra 1 e 126 (00000001 01111110) (I primi otto bit di questo indirizzo saranno: 0*****). E' rappresentata da indirizzi di tipo: Rete.Host.Host.Host ovvero 8 bit per la identificare la rete (di cui il primo fisso) e 24 per identificare gli host. Permette di ottenere 126 reti formate da 16.774.214 host ciascuna.
Per la componente che identifica la rete sono vietate le combinazioni 00000000 e 01111111 per cui restano 2 8-2=126 combinazioni
Per la componente host sono vietate le combinazioni con tutti 0 e tutti 1 per cui rimangono 2 24-2= 16772216-2 combinazioni
Un indirizzo di classe A è utilizzato per reti di grandi dimensioni come imprese internazionali
Indirizzi di classe B Il valore del primo ottetto è compreso tra 128 e 191 (100000000 10111111) (I primi otto bit di questo indirizzo saranno: 10*****). E' rappresentata da indirizzi di tipo: Rete.Rete.Host.Host ovvero 16 bit per la identificare la rete(di cui i primi due fissi) e 16 per identificare gli host. E' possibile ottenere 16.384 reti formate da 65.534 host ciascuna.
Per la componente che identifica la rete i primi due bit sono bloccati per cui restano 2 16-2 =2 14 =16.384 combinazioni
Per la componente host sono vietate le combinazioni con tutti 0 e tutti 1 per cui rimangono 2 16-2= 65536-2 combinazioni
Un indirizzo di classe B è utilizzato per reti di medie dimensioni come ad esempio un università
Indirizzi di classe C Il valore del primo ottetto è compreso tra 192 e 223 (11000000 11011111) (I primi otto bit di questo indirizzo saranno: 110*****). E' rappresentata da indirizzi di tipo: Rete.Rete.Rete.Host ovvero 24 bit per la identificare la rete (di cui i primi tre fissi) e 8 per identificare gli host. E' possibile ottenere 2.097.152 reti con 254 host ciascuna.
Un indirizzo di classe C è utilizzato per reti di piccole e medie aziende
Indirizzi di classe D Il valore del primo ottetto è compreso tra 224 e 239 (I primi otto bit di questo indirizzo saranno: 1110****). Sono indirizzi di rete riservati ai gruppi multicast e non assegnabili ai singoli host.
Sono dunque indirizzi utilizzabili da un router per inviare dati ad un intero gruppo di host
Per esempio l indirizzo 224.0.0.1 potrebbe indicare tutti gli host di una sottorete
Indirizzi di classe E Il valore del primo ottetto è compreso tra 240 e 255 (I primi otto bit di questo indirizzo saranno: 1111****). Sono indirizzi riservati per usi futuri.
Regole generali nell assegnazione di indirizzi IP Tutti gli host sullo stesso segmento di rete devono avere lo stesso ID di rete
Ciascun host si di un segmento di rete deve avere la porzione dell indirizzo relativa al host univoca nell indirizzo IP Un ID di rete non può mai essere 127 Un ID di rete non può essere costituito da tutti 1 poiché costituisce un indirizzo di broadcast
Un ID di host non può essere costituito da tutti 1 poiché costituisce un indirizzo di broadcast
Un ID di rete non può essere costituito da tutti 0 Un ID di host non può essere costituito da tutti 0
. Subnetting mask
Un host che voglia inviare i propri pacchetti ad un altro host deve per prima cosa determinare se il destinatario si trova sulla sua stessa rete o altrimenti inviarli al nodo che fa da router perché siano opportunamente instradati
Per far questo esso necessita di una subnet mask che consiste in una stringa di bit della stessa lunghezza di un indirizzo IP. Tale stringa ha ad 1 tutti i bit che hanno la stessa posizione che nell indirizzo IP occupano i bit della porzione dell indirizzo di rete mentre ha a 0 tutti i bit corrispondenti alla porzione dell indirizzo di host
Così ad esempio, in una rete con indirizzi di classe A la subnet mask sarà una stringa con i primi 8 bit ad 1 ed i restanti a zero
In una rete con indirizzi di classe B la subnet mask sarà una stringa con i primi 16 bit ad 1 ed i restanti a zero
In una rete con indirizzi di classe C la subnet mask sarà una stringa con i primi 24 bit ad 1 ed i restanti a zero
Per determinare se il destinatario si trova sulla stessa rete l host mittente effettua una AND bit a bit fra il proprio indirizzo IP e la subnet mask ricavando l indirizzo della rete cui appartiene (netid)
Procede poi ad effettuare la stessa operazione con l indirizzo del destinatario. Se i due host si trovano sulla stessa rete otterremo lo stesso netid
Supponiamo che l host A abbia indirizzo IP 192.168.5.5 e subnet mask 255.255.255.0. Esso vuol inviare dati all host B con IP 192.168.5.25 e subnet mask 255.255.255.0
Prima operazione di AND 192.168.5.5 AND 255.255.255.0 = 11000000 10101000 00000101 00000101 AND 11111111 11111111 11111111 00000000 = 11000000 10101000 00000101 00000000 = 192.168.5.0
Seconda operazione di AND 192.168.5.25 AND 255.255.255.0 = 11000000 10101000 00000101 00011001 AND 11111111 11111111 11111111 00000000 = 11000000 10101000 00000101 00000000 = 192.168.5.0
Essendo il risultato identico sappiamo che i due host si trovano sulla stessa rete. Se i risultati fossero stati diversi i due host avrebbero potuto comunicare soltanto attraverso un router
Indicazione indirizzo IP e subnet Si possono indicare entrambe esplicitamente e per esteso 192.168.5.5 255.255.255.0 Oppure si indica il numero di bit ad 1 della subnet mask 192.168.5.5/8 mask
Subnetting Talvolta l utilizzo di una classe predefinita di indirizzi IP comporta uno spreco anche notevole in termini di combinazioni non utilizzabili Si procede allora a suddividere la rete che si potrebbe gestire con la classe di indirizzi IP a disposizione in più sottoreti
Si utilizza questa tecnica per non sprecare indirizzi Se, ad esempio, si possiede un indirizzo di classe C e si debbono mettere in rete soltanto 50 host si sprecherebbero molte combinazioni disponibili per indirizzi IP delle 254 possibili Se si suddivide questo gruppo di 254 indirizzi in due sottoreti si possono assegnare indirizzi ad un altra sottorete senza sprecarli
Un altro vantaggio consiste nel fatto che i router non lasciano passare il traffico broadcast per cui si ha una riduzione del traffico di rete con un miglioramento delle prestazioni delle sottoreti create con il subnetting
Per realizzare un subnetting supponiamo che la parte hostid dell indirizzo di base sia composta da z bit (ad esempio 8 bit per un IP classe C) Di questi z bit se ne prendono a prestito un numero x (ad esempio 2) Con gli x bit presi a prestito si possono realizzare 2 x combinazioni In passato erano stati dichiarati riservati i Subnet-ID di tutti 1 e tutti 0 (come per gli Host-ID) In seguito è stato permesso l utilizzo di tutti i possibili Subnet-ID(RFC 1878)). Nell esempio di 2 bit presi a prestito abbiamo 4 combinazioni. Questo è il numero di sottoreti che possiamo creare
Rimangono y=z-x bit disponibili per realizzare gli hostid di ciascuna sottorete. Avremo dunque 2 y - 2 combinazioni per gli host di ogni sottorete. ( nel nostro esempio 2 6-2=62). Uno di questi indirizzi va però riservato al router che collega la sottorete all esterno Il numero di bit ad 1 della subnet mask è pari a quello di partenza estesa a comprendere i bit che occupano la stessa posizione dei bit del hostid presi in prestito per il subnetting (nell esempio 11111111 11111111 11111111 11000000)
Esempi 137.204.57.0/24 è una delle 256 possibili sottoreti a 24 bit di una rete di classe B 192.168.10.192/26 è una delle 4 possibili sottoreti a 26 bit di una rete di classe C 10.128.0.0/9 è una delle 2 possibili sottoreti a 9 bit di una rete di classe A
La sezione host dell indirizzo è divisa in due parti la prima identifica una porzione della rete in questione la seconda identifica i singoli host della sottorete
Regole del subnetting A seconda del numero di bit del Subnet- ID, la rete originaria viene suddivisa per multipli di 2 1 bit divido a metà 2 bit divido in 4 parti 3 bit divido in 8 parti ecc.
Sottoreti diverse sono disgiunte, è vietata qualsiasi sovrapposizione 137.204.0.12/23 e 137.204.1.12/23 devono appartenere alla stessa sottorete Nel caso di sottoreti con netmask diverse (di dimensioni variabili) bisogna fare attenzione ad evitare di definire sottoreti non consentite (perché non disgiunte)
Esempio Indirizzo IP a disposizione di classe C: 192.168.1.0/24 LAN A ha 50 host per cui basta una sottorete da 61 indirizzi host 192.168.1.0/26 è un Subnet-ID valido LAN B ha 100 host basta una sottorete da 125 indirizzi host 192.168.1.64/25 NON è un Subnet-ID valido 64 = 01000000 192.168.1.128/25 è un Subnet-ID valido 128 = 10000000
L operazione di subnetting di una rete IP è solamente logica : host di diverse subnet possono essere sulla medesima rete fisica ma devono dialogare tramite un gateway host della medesima subnet possono essere su diverse reti fisiche ma possono dialogare direttamente perché appartengono ad un unico dominio broadcast (reti LAN connesse da bridge/switch)
Nella rete due host appartenenti a subnet diverse non possono dialogare direttamente pur appartenendo alla stessa rete fisica
Mentre possono dialogare attraverso un router
Supernetting Il supernetting è l operazione opposta a quella del subnetting Essa prende anche il nome di CIDR o Classless Inter-Domain Routing Supponiamo di dover gestire 700 host: in questo caso un indirizzo di classe C è insufficiente mentre uno di classe B sarebbe troppo costoso e sottoutilizzato
Se utilizziamo 3 indirizzi di classe C possiamo gestire fino a 762 host Dobbiamo fare in modo che questi 3 indirizzi di classe C siano visti come un unica rete. Simmetricamente a quanto fatto per il subnetting n bit del Net-ID diventano parte dell Host-ID
Supponiamo che i 3 indirizzi di classe C a disposizione siano 192.140.4.0 = 11000000 10001100 00000100 00000000 192.140.5.0 = 11000000 10001100 00000101 00000000 192.140.6.0 = 11000000 10001100 00000110 00000000
Dall analisi degli indirizzi si nota come i primi sei bit del terzo byte siano comuni a tutti gli indirizzi di classe C mentre gli ultimi due variano e vanno dunque mascherati Per ottenere un netid identico per tutti e 3 occorre dunque che si utilizzi una subnet mask 11111111 11111111 11111100 00000000= 255.255.252.0
Con questa maschera tutte le reti avranno lo stesso netid pari a 192.140.4.0 Oltre a rendere più efficiente l utilizzo degli indirizzi Ip il supernetting riduce la dimensione delle tabelle di routing
L uso di indirizzi di classe C implica una notevole occupazione di spazio nelle tabelle di instradamento Il problema viene risolto sostituendo un gruppo di righe con una sola riga caratterizzata dall indirizzo di rete più basso del gruppo e dalla maschera di super-rete
Esempio Elencare tutte le reti classful rappresentate dal blocco CIDR (Classless InterDomain Routing):212.155.144.0/20 Si esprime il blocco CIDR in formato binario: 212.155.144.0/20 11010100.10011011.10010000.00000000 Rimangono 4 bit per rappresentare 16 classi C:
Esempio
Indirizzi privati Se una rete non è connessa ad Internet, in linea di principio è possibile lavorare al suo interno con indirizzi IP arbitrari In realtà l IETF ha individuato un opportuno gruppo di indirizzi da utilizzare in reti private, ovvero in reti che non si affacciano su Internet
Se tali reti private vengono per errore connesse ad Internet, non si corre il rischio di conflitto con sistemi che sono titolari di indirizzi assegnati in accordo con le regole che governano la parte pubblica
NAT Network Address Translation Si tratta di una tecnica impiegata per connettere un insieme di host privi di indirizzi pubblici a Internet
Il NAT consente di: Connettere ad Internet una rete privata già funzionante Risparmiare indirizzi IP Tenere sotto stretto controllo il traffico scambiato tra un insieme di host ed il resto di Internet
Il NAT router è da un lato affacciato su Internet e quindi dotato di indirizzo pubblico, mentre dall altro lato si interfaccia con la rete privata
Tutto il traffico da e per Internet attraversa tale router In particolare, il router sostituisce in tutti i datagrammi uscenti l indirizzo privato dell host sorgente con il proprio indirizzo, mentre tutti i datagrammi entranti, che necessariamente hanno come indirizzo IP di destinazione quello del NAT router, dovranno essere associati all indirizzo privato dell host destinazione
Come comprende il NAT router qual è l host destinazione di ogni datagramma che gli perviene dall esterno? Impiega una opportuna tabella costruita tramite una inizializzazione manuale; esaminando i datagrammi uscenti e risalendo da questi a chi una certa richiesta è diretta; quando il router riceve una risposta alla richiesta sa a quale host della rete privata rilanciarla Sfruttando le richieste DNS da nodi esterni per macchine sulla rete privata che abbiano un nome (in tal caso è il NAT router a rispondere, fornendo il proprio indirizzo IP). Se ha in memoria l indirizzo privato corrispondente a quel nome, la corrispondenza finale risulta agevole
Viene detto IP masquerading (a volte NAT dinamico) un caso particolare di source NAT, in cui le connessioni generate da un insieme di computer vengono "presentate" verso l'esterno con un solo indirizzo IP. La tecnica è detta anche Port Address translation (PAT), IP Overloading o NAPT (Network Address and Port Translation), in quanto vengono modificati non solo gli indirizzi IP ma anche le porte TCP e UDP delle connessioni in transito. Questo metodo prevede di individuare una rete "interna" (che tipicamente utilizza indirizzi IP privati) ed una "esterna" (che tipicamente utilizza indirizzi IP pubblici), e permette di gestire solo connessioni che siano originate da host della rete "interna".