[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]
La funzionalità più importante di un sistema Unix è la possibilità di comunicare attraverso la rete. Prima di iniziare a vedere le particolarità delle reti TCP/IP, tipiche degli ambienti Unix, conviene introdurre alcuni concetti generali.
Nell'ambito di questo contesto, il termine rete si riferisce idealmente a una maglia di collegamenti. In pratica indica un insieme di componenti collegati tra loro in qualche modo a formare un sistema (Questo concetto si riferisce alla teoria dei grafi). Ogni nodo di questa rete corrisponde generalmente a un elaboratore, che spesso viene definito host (elaboratore host), o anche stazione; i collegamenti tra questi nodi consentono il passaggio di dati in forma di pacchetti.
Una rete può essere più o meno estesa; in tal senso si usano degli acronimi standard:
LAN, Local area network, rete locale
quando la rete è contenuta nell'ambito di un edificio, o di un piccolo gruppo di edifici adiacenti;
MAN, Metropolitan area network, rete metropolitana
quando la rete è composta dall'unione di più LAN nell'ambito della stessa area metropolitana, in altri termini si tratta di una rete estesa sul territorio di una città;
WAN, Wide area network, rete geografica
quando la rete è composta dall'unione di più MAN ed eventualmente anche di LAN, estendendosi geograficamente oltre l'ambito di una città singola.
Evidentemente, Internet è una rete WAN.
Le strutture fondamentali delle reti (si parla in questo caso di topologia di rete) sono di tre tipi:
Si ha una rete a stella quando tutti i nodi periferici sono connessi a un nodo principale in modo indipendente dagli altri. Così, tutte le comunicazioni passano per il nodo centrale e in pratica sono gestite completamente da questo. Rientra in questa categoria il collegamento punto-punto, o point-to-point, in cui sono collegati solo due nodi.
|
Si ha una rete ad anello quando tutti i nodi sono connessi tra loro in sequenza, in modo da formare un anello ideale, dove ognuno ha un contatto diretto solo con il precedente e il successivo. In questo modo, la comunicazione avviene (almeno in teoria) a senso unico e ogni nodo ritrasmette al successivo i dati che non sono destinati allo stesso.
|
Si ha una rete a bus quando la connessione dei nodi è condivisa da tutti, per cui i dati trasmessi da un nodo sono intercettabili da tutti gli altri. In questa situazione la trasmissione simultanea da parte di due nodi genera un collisione e la perdita del messaggio trasmesso.
|
I dati viaggiano nella rete in forma di pacchetti. Il termine è appropriato perché si tratta di una sorta di confezionamento delle informazioni attraverso cui si definisce il mittente e il destinatario dei dati trasmessi.
Il confezionamento e le dimensioni dei pacchetti dipendono dal tipo di rete fisica utilizzata.
I dati sono un materiale duttile che può essere suddiviso e aggregato in vari modi. Ciò significa che, durante il loro tragitto, i dati possono essere scomposti e ricomposti più volte e in modi differenti. Per esempio, per attraversare un segmento di una rete particolare, potrebbe essere necessario suddividere dei pacchetti troppo grandi in pacchetti più piccoli, oppure potrebbe essere utile il contrario.
In particolare, si parla di incapsulamento quando i pacchetti vengono inseriti all'interno di altri pacchetti; inoltre si parla di tunnel quando questa tecnica viene usata in modo sistematico tra due punti.
A questo punto, dovrebbe essere evidente che il significato del termine pacchetto può avere valore solo in riferimento a un contesto preciso. Sui documenti che trattano delle reti in modo più approfondito, si parla anche di trama e di PDU (Protocol data unit), ma in generale, se non c'è la necessità di distinguere sfumature particolari di questo problema, è meglio evitare di usare termini che potrebbero creare confusione.
Il termine datagramma, rappresenta il pacchetto di un protocollo non connesso; per questo non va inteso come sinonimo di pacchetto in senso generale.
I pacchetti di dati vengono trasmessi e ricevuti in base a delle regole definite da un protocollo di comunicazione.
A qualunque livello della nostra esistenza è necessario un protocollo per comunicare: in un colloquio tra due persone, chi parla invia un messaggio all'altra che, per riceverlo, deve ascoltare. Volendo proseguire con questo esempio, si può anche considerare il problema dell'inizio e della conclusione della comunicazione: la persona con cui si vuole comunicare oralmente deve essere raggiunta e si deve ottenere la sua attenzione, per esempio con un saluto; alla fine della comunicazione occorre un modo per definire che il contatto è terminato, con una qualche forma di commiato.
Quanto appena visto è solo una delle tante situazioni possibili. Si può immaginare cosa accada in un'assemblea o in una classe durante una lezione.
La distinzione più importante tra i protocolli è quella che li divide in connessi e non connessi. Il protocollo non connesso, o datagramma, funziona in modo simile all'invio di una cartolina, o di una lettera, che contiene l'indicazione del destinatario ma non il mittente. In tal caso, il protocollo non fornisce il mezzo per determinare se il messaggio è giunto o meno a destinazione. Il protocollo connesso prevede la conferma dell'invio di un messaggio, la ritrasmissione in caso di errore e la ricomposizione dell'ordine dei pacchetti.
La gestione della comunicazione in una rete è un problema complesso; in passato, questo è stato alla base delle maggiori incompatibilità tra i vari sistemi, a cominciare dalle differenze legate all'hardware.
Il modello OSI (Open system interconnection), diventato parte degli standard ISO, scompone la gestione della rete in livelli, o strati (layer). Questo modello non definisce uno standard tecnologico, ma un riferimento comune ai concetti che riguardano le reti.
I livelli del modello ISO-OSI sono sette e, per tradizione, vanno visti nel modo indicato nell'elenco seguente, dove il primo livello è quello più basso ed è a contatto del supporto fisico di trasmissione, mentre l'ultimo è quello più alto ed è a contatto delle applicazioni utilizzate dall'utente.
Livello | Definizione | Contesto |
7 | Applicazione | Interfaccia di comunicazione con i programmi (Application program interface). |
6 | Presentazione | Formattazione e trasformazione dei dati a vario titolo, compresa la cifratura e decifratura. |
5 | Sessione | Instaurazione, mantenimento e conclusione delle sessioni di comunicazione. |
4 | Trasporto | Invio e ricezione di dati in modo da controllare e, possibilmente, correggere gli errori. |
3 | Rete | Definizione dei pacchetti, dell'indirizzamento e dell'instradamento in modo astratto rispetto al tipo fisico di comunicazione. |
2 | Collegamento dati (data link) | Definizione delle trame (frame) e dell'indirizzamento in funzione del tipo fisico di comunicazione. |
1 | Fisico | Trasmissione dei dati lungo il supporto fisico di comunicazione. |
Per comprendere intuitivamente il significato della suddivisione in livelli del modello ISO-OSI, si può provare a tradurre in questi termini l'azione di intrattenere una corrispondenza cartacea con qualcuno: Tizio scrive a Caio e probabilmente lo stesso fa Caio nei confronti di Tizio.
L'abbinamento che viene proposto non è assoluto o definitivo; quello che conta è soltanto riuscire a comprendere il senso delle varie fasi e il motivo per cui queste esistono nel modello ISO-OSI. |
Quando Tizio si accinge a scrivere una lettera a Caio, si trova al livello più alto, il settimo, del modello ISO-OSI. Tizio sa cosa vuole comunicare a Caio, ma non lo fa ancora, perché deve decidere la forma in cui esprimere i concetti nel foglio di carta.
Quando Tizio comincia a scrivere, si trova al livello sesto del modello, perché ha definito il modo in cui il suo pensiero si trasforma in codice su carta. Naturalmente, ciò che scrive dovrà essere comprensibile a Caio; per esempio, se Tizio scrive normalmente da destra verso sinistra nei suoi appunti personali, dovrà avere cura di scrivere a Caio usando la forma «standard» (da sinistra verso destra); eventualmente, se non può fare a meno di scrivere in quel modo, dovrà provvedere a fare una fotocopia speciale del suo scritto, in modo da raddrizzare il testo.
La lettera che scrive Tizio può essere un messaggio fine a se stesso, per il quale non serve che Caio risponda espressamente, oppure può essere una fase di una serie di lettere che i due devono scriversi per definire ciò che interessa loro. Questa caratteristica riguarda il quinto livello.
Quando Tizio inserisce la sua lettera nella busta, deve decidere che tipo di invio vuole fare. Per esempio può trattarsi di lettera normale, con la quale non può sapere se questa è giunta effettivamente a destinazione, oppure può essere una raccomandata con avviso di ricevimento. Questo problema risiede nel quarto livello.
Infine, Tizio mette l'indirizzo di destinazione e il mittente, quindi mette la busta in una cassetta della posta. Da questo punto in poi, Tizio ignora ciò che accade alla busta contenente la sua lettera diretta a Caio.
Il sistema postale che si occupa di prelevare e portare la busta di Tizio all'indirizzo di Caio, è in pratica ciò che corrisponde ai primi due livelli del modello. Per la precisione, il secondo livello richiede la definizione delle coordinate terrestri corrispondenti all'indirizzo. In altri termini, la via e il numero di una certa città, sono un'astrazione umana di ciò che in realtà corrisponde a un punto particolare sul pianeta. Per raggiungere questo punto, il servizio postale si avvale delle vie di comunicazione disponibili: strade, ferrovie, navigazione fluviale, marittima e aerea. In questo senso, le vie di comunicazione e i mezzi di trasporto usati, costituiscono il primo livello del modello di riferimento.
I dati da trasmettere attraverso la rete, vengono prodotti al livello più alto del modello, quindi, con una serie di trasformazioni e aggiungendo le informazioni necessarie, vengono passati di livello in livello fino a raggiungere il primo, quello del collegamento fisico. Nello stesso modo, quando i dati vengono ricevuti dal livello fisico, vengono passati e trasformati da un livello al successivo, fino a raggiungere l'ultimo.
In questo modo, si può dire che a ogni passaggio verso il basso i pacchetti vengano imbustati in pacchetti (più grandi) del livello inferiore, mentre, a ogni passaggio verso l'alto, i pacchetti vengono estratti dalla busta di livello inferiore. In questa circostanza, si parla preferibilmente di PDU di livello n (Protocol data unit) per identificare il pacchetto realizzato a un certo livello del modello ISO-OSI.
|
Nel passaggio da un livello a quello inferiore, l'imbustamento implica un aumento delle dimensioni del pacchetto, ovvero del PDU. A certi livelli, può essere introdotta la frammentazione e la ricomposizione dei pacchetti, a seconda delle esigenze di questi.
In precedenza sono stati visti i tipi elementari di topologia di rete. Quando si vogliono unire due reti per formarne una sola più grande, si devono utilizzare dei nodi speciali connessi simultaneamente a entrambe le reti da collegare. A seconda del livello su cui intervengono per effettuare questo collegamento, si parla di ripetitore, bridge, router o gateway.
Il ripetitore è un componente che collega due reti fisiche intervenendo al primo livello ISO-OSI. In questo senso, il ripetitore non filtra in alcun caso i pacchetti, ma rappresenta semplicemente un modo per allungare un tratto di rete che per ragioni tecniche non potrebbe esserlo diversamente. Il ripetitore tipico è l'HUB, ovvero il concentratore di rete.
|
Il bridge mette in connessione due (o più) reti limitandosi a intervenire nei primi due livelli del modello ISO-OSI. Di conseguenza, il bridge è in grado di connettere tra loro solo reti fisiche dello stesso tipo.
In altri termini, si può dire che il bridge sia in grado di connettere reti separate che hanno uno schema di indirizzamento compatibile.
Il bridge più semplice duplica ogni pacchetto, del secondo livello ISO-OSI, nelle altre reti a cui è connesso; il bridge più sofisticato è in grado di determinare gli indirizzi dei nodi connessi nelle varie reti, in modo da trasferire solo i pacchetti che necessitano questo attraversamento.
Dal momento che il bridge opera al secondo livello ISO-OSI, non è in grado di distinguere i pacchetti in base ai protocolli di rete del terzo livello (TCP/IP, IPX/SPX, ecc.) e quindi trasferisce indifferentemente tali pacchetti.
Teoricamente, possono esistere bridge in grado di gestire connessioni con collegamenti ridondanti, in modo da determinare automaticamente l'itinerario migliore per i pacchetti e da bilanciare il carico di utilizzo tra diverse connessioni alternative. Tuttavia, questo compito viene svolto preferibilmente dai router.
|
Il router mette in connessione due (o più) reti intervenendo al terzo livello del modello ISO-OSI. Di conseguenza, il router è in grado di trasferire solo i pacchetti di un tipo di protocollo di rete determinato (TCP/IP, IPX/SPX, ecc.), indipendentemente dal tipo di reti fisiche connesse effettivamente.
In altri termini, si può dire che il router sia in grado di connettere reti separate che hanno schemi di indirizzamento differenti, ma che utilizzano lo stesso tipo di protocollo di rete al terzo livello ISO-OSI.
|
L'instradamento dei pacchetti attraverso le reti connesse al router avviene in base a una tabella di instradamento che può anche essere determinata in modo dinamico, in presenza di connessioni ridondanti, come già accennato per il caso dei bridge.
Il gateway mette in connessione due (o più) reti intervenendo all'ultimo livello, il settimo, del modello ISO-OSI. In questo senso, il suo scopo non è tanto quello di connettere delle reti differenti, ma di mettere in connessione i servizi di due o più ambienti che altrimenti sarebbero incompatibili.
Il nome TCP/IP rappresenta un sistema di protocolli di comunicazione basati su IP e si tratta di quanto utilizzato normalmente negli ambienti Unix. In pratica, il protocollo IP si colloca al terzo livello ISO-OSI, mentre TCP si colloca al di sopra di questo e utilizza IP al livello inferiore. In realtà, il TCP/IP annovera anche un altro protocollo importante: UDP.
I vari aspetti del sistema di protocolli TCP/IP si possono apprendere mano a mano che si studiano gli indirizzamenti e i servizi di rete che vengono resi disponibili. In questa fase conviene rivedere il modello ISO-OSI in abbinamento al TCP/IP.
Tabella 111.2. Modello ISO-OSI di suddivisione delle competenze di un sistema TCP/IP.
Livello | Definizione | Descrizione |
7 | Applicazione | Applicazioni. |
6 | Presentazione | Definizione standard del formato dei dati utilizzati. |
5 | Sessione | Protocolli dei servizi (FTP, HTTP, SMTP, RPC, ecc.). |
4 | Trasporto | Protocolli TCP, UDP e ICMP. |
3 | Rete | Protocollo IP. |
2 | Collegamento dati | Trasmissione e ricezione dati dipendente dal tipo di hardware. |
1 | Fisico | Hardware. |
A parte la descrizione che si fa nel seguito, il TCP/IP vede in pratica solo quattro livelli, che in alcuni casi incorporano più livelli del modello tradizionale. La figura 111.8 cerca di semplificare questo abbinamento.
|
Questo comunque non significa che gli strati del modello tradizionale non esistono. Piuttosto possono essere svolti all'interno di una sola applicazione, oppure sono al di fuori della competenza del protocollo TCP/IP.
A livello elementare, la comunicazione attraverso la rete deve avvenire in un modo compatibile con le caratteristiche fisiche di questa. In pratica, le connessioni devono avere una forma di attuazione al secondo livello del modello appena presentato (collegamento dati); i livelli superiori sono solo astrazioni della realtà che c'è effettivamente sotto. Per poter utilizzare un protocollo che si ponga al terzo livello, come nel caso di IP che viene descritto più avanti, occorre un modo per definire un abbinamento tra gli indirizzi di questo protocollo superiore e gli indirizzi fisici delle interfacce utilizzate effettivamente, secondo le specifiche del livello inferiore.
Volendo esprimere la cosa in modo pratico, si può pensare alle interfacce Ethernet, che hanno un sistema di indirizzamento composto da 48 bit. Quando con un protocollo di livello 3 (rete) si vuole contattare un nodo identificato in maniera diversa da quanto previsto al livello 2, se non si conosce l'indirizzo Ethernet, ma ammettendo che tale nodo si trovi nella rete fisica locale, viene inviata una richiesta circolare secondo il protocollo ARP (Address resolution protocol).
La richiesta ARP dovrebbe essere ascoltata da tutte le interfacce connesse fisicamente a quella rete fisica e ogni nodo dovrebbe passare tale richiesta al livello 3, in modo da verificare se l'indirizzo richiesto corrisponde al proprio. In questo modo, il nodo che ritiene di essere quello che si sta cercando dovrebbe rispondere, rivelando il proprio indirizzo Ethernet.
Ogni nodo dovrebbe essere in grado di conservare per un certo tempo le corrispondenze tra gli indirizzi di livello 2 con quelli di livello 3, ottenuti durante il funzionamento. Questo viene fatto nella tabella ARP, che comunque va verificata a intervalli regolari.
Come è stato visto nelle sezioni precedenti, al di sopra dei primi due livelli strettamente fisici di comunicazione, si inserisce la rete dal punto di vista di Unix: un insieme di nodi, spesso definiti host, identificati da un indirizzo IP. Di questi ne esistono almeno due versioni: IPv4 e IPv6. Il primo è quello ancora ufficialmente in uso, ma a causa del rapido esaurimento degli indirizzi disponibili nella comunità Internet, è in corso di introduzione il secondo.
Gli indirizzi IP versione 4, cioè quelli tradizionali, sono composti da una sequenza di 32 bit, suddivisi convenzionalmente in quattro gruppetti di 8 bit, rappresentati in modo decimale separati da un punto. Questo tipo di rappresentazione è definito come: notazione decimale puntata. Per esempio,
00000001.00000010.00000011.00000100
corrisponde al codice 1.2.3.4.
All'interno di un indirizzo del genere si distinguono due parti: l'indirizzo di rete e l'indirizzo del nodo particolare. Il meccanismo è simile a quello del numero telefonico in cui la prima parte del numero, il prefisso, definisce la zona ovvero il distretto telefonico, mentre il resto identifica l'apparecchio telefonico specifico di quella zona. In pratica, quando viene richiesto un indirizzo IP, si ottiene un indirizzo di rete in funzione della quantità di nodi che si devono connettere. In questo indirizzo una certa quantità di bit nella parte finale sono azzerati: ciò significa che quella parte finale può essere utilizzata per gli indirizzi specifici dei nodi. Per esempio, l'indirizzo di rete potrebbe essere:
00000001.00000010.00000011.00000000
in tal caso, si potrebbero utilizzare gli ultimi 8 bit per gli indirizzi dei vari nodi.
L'indirizzo di rete, non può identificare un nodo. Quindi, tornando all'esempio, l'indirizzo
00000001.00000010.00000011.00000000
non può essere usato per identificare anche un nodo. Inoltre, un indirizzo in cui i bit finali lasciati per identificare i nodi siano tutti a uno,
00000001.00000010.00000011.11111111
identifica un indirizzo broadcast, cioè un indirizzo per la trasmissione a tutti i nodi di quella rete. In pratica, rappresenta simultaneamente tutti gli indirizzi che iniziano con 00000001.00000010.00000011. Di conseguenza, un indirizzo broadcast non può essere utilizzato per identificare un nodo.
Naturalmente, i bit che seguono l'indirizzo di rete possono anche essere utilizzati per suddividere la rete in sottoreti. Nel caso di prima, volendo creare due sottoreti utilizzando i primi 2 bit che seguono l'indirizzo di rete originario:
xxxxxxxx.xxxxxxxx.xxxxxxxx.00000000
indirizzo di rete;
xxxxxxxx.xxxxxxxx.xxxxxxxx.01000000
indirizzo della prima sottorete;
xxxxxxxx.xxxxxxxx.xxxxxxxx.10000000
indirizzo della seconda sottorete;
xxxxxxxx.xxxxxxxx.xxxxxxxx.11111111
In questo esempio, per ogni sottorete, resterebbero 6 bit a disposizione per identificare i nodi: da 0000012 a 1111102.
Il meccanismo utilizzato per distinguere la parte dell'indirizzo che identifica la rete è quello della maschera di rete o netmask. La maschera di rete è un indirizzo che viene abbinato all'indirizzo da analizzare con l'operatore booleano AND, per filtrare la parte di bit che interessano. Una maschera di rete che consenta di classificare i primi 24 bit come indirizzo di rete sarà:
11111111.11111111.11111111.00000000
cosa che coincide con il ben più noto codice 255.255.255.0.
Utilizzando l'esempio visto in precedenza, abbinando questa maschera di rete si ottiene l'indirizzo di rete:
00000001.00000010.00000011.00000100 nodo (1.2.3.4)
11111111.11111111.11111111.00000000 maschera di rete (255.255.255.0)
00000001.00000010.00000011.00000000 indirizzo di rete (1.2.3.0).
L'indirizzo che si ottiene abbinando l'indirizzo di un nodo e la sua maschera di rete invertita con l'operatore AND è l'indirizzo del nodo relativo alla propria rete. Esempio:
00000001.00000010.00000011.00000100 nodo (1.2.3.4)
00000000.00000000.00000000.11111111 maschera di rete invertita (0.0.0.255)
00000000.00000000.00000000.00000100 indirizzo relativo (0.0.0.4).
Tabella 111.4. Tabellina di conversione rapida per determinare la parte finale di una maschera di rete secondo la notazione decimale puntata.
Ottetto binario | Ottetto esadecimale | Ottetto decimale |
111111112 | FF16 | 25510 |
111111102 | FE16 | 25410 |
111111002 | FC16 | 25210 |
111110002 | F816 | 24810 |
111100002 | F016 | 24010 |
111000002 | E016 | 22410 |
110000002 | C016 | 19210 |
100000002 | 8016 | 12810 |
000000002 | 0016 | 010 |
Gli indirizzi IP sono stati classificati in cinque gruppi, a partire dalla lettera «A» fino alla lettera «E».
Gli indirizzi di classe A hanno il primo bit a zero, utilizzano i sette bit successivi per identificare l'indirizzo di rete e lasciano i restanti 24 bit per identificare i nodi.
0rrrrrrr.hhhhhhhh.hhhhhhhh.hhhhhhhh
All'interno di questa classe si possono usare indirizzi che vanno da
00000001.________.________.________
a
01111110.________.________.________
In pratica, appartengono a questa classe gli indirizzi compresi tra 1.___.___.___ e 126.___.___.___.
Gli indirizzi di classe B hanno il primo bit a uno e il secondo a zero, utilizzano i 14 bit successivi per identificare l'indirizzo di rete e lasciano i restanti 16 bit per identificare i nodi.
10rrrrrr.rrrrrrrr.hhhhhhhh.hhhhhhhh
All'interno di questa classe si possono usare indirizzi che vanno da
10000000.00000001.________.________
a
10111111.11111110.________.________
In pratica, appartengono a questa classe gli indirizzi compresi tra 128.1.___.___ e 191.254.___.___.
Gli indirizzi di classe C hanno il primo e il secondo bit a uno e il terzo bit a zero, utilizzano i 21 bit successivi per identificare l'indirizzo di rete e lasciano i restanti 8 bit per identificare i nodi.
110rrrrr.rrrrrrrr.rrrrrrrr.hhhhhhhh
All'interno di questa classe si possono usare indirizzi che vanno da
11000000.00000000.00000000.________
a
11011111.11111111.11111110.________.
In pratica, appartengono a questa classe gli indirizzi compresi tra 192.0.1.___ e 223.255.254.___.
Gli indirizzi di classe D hanno i primi tre bit a uno e il quarto a zero. Si tratta di una classe destinata a usi speciali.
1110____.________.________.________
In pratica, appartengono a questa classe gli indirizzi compresi tra 224.___.___.___ e 239.___.___.___.
Gli indirizzi di classe E hanno i primi quattro bit a uno e il quinto a zero. Si tratta di una classe destinata a usi speciali.
11110___.________.________.________
In pratica, appartengono a questa classe gli indirizzi compresi tra 240.___.___.___ e 247.___.___.___.
Lo spazio lasciato libero tra la classe A e la classe B, ovvero gli indirizzi 127.*.*.*, sono riservati per identificare una rete virtuale interna al nodo stesso. All'interno di questa rete si trova un'interfaccia di rete immaginaria connessa su questa stessa rete, corrispondente all'indirizzo 127.0.0.1, mentre gli altri indirizzi di questo gruppo non vengono mai utilizzati.
Per identificare questi indirizzi si parla di loopback, anche se questo termine viene usato ancora in altri contesti con significati differenti.
All'interno di ogni nodo, quindi, l'indirizzo 127.0.0.1 corrisponde a se stesso. Serve in particolare per non disturbare la rete quando un programma (che usa la rete) deve fare riferimento a se stesso.
L'indirizzo speciale 0.0.0.0, conosciuto come default route è il percorso, o la strada predefinita per l'instradamento dei pacchetti. Si usa spesso la parola chiave defaultroute per fare riferimento automaticamente a questo indirizzo particolare.
Se non si ha la necessità di rendere accessibili i nodi della propria rete locale alla rete globale Internet, si possono utilizzare alcuni gruppi di indirizzi che sono stati riservati a questo scopo e che non corrispondono a nessun nodo raggiungibile attraverso Internet.
Nella classe A è stato riservato l'intervallo da
00001010.00000000.00000000.00000000 = 10.0.0.0
a
00001010.11111111.11111111.11111111 = 10.255.255.255.
Nella classe B è stato riservato l'intervallo da
10101100.00010000.00000000.00000000 = 172.16.0.0
a
10101100.00011111.11111111.11111111 = 172.31.255.255.
Nella classe C è stato riservato l'intervallo da
11000000.10101000.00000000.00000000 = 192.168.0.0
a
11000000.10101000.11111111.11111111 = 192.168.255.255.
Quando si scompone la propria rete locale in sottoreti, di solito lo si fa per non intasarla. Infatti è probabile che si possano raggruppare i nodi in base alle attività che essi condividono. Le sottoreti possono essere immaginate come raggruppamenti di nodi separati che di tanto in tanto hanno la necessità di accedere a nodi situati al di fuori del loro gruppo. Per collegare due sottoreti occorre un nodo con due interfacce di rete, ognuno connesso con una delle due reti, configurato in modo da lasciare passare i pacchetti destinati all'altra rete. Questo è un router, chiamato abitualmente gateway, che in pratica svolge l'attività di instradamento dei pacchetti.
Il modo normale di rappresentare una maschera degli schemi di indirizzamento di IPv4 è quello della notazione decimale puntata a ottetti, come visto fino a questo punto. Tuttavia, considerato che le maschere servono prevalentemente per definire dei gruppi di indirizzi IP, cioè delle reti (o sottoreti), tali maschere hanno una forma piuttosto semplice: una serie continua di bit a uno e la parte restante di bit a zero. Pertanto, quando si tratta di definire una maschera di rete, potrebbe essere conveniente indicare semplicemente il numero di bit da porre a uno. Per esempio, la classica maschera di rete di classe C, 255.255.255.0, equivale a dire che i primi 24 bit devono essere posti a uno.
La possibilità di rappresentare le maschere di rete in questo modo è apparsa solo in tempi recenti per quanto riguarda IPv4. Quindi, dipende dai programmi di servizio utilizzati effettivamente, il fatto che si possa usare o meno questa forma. In ogni caso, il modo normale di esprimerla è quello di indicare il numero IP seguito da una barra obliqua normale e dal numero di bit a uno della maschera, come per esempio 192.168.1.1/24.
Tabella 111.5. Indirizzi IPv4.
A causa della penuria di indirizzi IPv4, recentemente si tende a utilizzare la classe C in modo da ottenere il maggior numero di sottoreti possibili. Nella sezione 111.9 è stato mostrato un esempio di suddivisione in sottoreti, in cui si utilizzano 2 bit per ottenere due reti, che possono raggiungere un massimo di 62 nodi per rete, mentre se si trattasse di una rete unica sarebbe possibile raggiungere 254 nodi.
Se si parte dal presupposto che ogni sottorete abbia il proprio indirizzo broadcast, nel senso che non esiste più un indirizzo broadcast generale, si può fare di meglio (anche se la cosa non è consigliabile in generale).
Maschera di rete a 25 bit, pari a 255.255.255.128, per due sottoreti con 126 nodi ognuna:
rrrrrrrr.rrrrrrrr.rrrrrrrr.shhhhhhh
Rete | IP iniziale | IP finale | Broadcast |
x.x.x.0 | x.x.x.1 | x.x.x.126 | x.x.x.127 |
x.x.x.128 | x.x.x.129 | x.x.x.254 | x.x.x.255 |
rrrrrrrr.rrrrrrrr.rrrrrrrr.sshhhhhh
Maschera di rete a 26 bit, pari a 255.255.255.192, per quattro sottoreti con 62 nodi ognuna:
Rete | IP iniziale | IP finale | Broadcast |
x.x.x.0 | x.x.x.1 | x.x.x.62 | x.x.x.63 |
x.x.x.64 | x.x.x.65 | x.x.x.126 | x.x.x.127 |
x.x.x.128 | x.x.x.129 | x.x.x.190 | x.x.x.191 |
x.x.x.192 | x.x.x.193 | x.x.x.254 | x.x.x.255 |
Maschera di rete a 27 bit, pari a 255.255.255.224, per otto sottoreti con 30 nodi ognuna:
rrrrrrrr.rrrrrrrr.rrrrrrrr.ssshhhhh
Rete | IP iniziale | IP finale | Broadcast |
x.x.x.0 | x.x.x.1 | x.x.x.30 | x.x.x.31 |
x.x.x.32 | x.x.x.33 | x.x.x.62 | x.x.x.63 |
x.x.x.64 | x.x.x.65 | x.x.x.94 | x.x.x.95 |
x.x.x.96 | x.x.x.97 | x.x.x.126 | x.x.x.127 |
x.x.x.128 | x.x.x.129 | x.x.x.158 | x.x.x.159 |
x.x.x.160 | x.x.x.161 | x.x.x.190 | x.x.x.191 |
x.x.x.192 | x.x.x.193 | x.x.x.222 | x.x.x.223 |
x.x.x.224 | x.x.x.225 | x.x.x.254 | x.x.x.255 |
Maschera di rete a 28 bit, pari a 255.255.255.240, per 16 sottoreti con 14 nodi ognuna:
rrrrrrrr.rrrrrrrr.rrrrrrrr.sssshhhh
Rete | IP iniziale | IP finale | Broadcast |
x.x.x.0 | x.x.x.1 | x.x.x.14 | x.x.x.15 |
x.x.x.16 | x.x.x.17 | x.x.x.30 | x.x.x.31 |
x.x.x.32 | x.x.x.33 | x.x.x.46 | x.x.x.47 |
x.x.x.48 | x.x.x.49 | x.x.x.62 | x.x.x.63 |
x.x.x.64 | x.x.x.65 | x.x.x.78 | x.x.x.79 |
x.x.x.80 | x.x.x.81 | x.x.x.94 | x.x.x.95 |
x.x.x.96 | x.x.x.97 | x.x.x.110 | x.x.x.111 |
x.x.x.112 | x.x.x.113 | x.x.x.126 | x.x.x.127 |
x.x.x.128 | x.x.x.129 | x.x.x.142 | x.x.x.143 |
x.x.x.144 | x.x.x.145 | x.x.x.158 | x.x.x.159 |
x.x.x.160 | x.x.x.161 | x.x.x.174 | x.x.x.175 |
x.x.x.176 | x.x.x.177 | x.x.x.190 | x.x.x.191 |
x.x.x.192 | x.x.x.193 | x.x.x.206 | x.x.x.207 |
x.x.x.208 | x.x.x.209 | x.x.x.222 | x.x.x.223 |
x.x.x.224 | x.x.x.225 | x.x.x.238 | x.x.x.239 |
x.x.x.240 | x.x.x.241 | x.x.x.254 | x.x.x.255 |
Maschera di rete a 29 bit, pari a 255.255.255.248, per 32 sottoreti con sei nodi ognuna:
rrrrrrrr.rrrrrrrr.rrrrrrrr.ssssshhh
Rete | IP iniziale | IP finale | Broadcast |
x.x.x.0 | x.x.x.1 | x.x.x.6 | x.x.x.7 |
x.x.x.8 | x.x.x.9 | x.x.x.14 | x.x.x.15 |
x.x.x.16 | x.x.x.17 | x.x.x.22 | x.x.x.23 |
x.x.x.24 | x.x.x.25 | x.x.x.30 | x.x.x.31 |
x.x.x.32 | x.x.x.33 | x.x.x.38 | x.x.x.39 |
x.x.x.40 | x.x.x.41 | x.x.x.46 | x.x.x.47 |
x.x.x.48 | x.x.x.49 | x.x.x.54 | x.x.x.55 |
x.x.x.56 | x.x.x.57 | x.x.x.62 | x.x.x.63 |
x.x.x.64 | x.x.x.65 | x.x.x.70 | x.x.x.71 |
x.x.x.72 | x.x.x.73 | x.x.x.78 | x.x.x.79 |
x.x.x.80 | x.x.x.81 | x.x.x.86 | x.x.x.87 |
x.x.x.88 | x.x.x.89 | x.x.x.94 | x.x.x.95 |
x.x.x.96 | x.x.x.97 | x.x.x.102 | x.x.x.103 |
x.x.x.104 | x.x.x.105 | x.x.x.110 | x.x.x.111 |
x.x.x.112 | x.x.x.113 | x.x.x.118 | x.x.x.119 |
x.x.x.120 | x.x.x.121 | x.x.x.126 | x.x.x.127 |
x.x.x.128 | x.x.x.129 | x.x.x.134 | x.x.x.135 |
x.x.x.136 | x.x.x.137 | x.x.x.142 | x.x.x.143 |
x.x.x.144 | x.x.x.145 | x.x.x.150 | x.x.x.151 |
x.x.x.152 | x.x.x.153 | x.x.x.158 | x.x.x.159 |
x.x.x.160 | x.x.x.161 | x.x.x.166 | x.x.x.167 |
x.x.x.168 | x.x.x.169 | x.x.x.174 | x.x.x.175 |
x.x.x.176 | x.x.x.177 | x.x.x.182 | x.x.x.183 |
x.x.x.184 | x.x.x.185 | x.x.x.190 | x.x.x.191 |
x.x.x.192 | x.x.x.193 | x.x.x.198 | x.x.x.199 |
x.x.x.200 | x.x.x.201 | x.x.x.206 | x.x.x.207 |
x.x.x.208 | x.x.x.209 | x.x.x.214 | x.x.x.215 |
x.x.x.216 | x.x.x.217 | x.x.x.222 | x.x.x.223 |
x.x.x.224 | x.x.x.225 | x.x.x.230 | x.x.x.231 |
x.x.x.232 | x.x.x.233 | x.x.x.238 | x.x.x.239 |
x.x.x.240 | x.x.x.241 | x.x.x.246 | x.x.x.247 |
x.x.x.248 | x.x.x.249 | x.x.x.254 | x.x.x.255 |
La gestione diretta degli indirizzi IP è piuttosto faticosa dal punto di vista umano. Per questo motivo si preferisce associare un nome agli indirizzi numerici. Il sistema utilizzato attualmente è il DNS (Domain name system), ovvero il sistema dei nomi di dominio. Gli indirizzi della rete Internet sono organizzati ad albero in domini, sottodomini (altri sottodomini di livello inferiore, ecc.), fino ad arrivare a identificare il nodo desiderato.
|
Non esiste una regola per stabilire quante debbano essere le suddivisioni, di conseguenza, di fronte a un nome del genere non si può sapere a priori se si tratta di un indirizzo finale, riferito a un nodo singolo, o a un gruppo di questi.
Spesso, all'interno della propria rete locale, è possibile identificare un nodo attraverso il solo nome finale (a sinistra), senza la parte iniziale del dominio di appartenenza. Per esempio, se la rete in cui si opera corrisponde al dominio brot.dg
, il nodo roggen
verrà inteso essere roggen.brot.dg
. Quando un nome di dominio contiene tutti gli elementi necessari a identificare un nodo, si parla precisamente di FQDN o Fully qualified domain name, quindi, roggen.brot.dg
dell'esempio precedente è un FQDN.
In un sistema di nomi di dominio (DNS), il problema più grande è quello di organizzare i name server ovvero i servizi di risoluzione dei nomi (servizi DNS). Ciò è attuato da nodi che si occupano di risolvere, ovvero trasformare, gli indirizzi mnemonici dei nomi di dominio in indirizzi numerici IP e viceversa. A livello del dominio principale (root), si trovano alcuni serventi che si occupano di fornire gli indirizzi per raggiungere i domini successivi, cioè com
, edu
, org
, net
, it
,... A livello di questi domini ci saranno alcuni serventi (ogni dominio ha i suoi) che si occupano di fornire gli indirizzi per raggiungere i domini inferiori, e così via, fino a raggiungere il nodo finale. Di conseguenza, un servizio di risoluzione dei nomi, per poter ottenere l'indirizzo di un nodo che si trova in un dominio al di fuori della sua portata, deve interpellare quelli del livello principale e mano a mano quelli di livello inferiore, fino a ottenere l'indirizzo cercato. Per determinare l'indirizzo IP di un nodo si rischia di dover accedere a una quantità di servizi di risoluzione dei nomi; pertanto, per ridurre il traffico di richieste, ognuno di questi è in grado di conservare autonomamente una certa quantità di indirizzi che sono stati richiesti nell'ultimo periodo.
|
In pratica, per poter utilizzare la notazione degli indirizzi suddivisa in domini, è necessario che il sistema locale sul quale si opera possa accedere al suo servizio di risoluzione dei nomi più vicino, oppure gestisca questo servizio per conto suo. In una rete locale privata composta da nodi che non sono raggiungibili dalla rete esterna (Internet), non dovrebbe essere necessario predisporre un servizio di risoluzione dei nomi; in questi casi è comunque indispensabile almeno il file /etc/hosts
(120.2.1) compilato correttamente con gli indirizzi associati ai nomi completi dei vari nodi della rete locale.
Per poter utilizzare i servizi di rete è necessario avere previsto questa gestione durante la configurazione del kernel. Per quanto riguarda GNU/Linux, si tratta principalmente di attivare la gestione della rete in generale e di attivare le particolari funzionalità necessarie per le attività che si intendono svolgere (sezione 29.2.9).
Oltre alla gestione della rete, occorre anche pensare al tipo di hardware a disposizione; per questo si deve configurare la parte riguardante i dispositivi di rete (sezione 29.2.12).
Olaf Kirch, NAG, The Linux Network Administrators' Guide
Terry Dawson, Linux NET-3-HOWTO
<http://www.linux.org/docs/ldp/howto/HOWTO-INDEX/howtos.html>
S. Gai, P. L. Montessoro, P. Nicoletti, Reti locali: dal cablaggio all'internetworking
Charles Hedrick, TCP/IP introduction
Mike Oliver, TCP/IP Frequently Asked Questions
daniele @ swlibero.org
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome introduzione_alle_reti_e_al_tcp_ip.html
[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico]