[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]


Capitolo 111.   Introduzione alle reti e al TCP/IP

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.

111.1   Estensione

Una rete può essere più o meno estesa; in tal senso si usano degli acronimi standard:

Evidentemente, Internet è una rete WAN.

111.2   Topologia

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.

Figura 111.1. Topologia a stella.

Topologia di rete a stella

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.

Figura 111.2. Topologia ad anello.

Topologia di rete ad anello

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.

Figura 111.3. Topologia a bus.

Topologia di rete a bus

111.3   Pacchetto

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.

111.4   Protocollo

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.

111.5   Modello ISO-OSI

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 codici riferiti a standard ISO che riguardano l'insieme della descrizione dei sette livelli OSI sono più di uno; pertanto, è attraverso la sigla ISO-OSI, o simili, che questi vengono identificati di consueto.

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.

111.5.1   Un esempio per associazione di idee

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.

111.5.2   Comunicazione tra i livelli e imbustamento

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.

Figura 111.4. Trasformazione dei pacchetti da un livello all'altro.

.-------------------.
| Applicazione      | 7-PDU     |               ^
|-------------------|           |               |
| Presentazione     |           |               |       
|-------------------|           |               |
| Sessione          |           |               |
|-------------------|           |          Estrazione
| Trasporto         |     Imbustamento          |
|-------------------|           |               |
| Rete              |           |               |
|-------------------|           |               |
| Collegamento dati |           |               |
|-------------------|           |               |
| Fisico            | 1-PDU     V               |
`-------------------'

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.

111.6   Interconnessione tra le reti

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.

Figura 111.5. Il ripetitore permette di allungare una rete, intervenendo al primo livello del modello ISO-OSI.

.-------------------.                                   .-------------------.
| Applicazione      |                                   | Applicazione      |
|-------------------|                                   |-------------------|
| Presentazione     |                                   | Presentazione     |
|-------------------|                                   |-------------------|
| Sessione          |                                   | Sessione          |
|-------------------|                                   |-------------------|
| Trasporto         |                                   | Trasporto         |
|-------------------|                                   |-------------------|
| Rete              |                                   | Rete              |
|-------------------|                                   |-------------------|
| Collegamento dati |            RIPETITORE             | Collegamento dati |
|-------------------|   .--------------------------.    |-------------------|
| Fisico            |   |          Fisico          |    | Fisico            |
`-------------------'   `--------------------------'    `-------------------'
         |                   |                |                   |
         `-------------------'                `-------------------'

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.

Figura 111.6. Il bridge trasferisce PDU di secondo livello; in pratica trasferisce tutti i tipi di pacchetto riferiti al tipo di rete fisica a cui è connesso.

.-------------------.                                   .-------------------.
| Applicazione      |                                   | Applicazione      |
|-------------------|                                   |-------------------|
| Presentazione     |                                   | Presentazione     |
|-------------------|                                   |-------------------|
| Sessione          |                                   | Sessione          |
|-------------------|                                   |-------------------|
| Trasporto         |                                   | Trasporto         |
|-------------------|                                   |-------------------|
| Rete              |              BRIDGE               | Rete              |
|-------------------|   .--------------------------.    |-------------------|
| Collegamento dati |   |    Collegamento dati     |    | Collegamento dati |
|-------------------|   |--------------------------|    |-------------------|
| Fisico            |   |  Fisico  |    |  Fisico  |    | Fisico            |
`-------------------'   `----------'    `----------'    `-------------------'
         |                   |                |                   |
         `-------------------'                `-------------------'

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.

Figura 111.7. Il router trasferisce PDU di terzo livello; in pratica trasferisce i pacchetti di un certo tipo di protocollo a livello di rete.

.-------------------.                                   .-------------------.
| Applicazione      |                                   | Applicazione      |
|-------------------|                                   |-------------------|
| Presentazione     |                                   | Presentazione     |
|-------------------|                                   |-------------------|
| Sessione          |                                   | Sessione          |
|-------------------|                                   |-------------------|
| Trasporto         |              ROUTER               | Trasporto         |
|-------------------|   .--------------------------.    |-------------------|
| Rete              |   |           Rete           |    | Rete              |
|-------------------|   |--------------------------|    |-------------------|
| Collegamento dati |   | C. dati  |    | C. dati  |    | Collegamento dati |
|-------------------|   |----------|    |----------|    |-------------------|
| Fisico            |   |  Fisico  |    |  Fisico  |    | Fisico            |
`-------------------'   `----------'    `----------'    `-------------------'
         |                   |                |                   |
         `-------------------'                `-------------------'

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.

Spesso, negli ambienti Unix, il termine gateway viene utilizzato impropriamente come sinonimo di router, o di qualcosa che gli assomiglia, ma sarebbe bene, quando possibile, fare attenzione a queste definizioni.

111.7   TCP/IP e il modello ISO-OSI

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.

Figura 111.8. Abbinamento tra il modello ISO-OSI e la semplicità dei protocolli TCP/IP.

.-------------------.   .------------------------------.
| Applicazione      |   |                              |
|-------------------|   |         Applicazione         |
| Presentazione     |   |    con il suo protocollo     |
|-------------------|   |   (FTP, HTTP, SMTP, ecc.)    |
| Sessione          |   |                              |
|-------------------|   |------------------------------| ----.
| Trasporto         |   |  Protocolli TCP, UDP e ICMP  |     |
|-------------------|   |------------------------------|      > TCP/IP
| Rete              |   |        Protocollo IP         |     |
|-------------------|   |------------------------------| ----'
| Collegamento dati |   | Protocollo della rete fisica |
|-------------------|   |         sottostante          |
| Fisico            |   |                              |
`-------------------'   `------------------------------'

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.

1 fisico

Perché si possa avere una connessione con altri nodi, è necessario inizialmente un supporto fisico, composto solitamente da un cavo e da interfacce di comunicazione. La connessione tipica in una rete locale è fatta utilizzando hardware Ethernet. Il cavo o i cavi e le schede Ethernet appartengono a questo primo livello.

2 collegamento dei dati

Il tipo di hardware utilizzato nel primo livello determina il modo in cui avviene effettivamente la comunicazione. Nel caso dell'hardware Ethernet, ogni scheda ha un proprio indirizzo univoco (stabilito dal fabbricante) composto da 48 bit e rappresentato solitamente in forma esadecimale, come nell'esempio seguente:

00:A0:24:77:49:97
3 rete

Per poter avere un tipo di comunicazione indipendente dal supporto fisico utilizzato, è necessaria un'astrazione che riguarda il modo di inviare blocchi di dati, l'indirizzamento di questi e il loro instradamento. Per quanto riguarda il TCP/IP, questo è il livello del protocollo IP, attraverso il quale vengono definiti gli indirizzi e gli instradamenti relativi.

Quando un pacchetto è più grande della dimensione massima trasmissibile in quel tipo di rete fisica utilizzata, è il protocollo IP che si deve prendere cura di scomporlo in segmenti più piccoli e di ricombinarli correttamente alla destinazione.

4 trasporto

A questo livello appartengono i protocolli di comunicazione che si occupano di frammentare e ricomporre i dati, di correggere gli errori e di prevenire intasamenti della rete. I protocolli principali di questo livello sono TCP (Transmission control protocol) e UDP (User datagram protocol).

Il protocollo TCP, in qualità di protocollo connesso, oltre alla scomposizione e ricomposizione dei dati, si occupa di verificare e riordinare i dati all'arrivo: i pacchetti perduti o errati vengono ritrasmessi e i dati finali vengono ricomposti. Il protocollo UDP, essendo un protocollo non connesso, non esegue alcun controllo.

A questo livello si introduce, a fianco dell'indirizzo IP, il numero di porta. Il percorso di un pacchetto ha un'origine, identificata dal numero IP e da una porta, e una destinazione identificata da un altro numero IP e dalla porta relativa. Le porte identificano convenzionalmente dei servizi concessi o richiesti e la gestione di questi riguarda il livello successivo.

5 sessione

Ogni servizio di rete (condivisione del file system, posta elettronica, FTP, ecc.) ha un proprio protocollo, porte di servizio e un meccanismo di trasporto (quelli definiti nel livello inferiore). Ogni sistema può stabilire le proprie regole, anche se in generale è opportuno che i nodi che intendono comunicare utilizzino le stesse porte e gli stessi tipi di trasporto. Questi elementi sono stabiliti dal file /etc/services. Segue una riga di questo file dove si può osservare che il servizio www (HTTP) utilizza la porta 80 per comunicare e il protocollo di trasporto è il TCP:

www     80/tcp

Quando si avvia una comunicazione a questo livello, si parla di sessione. Quindi, si apre o si chiude una sessione.

6 presentazione

I dati che vengono inviati utilizzando le sessioni del livello inferiore devono essere uniformi, indipendentemente dalle caratteristiche fisiche delle macchine che li elaborano. A questo livello si inseriscono normalmente delle librerie in grado di gestire un'eventuale conversione dei dati tra l'applicazione e la sessione di comunicazione.

7 applicazione

L'ultimo livello è quello dell'applicazione che utilizza le risorse di rete. Con la suddivisione delle competenze in così tanti livelli, l'applicazione non ha la necessità di occuparsi della comunicazione; così, in molti casi, anche l'utente può non rendersi conto della sua presenza.

111.8   ARP

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.

111.9   Indirizzi IPv4

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:

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

111.9.1   Classi di indirizzi

Gli indirizzi IP sono stati classificati in cinque gruppi, a partire dalla lettera «A» fino alla lettera «E».

Classe A

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.___.___.___.

Classe B

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.___.___.

Classe C

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.___.

Classe D

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.___.___.___.

Classe E

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.___.___.___.

111.9.2   Indirizzi speciali

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.

111.9.3   Indirizzi riservati per le reti private

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.

111.9.4   Sottoreti e instradamento

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.

111.9.5   Maschere IP e maschere di rete

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.

Indirizzo iniziale Indirizzo finale Impiego
0.0.0.0 -- Default route
1.0.0.0 126.*.*.* Classe A
  10.0.0.0   10.*.*.* Classe A riservata per reti private
127.0.0.0 127.*.*.* Rete loopback
  127.0.0.1 -- Indirizzo del nodo locale
128.0.0.0 191.*.*.* Classe B
  172.16.0.0   172.31.*.* Classe B riservata per reti private
192.0.0.0 223.*.*.* Classe C
  192.168.0.0   192.168.*.* Classe C riservata per reti private
224.0.0.0 239.*.*.* Classe D
240.0.0.0 247.*.*.* Classe E

111.9.6   Sottoreti particolari in classe C

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

111.10   Nomi di dominio

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.

Figura 111.9. Struttura dei nomi di dominio.

.                       (dominio principale o «root»)
 |
 |-com...               (dominio com)
 |-edu...               (dominio edu)
 |-org...               (dominio org)
 |-net...               (dominio net)
 |-it                   (dominio it)
 |  |-beta              (dominio beta.it)
 |  |  |-alfa           (dominio alfa.beta.it)
 |  |  |  |-dani        (nodo dani.alfa.beta.it)
 :  :  :  :

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.

Con il termine nome di dominio, si può fare riferimento sia al nome completo di un nodo particolare, sia a una parte iniziale di questo, nel lato destro. Dipende dal contesto stabilire cosa si intende veramente. Per fare un esempio che dovrebbe essere più comprensibile, è come parlare di un percorso all'interno di un file system: può trattarsi di una directory, oppure può essere il percorso assoluto che identifica precisamente un file.

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.

Quando si realizza una rete locale con indirizzi IP non raggiungibili attraverso Internet, è opportuno abbinare nomi di dominio sicuramente inesistenti. Ciò aiuta anche a comprendere immediatamente che non si tratta di un dominio accessibile dall'esterno.

111.10.1   Servizio di risoluzione dei nomi di dominio

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.

Figura 111.10. Suddivisione delle competenze tra i vari servizi di risoluzione dei nomi.

                     .-------.
                     | DNS . |
                     `-------'
                         |
          .--------------*-------------*--------------*--------------.
          |              |             |              |              |
    .----------.   .----------.   .----------.   .----------.   .----------.
    | DNS com. |   | DNS edu. |   | DNS org. |   | DNS net. |   | DNS mil. | ...
    `----------'   `----------'   `----------'   `----------'   `----------'
          |
      .---*-------------*-----------------*-----------------.
      |                 |                 |                 |
.------------.    .------------.    .------------.    .------------.
| DNS a.com. |    | DNS b.com. |    | DNS c.com. |    | DNS d.com. | ...
`------------'    `------------'    `------------'    `------------'
      :                 :                 :                 :
      :                 :                 :                 :

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.

111.11   Kernel Linux, configurazione per la rete

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).

111.12   Riferimenti

Appunti di informatica libera 2003.01.01 --- Copyright © 2000-2003 Daniele Giacomini -- 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]