Analizziamo, in questo post, quella che è la più semplice forma di indirizzamento IP: l'indirizzamento CLASSFULL.
In posts successivi ci complicheremo la vita analizzando cose *strane* come il SUBNETTING ed il SUPERNETTING.
Innanzitutto, come ormai tutti ma proprio tutti sanno, un indirizzo IP è una sequenza di 32 bit che per nostra comodità raggruppiamo in quattro gruppi di otto bit ognuno (1 byte) separati da punto.
Detto in altri termini usualmente un indirizzo IP viene rappresentato come una sequenza di quattro decimali separati da punto ed ognuno di questi decimali può assumere un valore che va da 0 a 255: X.Y.Z.W.
Precisiamo che, indipendentemente dalla convenzione di cui sopra, all'interno degli host (pc, router, server....) un indirizzo IP è sempre e comunque una sequanza ininterrotta di 32 bit.
Ma quali informazioni contiene un indirizzo IP?
Per rispondere a questa domanda dobbiamo fare un passo indietro e cercare di capire cosa vuol dire il fatto che IP è un protocollo ROUTED (da non confondere con i protocolli di ROUTING!).
Vale la pena di osservare che questa caratteristica non è propria solo di IP ma anche di altri protocolli di Livello 3 della pila ISO/OSI (magari in futuro ne parliamo!!) come ad esempio IPX ed AppleTalk.
Questo vuol dire che indipendentemente dal numero di bit che compongono l'indirizzo, in questo è sempre chiaramente distinguibile almeno una parte network (NETWORK ID) ed una parte host (HOST ID): il NETWORK ID serve per identificare la rete in cui è localizzato l'host, l'HOST ID serve per identificare l'host stesso al'interno della rete (sono, rispettivamente, come la città in cui si vive e la via in cui si abita, per capirci!).
Gli indirizzi IP in cui la parte ID HOST è tutta 0 servono per identificare la NETWORK, mentre gli indirizzi IP in cui la parte ID HOST è tutta 1 identificano i Broadcast sulla nmetwork (Direct Broadcast).
Questa distinzione permette di dividere una rete in un numero a piacere di reti più piccole o di mettere in comunicazione tra loro reti diverse e poi di fare routing, cioè di capire se il destinatario di una comunicazione è locale o remoto (in maniera molto semplice.... magari in un altro post approfondiremo!).
Tutto questo è sempre vero sotto l'assunzione che ogni rete è caratterizzata da un unico NETWORK ID, reti diverse hanno NETWORK ID diversi ed all'interno di ogni rete non esistono due host con lo stesso HOST ID.
Ad esempio:
IPX: indirizzo di 80 bit di cui i primi 32 da sinistra sono il NETWORK ID e i restanti 48 sono l'HOST ID (di default coincidente con il MAC address)
E IP? Beh, la cosa è un pò più complessa poichè la suddivisione tra parte NETWORK e parte HOST non è fissa bensì variabile.
In particolare, nel caso più semplice (INDIRIZZAMENTO CLASSFULL):
INDIRIZZO IP DI CLASSE A: la parte NETWORK è tutto il primo byte: N.H.H.H
INDIRIZZO IP DI CLASSE B: la parte NETWORK sono i primi due byte: N.N.H.H
INDIRIZZO IP DI CLASSE C: la parte NETWORK sono i primi tre byte: N.N.N.H
INDIRIZZO IP DI CLASSE D: indirizzamento MULTICAST
INDIRIZZO IP DI CLASSE E: Classe Riservata
Abbastanza semplice, ma sorge spontanea un'altra domanda: come si fa a capire se un indirizzo IP è di classe A, B, C, D o E?
Per distinguere la classe di un indirizzo basta guardare il valore del primo byte a sinistra: First Octet Rule.
In particolare:
CLASSE A: il valore del primo bit a sinistra è fisso a 0 (0xxxxxxx), per cui il range di valori ammissibili sul primo byte è 0-127. 0 non viene ovviamente utilizzato mentre 127 è utilizzato per fini di diagnostica (dice nulla 127.0.0.1?!). Dunque il range effettivo è 1-126.
CLASSE B: il valore dei primi due bit a sinistra è fisso a 10 (10xxxxxx), per cui il range di valori ammissibili sul primo byte è 128-191
CLASSE C: il valore dei primi tre bit a sinistra è fisso a 110 (110xxxxx), per cui il range di valori ammissibili sul primo byte è 192-223
CLASSE D: il valore dei primi quattro bit a sinistra è fisso a 1110 (1110xxxx), per cui il range di valori ammissibili sul primo byte è 224-239
Ricapitolando:
CLASSE A:
Range: X.0.0.1 - X.255.255.254
Network: X.0.0.0
Broadcast: X.255.255.255
dove X= 1/126
CLASSE B:
Range: X.Y.0.1 - X.Y.255.254
Network: X.Y.0.0
Broadcast: X.Y.255.255
dove X= 128/191, Y=0/255
CLASSE C:
Range: X.Y.Z.1 - X.Y.Z.254
Network: X.Y.Z.0
Broadcast: X.Y.Z.255
dove X= 192/223, Y=0/255, Z=0/255
Questa regola abbastanza semplice serve però solo a noi esseri umani! Per tutta una serie di motivazioni, è abbastanza impensabile che un host applichi tutti questi ragionamenti per comprendere la classe di appartenenza del proprio indirizzo e quella del destinatario di una qualsivoglia comunicazione.
E allora? E' chiaro a tutti noi che quando configuriamo i parametri TCP/IP su un host gli unici parametri obbligatori sono l'indirizzo IP ed un oggetto chiamato SUBNET MASK, ma questo sarà oggetto di un prossimo post.
Alla prossima!