Newsgroup: it.comp.reti.ip-admin
Titolo: SUBNET Mask

Ciao a tutti.
Avrei intenzione di capire bene come funziona la subnet mask.
Ho letto l'help di NT 4 server resource KIT ma non viene spiegata l'esatta
operazione logica che permette al protocollo di capire se l'indirizzo appartiene
alla rete.
Quello che è chiarissimo è che se io configuro una sk di rete con un indirizzo
IP del tipo 
IP = 125.12.1.98
e imposto una subnet mask del tipo
MASK=255.255.255.0
allora il protocollo capisce che tutti i pacchetti destinati ad indirizzi del
tipo 125.12.1.* vengono instradati su quella sk di rete mentre gli altri no.
MASK=255.255.255.0 in binario diventa
11111111 11111111 11111111 00000000   .... sono 32 bit
Che cosa succede se io assegno una MASK del tipo
11111111 11111111 11111111 00010000   .... che corrisponde a
255.255.255.16
Quali sono gli indirizzi che passano?
Esiste una formula per determinarli (
p.es
 un AND logico, un XOR o chesso'  io?)
Ciao
	Pirla
Per rispondere in E-mail 
the....@flashnet.it
*** un bacio ai pupi ***

Esiste una formula per determinarli (
p.es
 un AND logico, un XOR o chesso'
io?)
Forse la formula l'hai capita, ma non chiedermi di spiegarla perche' non
sono un gran campione con l'AND & C.
Ciao.
Stefano.

Quali sono gli indirizzi che passano?
Allora, riepiloghiamo un poco, in un indirizzo di classe C abbiamo i
primi tre bit (partendo da sinistra) che sono 110 i seguenti 21 bit
indicano la rete e gli ultimi 8 gli host (256 massimo). Possiamo
suddividere la parte host in ulteriori 2 parti subnet e host. La
netmask serve per definire l'ampiezza dei campi subnet e host. Per
verificare se due indirizzi appartengono alla stessa subnet ti basta
fare un AND tra l'indirizzo e la netmask ed estrai la parte network e
subnet. Ad esempio consideriamo l'indirizzo 125.12.1.98 con netmask
255.255.255.0 l'AND ci dara' 125.12.1.0 che e' l'indirizzo di rete
(unica). Se voui splittare la rete in oiu' sottoreti bastera variare
gli ultimi 8 bit per avere 255.255.255.128 (2 sottoreti)
255.255.255.2192 (4 sottoreti) 255.255.255.244 (8 sottoreti) ecc. fino
a 255.255.255.252 (64 sottoreti) al di sotto del quale non puoi
scendere.
Ciao
Enrico

sono un gran campione con l'AND & C.
Mi spiace ma non l'ho capita, cosě come non ho capito quali sono gli indirizzi
che passano con l'esempio che avevo fatto e che ripeto
IP          = 125.12.1.98
MASK = 255.255.255.16
Comunque grazie per l'interessamento.


scendere.
La spiegazione è chiara, ma fino a quì diciamo che ci arriviamo quasi tutti
anche perché in questo NG si sono letti innumerevoli msg sul modo di dividere
una rete, di assegnare un certo numero di IP fissi ecc.ecc.
Il problema è stato posto a scopo puramente didattico e quindi in forma del
tutto teorica e quindi pur essendo chiara purtroppo non è completa. Mica hai
delle altre notizie in merito?
Grazie 


11111111 11111111 11111111 00010000   .... che corrisponde a
                           ^^^^^^^
Eh no: quando decidi una netmask, i bit per la rete devono essere
tutti in fila. Devi fare, ad esempio:
11111111 11111111 11111111 11110000
che corrisponde a 255.255.255.240
e quindi il computer 126.12.1.1 vede i computer che hanno indirizzo
fino a 126.12.1.15. Cosě facendo crei sue subnet all'interno della tua
subnet di classe C --quella precedente-- che "non si vedono".
Se non metti i bit in fila diventa un casino vedere quali computer si
vedono --e poi non so se funziona--.
C'č un ottimo HOWTO in Linux sull'argomento. Se ti interessa, te lo
mando via mail.
Cordialmente,
Gianni Rondinini, programmer and designer at Pierre s.n.c.
e-mail: mailto:
pie...@mail.asianet.it
homepage: 
http://www.geocities.com/Eureka/Plaza/7153
Red Hat Linux user since 9/25/97
If a train station is where the train stops, what is a work station?




 indicano la rete e gli ultimi 8 gli host (256 massimo).
Permettimi di precisare che le "classi C" non esistono piu'... ormai e' rimasto
il termine giusto come unita' di misura, quindi i primi tre bit non hanno piu'
significato (fatta eccezione per il multicast).
Infatti un blocco come ad esempio 
62.212.0.0/19
 (uno a caso... il mio :^) come
lo chiameresti, classe A, classe C ?
Ciao!
-- 
 Daniele
-------------------------------------------------------------------------------
"Linux: the operating system with a CLUE...
Command Line User Environment".
(seen in a posting in comp.software.testing)
-------------------------------------------------------------------------------
 Se telecom italia aggiungesse uno scatto al giorno ad ogni abbonato, dal
 primo Gennaio avrebbe rubato 119.922.000.000 Lire.
-------------------------------------------------------------------------------
 Daniele Orlandi - Utility Line Italia - 
http://www.orlandi.com
 Via Mezzera 29/A - 20030 - Seveso (MI) - Italy
-------------------------------------------------------------------------------

 Esiste una formula per determinarli (
p.es
 un AND logico, un XOR o chesso'  io?)
L'indirizzo della rete si ottiene con un AND bit per bit tra indirizzo completo
e subnet mask, l'indirizzo dell'host si ottiene con un AND tra indirizzo
completo e l'inverso della mask. In C sarebbe:
NetAddr=Addr & Mask;
HstAddr=Addr & ~Mask;
Ciao!
-- 
 Daniele
-------------------------------------------------------------------------------
We are using Linux daily to UP our productivity - so UP yours!
(Adapted from Pat Paulsen by Joe Sloan)
-------------------------------------------------------------------------------
 Se telecom italia aggiungesse uno scatto al giorno ad ogni abbonato, dal
 primo Gennaio avrebbe rubato 117.497.000.000 Lire.


>11111111 11111111 11111111 11110000
Io ho detto che i bit che sono a 1 e che quindi identificano la
network --o subnet come vuoi-- normalmente si mettono TUTTI IN FILA
senza "0" in mezzo, altrimenti è un casotto capire chi si vede e chi
no. Facciamo un esempio:
11111111 11111111 11111111 11110010
Se il computer 192.168.153.1 ha questa netmask, vede i computer:
192.168.153.1		-ultimo byte 11110011
192.168.153.6		-ultimo byte 11110110-
192.168.153.7		-ultimo byte 11110111-
192.168.153.10		-ultimo byte 11111010-
192.168.153.11		-ultimo byte 11111011-
192.168.153.14		-ultimo byte 11111110-
Però non è mica un gran ché immediato da vedere, e allora non si usa
mai una cosa così. Si fa:
11111111 11111111 11111111 11111000
così gli indirizzi sono in fila.


Intendi uguali tra loro? Allora qui l'operazione logica non c'entra :-(
Sì: devono avere i primi 4 bit rispettivamente uguali: però non è
detto che siano tutti a 1, ok? Considera la network:
192.168.64.0
ok? Se tu subnetti quella network --che schifo di frase-- così:
11111111 11111111 11111111 11110000
il computer che ha indirizzo 65:
01000001
vede solo quelli che hanno indirizzo:
01000010
01000011
01000100
01000101
01000110
01000111
01001000
01001001
01001010
01001011
01001100
01001101
01001110
Ok? In questo caso NON PUOI usare l'indirizzo x.x.x.64, perché ha
tutti i bit non-subnet a 0. Devi partire dal 65. e' ovvio che non puoi
usare nemmeno l'80 perché ha tutti gli ultimi 4 bit a 1, che è il
broadcast della subnet.
Il 17 non viene visto dal 68, ovviamente, perché non ha il 7° bit a 1.
Il 17 appartiene alla stessa network ma a una subnet diversa. ok? Ti
faccio l'elenco dei computer visti dal 17. La subnet del 17 è
identificata dal 16, perché è quella che ha i primi 4 bit del 4° byte
a 0 ed è:
00010000
Quindi, il 17 ovviamente vede:
00010001
00010010
00010011
00010100
...
00011101
00011110
Idem come sopra per il 32: è il broadcast della subnet.
Ora riprendiamo il tuo esempio e ti faccio i primi 10 indirizzi che
"passano":
IP	= 125.12.1.98
MASK	= 255.255.255.16
Dunque: 125.12.1.98 è:
01111101 00001100 00000001 011 0 0010
avendo incolonnato per comodità come la subnet qui sotto.
Ora, la subnet è, mettendo in evidenza i bit a 1 dell'ultimo byte:
11111111 11111111 11111111 000 1 0000
Quindi passano i seguenti indirizzi --non li metto tutti perché sono
126...--:
01111101 00001100 00000001 000 0 0001
01111101 00001100 00000001 000 0 0010
01111101 00001100 00000001 000 0 0011
01111101 00001100 00000001 000 0 0100
01111101 00001100 00000001 000 0 0101
01111101 00001100 00000001 000 0 0110
...
01111101 00001100 00000001 010 0 0110
01111101 00001100 00000001 010 0 0111
01111101 00001100 00000001 010 0 1000
...
01111101 00001100 00000001 100 0 0011
01111101 00001100 00000001 100 0 0100
01111101 00001100 00000001 100 0 0101
...
01111101 00001100 00000001 110 0 0110
01111101 00001100 00000001 110 0 0111
01111101 00001100 00000001 110 0 1000
01111101 00001100 00000001 110 0 1001
...
01111101 00001100 00000001 111 0 1100
01111101 00001100 00000001 111 0 1101
01111101 00001100 00000001 111 0 1110
e questo è l'ultimo che passa, perché quello successivo è il broadcast
della subnet di appartenenza. Guarda che questa volta devi aver capito
;)


 
Da quello che ho letto io in vari libri (e ho potuto sperimentare)
l'algoritmo per la famigerata Netmask è il seguente:
IP mittente= 
Xm.Ym.Wm.Zm
Netmask (impostata dal mittente)=Xnm.Ynm.Wnm.Znm
IP destinatario=Xd.Yd.Wd.Zd
se ((Xm & Xnm) == (Xd & Xnm)) && ((Ym & Ynm) == (Yd & Ynm))  &&
    ((Wm & Wnm) == (Wd & Wnm))  && ((Zm & Znm) == (Zd & Znm)) allora
    mittente e destinazione appartengono alla stessa rete
altrimenti mittente e destinazione non si trovano nella stessa sottorete
La notazione che ho usato è C-like quindi:
 &   indica l'operazione di AND bitwise 
 && indica l'operazione di AND logico
Ciao,
	Massimo

MASK = 255.255.255.16
Vai avanti con la prima tabellina... vedrai che ti viene una subnet a
colabrodo.
Ricorda che le subnet possono essere di 256, 128, 64, 32, 16, 8, 4 IP ma non
ci sono subnet complementari cioe' non esiste una subnet di 240 (256 - 16)
IP.
Saluti.
Stefano.

tutti in fila. Devi fare, ad esempio:
Ma tutti in fila perché è il protocollo che lo stabilisce oppure è solo per una
comodità. Perché in effetti mi sembra strano che si sia progettato un sistema
per stabilire gli indirizzi che non prevede la complementarità... si sprecano
indirizzi o no?
Comunque mi è arrivato un msg in e-mail con l'indicazione di un file sul sito
3com che parla bene della cosa.. me li studio e poi vi faccio un riassunto.


così gli indirizzi sono in fila.
Così facendo però si ha uno spreco di indirizzi e quindi è stato esteso il
protocollo IP verso un  nuovo modo di gestire gli indirizzi IP che si chiama
CIDR (classless Inter-Domain Routing) che permette di evitare di usare la
classificazione degli indirizzi in classi A,B,C.
Il discorso è abbastanza lungo e magari ci sarà occasione di parlarne ancora.
Quello che invece è per me importante è capire adesso come funziona il routing
degli address. Sto pensando ad un nuovo thread.


computer.
Ma 15 non ha il 5 bit a 1 (e allora ci appartiene o no?)
Ometto tutto il resto perché sto "studiando" la cosa. Purtroppo non ho
possibilità di sperimentare.


       ^ bit diverso -> Subnet diversa
Non usare font proporzionali per scrivere news, per favore: le
sottolineature --ad esempio questa-- vengono tutte spostate e chi usa
font monospazio --come è poi standard-- le vede sbagliate. Da me, ad
esempio, hai sottolineato l'ultimo bit :)


comodità. Perché in effetti mi sembra strano che si sia progettato un sistema
Comodità. Ho fatto prove strampalate e funzionano comunque. Però si
inkasina tutto quanto se non sono in fila... Vedi il mio lungo post
precedente :)


Ma 15 non ha il 5 bit a 1 (e allora ci appartiene o no?)
Appartiene alla subnet di tutti gli IP che hanno il 5 bit = 0.
Saluti.
Stefano.

esempio, hai sottolineato l'ultimo bit :)
Ok... ma il discorso e' corretto?
Saluti.
Stefano.

lo chiameresti, classe A, classe C ?
Adesso che ne so di più non lo chiamerei ne A ne C, nonostante gli indirizzi di
classe A e C esistono ancora (altrimenti non esisterebbe IP).
In linea generale è una subnet di una net di classe A.


Appartiene alla subnet di tutti gli IP che hanno il 5 bit = 0.
Dipende dalla direzione in cui si contano i bit: io normalmente li
conto dal più "pesante" e quindi il 5°, il 6°, il 7° e l'8° sono a 1
in 15.


Ok... ma il discorso e' corretto?
Sě, il discorso era corretto.


Ma 15 non ha il 5 bit a 1 (e allora ci appartiene o no?)
Certo che ce l'ha: i bit si contano dal piů "pesante" e non dal piů
leggero :) O, almeno, io li conto in quella direzione :)


Ciao!
Non so chi ti ha assegnato gli indirizzi, ma quando parli con il Ripe
ti danno gli indirizzi a blocchi di 256 (una classe C appunto )
:-))
Ciao
Enrico


Io lo chiamerei un blocco fatto da 20 classi C
Ciao
Enrico

Dipende dalla direzione in cui si contano i bit
Io ho rispettato in numero che gli aveda dato Pirla a cui ho risposto.
Saluti.
Stefano.

 In linea generale è una subnet di una net di classe A.
No, non e' una subnet... e' un blocco di 8192 indirizzi che inizia dal
62.212.0.0. Non e' subnet di niente...
Ciao!
-- 
 Daniele
-------------------------------------------------------------------------------
"How should I know if it works?  That's what beta testers are for.  I only
coded it."
(Attributed to Linus Torvalds, somewhere in a posting)
-------------------------------------------------------------------------------
 Se telecom italia aggiungesse uno scatto al giorno ad ogni abbonato, dal
 primo Gennaio avrebbe rubato 136.249.000.000 Lire.


 ti danno gli indirizzi a blocchi di 256 (una classe C appunto )
Il RIPE *alloca* blocchi di indirizzi di dimensione minima /19 (8192) indirizzi,
presi da quattro grossi blocchi che sono il 193/8, 194/8, 195/8 e 62/8. Il RIPE
non *alloca* mai blocchi piu' piccoli di un /19, questo principalmente per
prevenire la frammentazione dello spazio di indirizzamento ed evitare che
vengano di conseguenza annunciate troppe routes.
Il blocco 
62.212.0.0/19
 e' appunto un blocco allocato dal RIPE.
Nota che ho parlato di allocazione, non di assegnazione. Gli indirizzi vengono
routati verso di noi, ma non sono tutti "nostri", ogni singolo sottoblocco di
questo deve essere richiesto ed assegnato opportunamente.


62.212.0.0. Non e' subnet di niente...
Come faccio... 
p.es
. nel mio Windows NT server, a dirgli che voglio una rete IP
con indirizzi 
62.212.0.0/19
? (Ancora non ci sono arrivato alla sezione CIDR) :-)



Grazie mi sono tolto un grosso dubbio, o meglio e' arrivata una maggiore
conferma. Nel frattempo ho messo un font fisso :-)
Saluti.
Stefano.

 :-))
Niente affatto. Il ripe assegna ormai da tempo solo sulla lunghezza del
prefisso CIDR. Io ho assegnato spesso delle /25 delle /26 e anche delle
/27 che sono decisamente piu' piccole della "ex classe c" ( /24 ) a
organizzazioni completamente diverse tra loro. In questo modo ci si trova
ad avere entita' diverse, anche distanti tra loro, che condividono la
stessa "rete di classe C", utilizzando delle reti di prefisso piu' lungo,
che, si noti bene, non sono dei subnet di una certa rete (anzi il termine
*subnet* non ha nemmeno piu' significato in questo contesto, semmai lo ha
a livello di singola organizzazione), ma delle reti assolutamente valide e
indipendenti.
L'unica confusione che puo eventualemnete sorgere e' quella sul mapping
ip->hostname, che dal momento che il DNS e' strutturato "per ottetti" e
non e' facilmente scalabile, ci si trova a dover ricondurre tutto in
termini di /24 (e non di "classi C", la 62.x.y.z/19 di cui parlava
Daniele, si riconduce a reti con prefisso /24, che ovviamente non sono "di
classe C") 
Se scorri il db delle assegnazioni del RIPE (o la loro documentazione per
le LIR) vedrai che le assegnazioni piu' recenti vengono fatte solo in
base all'effettiva necessita' di indirizzi, arrotondando alla potenza di
due superiore, in modo da specificare unicamente il prefisso, senza nessun
riguardo per la divisione in classi, salvo il richiedente non abbia
problemi con software datato che non consente di utilizzare il CIDR.
Ciao 
Lele

 Io lo chiamerei un blocco fatto da 20 classi C
Ha ragione Daniele, non e' ne l'una ne l'altra cosa.
Formalmente e' una "classe A", perche' il prefisso iniza con 0, e non una
classe "C", il cui prefisso dovrebbe essere 110.
Praticamente non e' nemmeno un subnet di  rete di classe A, perche' il
resto della "classe A" e' stato assegnato altrove, e il suo provider
annuncia in BGP soltanto quel blocco, mentre qualcun altro altrove
annuncia il resto della rete, quindi ogni "frazione" e' una entita'
indipendente.
Il termine "classe C" non e' una unita' di misura che indica 256
indirizzi. Ai suoi tempi indicava uno spazio ben preciso dell'insieme
degli indirizzi IP, non solo la dimensione della rete. Cioe' quelli il cui
prefisso comincia con 110, quindi le reti di 256 indirizzi comprese tra
192.0.0.0 e 223.255.255.255.
Se vuoi utilizzare la notazione CIDR, puoi parlare di /24 (che indica una
parte "fissa" (=prefisso) della rete pari a 24 bit, quindi i restanti 8
specificano il singolo host.
Da qui ad esempio la 
62.0.0.0/19
 e' suddivisibile in 2 reti "/20", 4 reti
"/21", 8 reti "/22" ecc.. e qualunque combinazione legale (=senza
sovrapposizioni) delle stesse.
Ciao
Lele

 con indirizzi 
62.212.0.0/19
? (Ancora non ci sono arrivato alla sezione CIDR) :-)
Al tuo NT "server" devi solo dire quale e' il suo indirizzo e qual'e' la subnet
mask del segmento di rete al quale e' collegato. Lui non sa quanto sia esteso il
blocco, se e come viene annunciato e dove viene routato, lui sa solo che un
indirizzo e' sulla  rete locale (nel qual caso manda il pacchetto direttamente)
o fuori, nel qual caso lo manda al default gateway.
Io, per esempio, ho assegnato ad una delle nostre LAN il blocco 
62.212.0.0/24
,
ovvero l'equivalente di una classe C come numero di indirizzi.
La configurazione di un server potra' essere:
IP Addr: 62.212.0.2
Netmask: 255.255.255.0
Gateway: 62.212.0.1
Ciao!
-- 
 Daniele
-------------------------------------------------------------------------------
"Oh, I've seen copies [of Linux Journal] around the terminal room at The
Labs."
(By Dennis Ritchie)
-------------------------------------------------------------------------------
 Se telecom italia aggiungesse uno scatto al giorno ad ogni abbonato, dal
 primo Gennaio avrebbe rubato 137.153.000.000 Lire.


Gateway: 62.212.0.1
Ok grazie. 
A questo punto approfondirň il problema dei router.
Qualcuno sa consigliarmi in rete qualche documentazione abbastanza dettagliata
come quella della 3Com per gli Ip Address?
Altra domanda... se io ho una rete semplice... cioč formata da tanti PC ognuno
dei quali ha una scheda di rete ed un cavo che va a finire in un Hub... questa
rete č compresa tutta in una subnet? Oppure anche in questo modo posso definire
piů subnet? Forse dovrei fare un esempio ma adesso non mi viene :-)


le...@windmill.ibn.it
 wrote:
 >L'unica confusione che puo eventualemnete sorgere e' quella sul mapping
 >ip->hostname, che dal momento che il DNS e' strutturato "per ottetti" e
 >non e' facilmente scalabile, ci si trova a dover ricondurre tutto in
Se si usa la strategia suggerita tempo fa in un draft (una serie di CNAME)
diventa scalabile anche questo.
-- 
ciao, | [Per rispondere togli "toglimi" dal mio indirizzo.]
Marco | * The Internet is not for sissies.  -- Paul Vixie *

 diventa scalabile anche questo.
Si, ho presente. E' innegabile pero' che sia una "toppa", la divisione in
ottetti si vede e come, se non vanno bene questi ultimi bisogna riportare
tutto a singoli host.
Ciao
Lele

più subnet? Forse dovrei fare un esempio ma adesso non mi viene :-)
Uno hub non fa altro che unire insieme tutti i cavi con connettori
"rj45" che escono dai vari computer e quindi la eventuale divisione in
subnet dipende solo dagli indirizzi IP delle varie macchine. Infatti,
ricevuto un pacchetto da una porta, uno hub lo invia a tutte le altre
porte. Diverso è il discorso per i router e gli switch, che fanno
delle operazioni più complesse.


subnet dipende solo dagli indirizzi IP delle varie macchine.
In una situazione come questa quindi, se ho due subnet presenti, come faccio a
farle colloquiare senza aggiungere router o switch?
Presumo che sia necessario un PC che faccia da router, ma questo deve avere due
sk di rete o ne basta una sola?


 sk di rete o ne basta una sola?
Ne può bastare una con due indirizzi (uno per subnet) e con SW che gestice il
routing.
-- 
			Luca Amicone
--
	Chi aumenta sapienza, aumenta dolore.
		-- G. Bruno

routing.
E' qualcosa che ha a che fare con Ip-forward (che si trova per esempio in NT)
oppure è necessario qualcos'altro?
In questo caso il PC che ha i due indirizzi viene chiamato Gateway? Cioè è qui
che devono arrivare i pacchetti destinati all'altra subnet?


Io ho rispettato in numero che gli aveda dato Pirla a cui ho risposto.
Non avevo notato. Cmq ci siamo capiti :)


 che devono arrivare i pacchetti destinati all'altra subnet?
Esatto. 8)
-- 
			Luca Amicone
--
	Ricetta.
	Dissossate la verità per cucinarla meglio.
		-- M. Marchesi