Subnet Mask

« Older   Newer »
  Share  
view post Posted on 16/4/2010, 20:04

Group:
,,,..--::|| AMMINISTRATORE ||::--..,,,
Posts:
1,602
Location:
Scheda di rete

Status:


Nell'architettura delle reti di elaboratori TCP/IP, una subnet mask o maschera di sottorete, è un numero che distingue quale porzione di un indirizzo ip identifica la (sotto)rete e quale l'host. È necessaria ad un dispositivo sorgente che vuole comunicare con un secondo dispositivo destinatario per decidere se spedire direttamente all'indirizzo IP del destinatario o se spedire i pacchetti tramite il router della propria rete locale.

Viene espressa in due modi: in notazione decimale classless, dove l'indirizzo ip di una (sotto)rete è seguito da una barra e un numero (/24 rappresenta la subnet mask, 192.168.0.0/24 la subnet)

* 192.168.0.0/24

in notazione decimale puntata, cioè con un indirizzo di 32 bit scritto sotto forma di 4 numeri decimali (8 bit ciascuno) separati da un punto, come se fosse un indirizzo ip

* 255.255.255.0

Dalla prima notazione (spesso nota come "slash notation") si deduce il numero dei bit dell'indirizzo IP che identificano la (sotto)rete, 24, e quanti l'host, 8. Più precisamente, si assume che i primi 24 bit sono uguali per tutti gli IP dei dispositivi logicamente presenti nella stessa rete, mentre gli ultimi 8 bit variano, identificando in maniera univoca ciascun dispositivo.

La seconda notazione è invece quella generalmente usata per configurare l'indirizzo ip di un computer.

La prima notazione ci da più informazioni,poiché oltre a far intendere qual è la subnet mask, ci dice qual è la rete a cui ci stiamo riferendo. Per l'esempio visto la rete è 192.168.0 ; con l'ultima cifra da 8 bit che varierà al variare dell' host (es: 192.168.0.1 ; 192.168.0.2 .....). Quindi ogni host che si collegherà alla rete 192.168.0 avrà un IP del tipo 192.168.0.xxx .

Da notare che entrambe le notazioni sono corrispondenti, e rappresentano la stessa subnet mask: 24 equivale al numero di bit 1 consecutivi presenti nella maschera, dopodiché i rimanenti sono tutti 0; 255.255.255.0 rappresenta un valore binario formato esattamente da ventiquattro bit 1 seguiti da otto bit 0.

24 -> 11111111.11111111.11111111.00000000
255.255.255.0 -> 11111111.11111111.11111111.00000000

Dalla subnet mask si deduce facilmente anche il numero massimo di host presenti nella subnet considerata: con n bit per gli host si hanno 2n possibili valori, e in particolare si potranno assegnare 2n-2 indirizzi validi alle macchine(o più in generale alle interfacce di rete) di tale sottorete. Tale "limitazione" è dovuta al fatto che due degli indirizzi di qualsiasi rete (o sottorete) assumono un significato particolare e non sono quindi utilizzabili:

* l'indirizzo con tutti i bit della parte host a 0 identifica la rete stessa;
* l'indirizzo con tutti i bit della parte host a 1 indica il broadcast (messaggio inviato a tutte le macchine della rete);


Più precisamente:

Per determinare il numero massimo di indirizzi utili in una subnet basta contare il numero n di bit 0 a destra della subnet mask, porre n come esponente di 2, e sottrarre a ciò i due indirizzi riservati (uno indica la sottorete stessa, l'altro è usato per fare broadcast). La formula è dunque: 2n - 2

Usando la notazione decimale classless (es: w.x.y.z/m), è altresì possibile calcolare il numero massimo di indirizzi utili con la seguente formula: 2(32-m) - 2, del tutto equivalente a quella precedente. Infatti m indica il numero di bit 1 presenti nella subnet mask, quindi m+n=32

Quando il sistema operativo (più precisamente: il livello IP dello stack TCP/IP) riceve da un programma la richiesta di inviare un pacchetto IP ad un certo indirizzo IP destinatario, per prima cosa calcola l'AND logico fra la subnet mask e il proprio indirizzo IP, e lo confronta con l'AND logico tra la subnet mask e l'indirizzo IP di destinazione. Se il risultato delle operazioni è identico (cioè i bit che identificano l'id di rete, o net ID, sono identici, mentre variano solo i bit dell'id di host) allora invierà il pacchetto nella rete locale indirizzandolo con l'indirizzo di rete locale del PC destinatario (se non conosce tale indirizzo userà il protocollo ARP per trovarlo); se invece il risultato delle operazioni è differente significa che il computer destinatario non appartiene alla rete locale, e il pacchetto verrà trasmesso al gateway della rete locale affinché lo instradi verso la rete remota che contiene il computer destinatario.


Una volta determinato quanti bit dedicheremo alla subnet ID e quanti alla host ID, possiamo designare quale sarà la nostra subnet mask. Iniziamo specificando la default subnet mask in binario per ogni classe di rete. A partire dallo zero più a sinistra nella maschera possiamo cambiare tutti quei bit fino al primo 1 che incontriamo a partire da sinistra così come abbiamo deciso di dedicare alla subnet ID. Possiamo adesso esprimere la subnet mask in base decimale. Nella figura sottostante mostra come le subnet mask personalizzate possono essere determinate per ognuna delle opzioni di subnet per una rete di classe C, sia in binario che in decimale.

Fino a che ci sono 8 bit per definire l'host ID in una rete di classe C, ci sono sei modi differenti in cui una rete può essere mascherata. Ognuno corrisponde ad una diferente subnet personalizzata, quando viene creata cambiando i bit allocati per la subnet ID da 0 a 1

Così come nell'esempio in figura , considerando una rete in classe C ( ex 192.168.45.0 ) Ci sono 8 bit nella host ID di default, che permettono di avere sei differenti opzioni di mascheratura ( non è possibile utilizzare i bit 7 e 8 per definire la subnet ID ). Supponiamo di utilizzare 3 bit per definire la subnet ID e lasciare gli altri 5 per l'host ID.

Per determinare la subnet mask , partiamo dalla subnet di default per una rete in classe C :

11111111 11111111 11111111 00000000

Cambiamo adesso i primi tre 0 che troviamo a partire da destra in 1 , per ottenere la subnet mask personalizzata:

11111111 11111111 11111111 11100000


in formato decimale viene tradotta così 255.255.255.224
Precisazioni [modifica]

L'indirizzo di subnet è l'indirizzo di una intera subnet (192.168.0.0/16).

Qui, per subnet, intendiamo un insieme di macchine tali da appartenere allo stesso dominio di broadcast.

La subnet mask è un numero, che denota quale parte di un indirizzo ip identifica la (sotto)rete e quale l'host

Considerato che stiamo parlando del livello ip, è più appropriato usare il termine router piuttosto che gateway
Un esempio pratico [modifica]

Supponiamo che il protocollo IP del nostro computer sia configurato come segue:

* indirizzo IP: 192.168.32.97
* subnet mask: 255.255.255.224

e che richiediamo di connetterci all'indirizzo IP 192.168.32.130

prima di tutto trasformiamo in notazione binaria gli indirizzi IP e la subnet mask:

192.168.032.097 = 11000000.10101000.00100000.01100001
192.168.032.130 = 11000000.10101000.00100000.10000010

255.255.255.224 = 11111111.11111111.11111111.11100000

allora il livello IP calcolerà:

11000000.10101000.00100000.01100001 AND (192.168.032.097)
11111111.11111111.11111111.11100000 = (255.255.255.224)
-------------------------------------
11000000.10101000.00100000.01100000 (192.168.032.096)

Ora ripetiamo l'operazione con l'IP di destinazione:

11000000.10101000.00100000.10000010 AND (192.168.032.130)
11111111.11111111.11111111.11100000 = (255.255.255.224)
-------------------------------------
11000000.10101000.00100000.10000000 (192.168.032.128)

I risultati 192.168.32.96 e 192.168.32.128 indicano due sottoreti differenti, e quindi le macchine appartengono a sottoreti differenti.

Notiamo che con una subnet mask 255.255.255.224 è possibile avere un range di 30 indirizzi utili per subnet, in quanto 2(32-27) - 2 = 25 - 2 = 30.

L'indirizzo 192.168.32.97 appartiene al range tra 192.168.32.96 e 192.168.32.127

L'indirizzo 192.168.32.130 appartiene al range tra 192.168.32.128 e 192.168.32.159


Se l'IP destinazione fosse stato 192.168.32.100, i due indirizzi avrebbero indicato macchine appartenenti alla medesima sottorete:

11000000.10101000.00100000.01100100 AND (192.168.032.100)
11111111.11111111.11111111.11100000 = (255.255.255.224)
-------------------------------------
11000000.10101000.00100000.01100000 (192.168.032.096)


ESEMPIO: come trovare la subnet mask della subnet 61.161.16.224/27

27 rappresenta il numero di bit 1 più significativi della subnet mask

32-27 = 5 rappresenta il numero di bit 0 meno significativi della subnet mask

quindi:

11111111.11111111.11111111.11100000 = 255.255.255.224

Si noti che la subnet mask è un numero, mentre la subnet rappresenta un insieme di indirizzi IP. È quindi possibile, e del tutto normale, che subnet differenti (es 192.168.0.0/16, 132.144.0.0/16) abbiano la stessa subnet mask (in questo caso: 255.255.0.0)

Aggiungo una tabella a chiarificare l'immagine (errata) sopra riportata: A partire da sinistra abbiamo la notazione Classless, la maschera di rete, le reti disponibili, gli host per network e il totale degli host.

/24 255.255.255.0 1 254 254
/25 255.255.255.128 2 126 252
/26 255.255.255.192 4 62 248
/27 255.255.255.224 8 30 240
/28 255.255.255.240 16 14 224
/29 255.255.255.248 32 6 192
/30 255.255.255.252 64 2 128
/31 255.255.255.254 128 2 ** 256

* Classless Inter Domain Routing
o Solo per Collegamenti Point to Point.
 
Web     Top
0 replies since 16/4/2010, 20:04   383 views
  Share