I comandi Linux: la rete | ALTRI capitoli | |||||
Quando si parla di rete, si parla di scheda di rete. Una scheda di rete è un apparato fisico ( scheda elettronica ) che permette la connessione di un computer ad una rete. Una scheda di rete è identificata da un numero seriale universalmente unico, chiamato MAC address e assegnato direttamente dal produttore della scheda. Esso è costituito da 6 ottetti ( ovvero 48 bit ) ed è attualmente gestito centralmente da IEEE-RA ( la Registration Authority dello Institute of Electrical and Electronic Engineers ), allo scopo di garantire la propria universalità. Per questo motivo, ogni MAC address è, in effetti, strutturato in due parti:
Quindi, se il MAC address di una scheda di rete fosse il seguente:
noi sapremmo, grazie al database della Registration Authority di IEEE, che lo Organizationally Unique Identifier ( OUI ):
corrisponde al produttore ClarIDy Solutions, Inc., 7F, No.9, ParkAvenue II Rd., Hsinchu Science Park, Hsinchu 300, TAIWAN, REPUBLIC OF CHINA. L'indirizzo MAC viene utilizzato dal protocollo di rete Ethernet, all'interno di una LAN ( Local Area Network ) e solo per le comunicazioni con i computer direttamente collegati al cavo LAN. Ethernet, infatti, inserisce i pacchetti di dati nel cavo di trasmissione, in modo che qualsiasi postazione collegata a quel cavo sia in grado di riceverli. Sarà, poi, cura della singola postazione verificare se un determinato pacchetto di dati è destinata a lei o meno ( verificando l'indirizzo MAC riportato nel campo "Destinazione" di quel pacchetto ). Secondo la definizione di Rusty Russell, "una rete di computer consiste in una serie di elementi che permettono a dei nodi di dialogare tra loro ( per "nodi" intendo computer, stampanti, distributori Coca-Cola, e qualsiasi altra cosa ). Non ha molta importanza come siano connessi: potreste usare cavi in fibra ottica come anche piccioni viaggiatori. Ovviamente alcune scelte sono migliori di altre ( specialmente se hai un gatto ). La connessione tra due computer è spesso chiamata collegamento ( link ). Se ci sono dei cavi che escono dalla tua macchina diretti verso altre macchine, questo è un esempio di collegamento in rete ( link ). Se connetti i tuoi quattro computer di casa, otterrai quella che è chiamata comunemente LAN ( Local Area Network ). Qualsiasi rete organizzata entro brevi distanze è una LAN, indipendentemente dal numero di macchine e dal modo con cui è stata realizzata. Il metodo più comune per connettere delle macchine, e creare una LAN, è quello di utilizzare le schede Ethernet. All'altro capo troviamo la WAN ( Wide Area Network ). Se hai un computer a Lahore, Pakistan, uno a Birmingham, UK, e uno a Santiago, Cile, e sei riuscito a connetterli, allora questa è una WAN. Le reti vengono, spesso, collegate l'una all'altra, per formare reti sempre più grandi. Ogni piccola rete può diventare parte di una rete più grande, diventando, quindi, una sottorete della rete maggiore. Internet è la connessione di un vasto numero di sottoreti. Il nome stesso, inter-networking, è riferito alla interconnessione di reti separate, al fine di costituire una rete più grande. Internet è una WAN che si estende in tutto il globo ed è la più grande rete di computer esistente". Ciascuna rete può utilizzare link di connessione, e quindi protocolli di comunicazione, differenti, a livello locale, per connettere le singole postazioni fisiche presenti. Ethernet è il più diffuso, tra i protocolli utilizzati a livello locale. Ma, nel momento in cui un computer di una rete locale avesse bisogno di connettersi ad un computer di una rete locale differente, il protocollo, universalmente riconosciuto, da utilizzare è il protocollo Internet: IP ( Internet Protocol ). Questa differenziazione si rende necessaria, a causa della natura stessa dei protocolli di rete locale ( Ethernet, per esempio ): essi sono strettamente legati al mezzo di collegamento utilizzato ( link: un cavo, per esempio ) e si preoccupano solo di inviare i dati al cavo di collegamento. L'identificazione di un eventuale destinatario ( una singola postazione ) non è tra i suoi compiti: Ethernet spara i dati in rete, lasciando che ciascuna postazione verifichi se quei dati sono a lei destinati ( attraverso la lettura del campo: Indirizzo di Destinazione ). Una trasmissione di questo tipo viene chiamata Broadcast ( simile alla trasmissione via etere della TV: il segnale TV viene intercettato da tutti i singoli apparecchi televisivi dotati di una normale antenna ). L'identificazione di un destinatario preciso ( una singola postazione ) è un meccanismo necessario, invece, ai protocolli di inter-networking, dove non sarebbe pensabile di sparare una serie di dati in una rete composta da miliardi di singole postazioni, ciascuna delle quali, per di più, potrebbe, a sua volta, sparare una differente serie di dati, magari nello stesso istante. Inoltre, in una "rete di reti", non esiste un mezzo di collegamento ( link ) unico, poichè ogni tratto del percorso potrebbe essere composto da link differenti. Quello che differenzia un protocollo di inter-networking da un protocollo di rete locale è proprio la sua capacità di inviare un messaggio ad un computer definito, senza il bisogno di effettuare una trasmissione di tipo Broadcast. Una trasmissione del tipo uno-ad-uno viene, non a caso, definita Unicast. L'identificazione di un destinatario preciso ( una singola postazione ) altro non è che un meccanismo di instradamento dei dati ( routing ). Un protocollo di inter-networking, inoltre, crea una rete virtuale, indipendente dal mezzo fisico di collegamento utilizzato. Esistono molti protocolli di inter-networking ( per Internet ), quali AppleTalk, di Apple, IPX ( Internetwork Packet Exchange ), di Novell, DECNet, di Digital, NetBEUI, di Microsoft, ma il protocollo IP è, sicuramente, il più diffuso. Un nodo ( o postazione ) che connette due o più reti è chiamato "router" ( oppure "gateway" ). Un router avrà un'interfaccia di rete ( scheda ) per ogni rete alla quale è connesso. Quando un computer deve connettersi con un altro computer, esterno alla propria LAN, dovrà connettersi, via Ethernet, con un router, che, normalmente, utilizza, come protocollo di comunicazione con il mondo esterno, il protocollo IP ( Internet Protocol ), appartenente alla suite di protocolli TCP/IP. Per poter comunicare via TCP/IP, è necessario, quindi, che una scheda di rete sia identificabile anche con un indirizzo numerico IP. Di conseguenza, ogni singola scheda di rete, installata in un computer, può essere identificata sia dal suo MAC address, quando parla il linguaggio Ethernet, sia dal suo IP address, quando parla il linguaggio IP. Il comando
Senza alcun parametro, restituisce l'elenco delle schede di rete attive. Nei sistemi UNIX e UNIX-like ( come Linux ) esiste un'interfaccia di rete virtuale, che viene attivata ogni qualvolta si abilita il sistema alle comunicazioni TCP/IP. Stiamo parlando dell'interfaccia di rete di "loopback", normalmente visibile con il nome
Per convenzione, a questa interfaccia viene assegnato l'indirizzo IP:
Questa interfaccia è di estrema importanza per il corretto funzionamento del sottosistema di rete TCP/IP.
restituisce tutte le schede di rete presenti nel sistema, comprese quelle non attive. Per avere informazioni dettagliate su una particolare scheda di rete, è sufficiente specificare il nome ( Linux ) della scheda di rete:
In questo caso, stiamo interrogando la scheda di rete wireless
Per quanto riguarda i pacchetti inviati e ricevuti,
L'ultimo parametro che richiede una qualche spiegazione è Metric. Metric è un parametro importante nell'ambito del protocollo Routing Information Protocol ( RIP ). Il protocollo RIP ha il compito di mantenere aggiornate le tabelle di routing, memorizzando, per ciascuna rete remota conosciuta, o anche per ciascun computer appartenente ad una rete remota, l'indirizzo IP, la distanza, espressa in numero di HOP ( Metric ), cioè in numero di router attraverso il quale un pacchetto dovrà passare, per arrivare a destinazione, e il primo router al quale destinare il pacchetto in uscita. Per completezza, aggiungo che i router possono anche scambiarsi queste informazioni, inviando ai router conosciuti parte di esse, utilizzando messaggi UDP, inviati attraverso la porta 520 o 521. Per quanto riguarda la scheda di rete, occorre ricordare che essa rappresenta, comunque, un HOP verso una rete ( la nostra ). In alcuni sistemi operativi,
imposta indirizzo IP, netmask e indirizzo di broacast della interfaccia di rete "eth0". L'opzione:
abilita o disabilita l'utilizzo del protocollo ARP, per l'interfaccia indicata. Richiede i privilegi di root ( amministratore ). Il protocollo ARP ( Address Resolution Protocol ) viene usato per mappare gli indirizzi IP con gli indirizzi della rete sottostante ( per esempio, gli indirizzi MAC per reti Ethernet ). Il protocollo RARP ( Reverse Address Resolution Protocol ) esegue l'operazione inversa ( dagli indirizzi di rete MAC ai corrispondenti indirizzi IP ). L'opzione:
abilita o disabilita la modalità promiscua per la scheda di rete indicata. Richiede i privilegi di root ( amministratore ). In modalità promiscua, una scheda di rete accetta tutto il traffico in transito, non solo quello destinato alla scheda stessa. In modalkità non promiscua, solitamente, una scheda di rete trascura le frame di dati che non contengano il proprio indirizzo MAC ( oppure che siano frame con indirizzi di broadcast o multicast ). La modalità operativa della scheda di rete, quindi, è riferita al protocollo Ethernet. L'opzione:
abilita o disabilita la ricezione dei pacchetti multicast ( destinati a più postazioni, ma non a tutte ). L'opzione:
abilita o disabilita la ricezione dei pacchetti broadcast ( destinati a tutte le postazioni ). E' possibile, in fase di abilitazione, indicare un indirizzo IP di broadcast. L'opzione:
imposta la Maximum Transmission Unit ( MTU ) a 1500 byte. L'opzione:
imposta il valore Metric a 1. I comandi:
assegnano o deassegnano un indirizzo IP, versione 6, alla scheda di rete indicata, con aggiunta della lunghezza dell'indirizzo di rete. I comandi:
disabilitano ( down ) o abilitano ( up ) una interfaccia di rete. Per conoscere tutte le opzioni disponibili, da usare con cautela, chiamate il manuale di
La suite di protocolli TCP/IP è un insieme di protocolli di rete. Un protocollo definisce le regole e le procedure da seguire per portare a termine un determinato compito. La nostra vita è fondata sui protocolli. Quando inviamo una lettera, per esempio, scriviamo l'indirizzo del mittente ( noi ) sul lato posteriore della busta e l'indirizzo del destinatario sul lato anteriore della busta, in ossequio ad un determinato protocollo. Se, per un eccesso di creatività, facessimo l'opposto, l'ufficio postale, sempre in ossequio ad un determinato protocollo, recapiterebbe la nostra lettera al nostro indirizzo! E questo, probabilmente, non è quello che ci saremmo aspettati. Affinché un protocollo svolga in modo adeguato il suo compito, il protocollo deve essere noto a, condiviso e rispettato da tutte le parti in gioco: mittente, destinatario, intermediari ( ufficio postale ). Se uno solo degli attori cambia le regole del gioco, senza avvisare gli altri, la comunicazione diventa inaffidabile ( se non impossibile ). Non è detto che, per un determinato compito, esista una sola procedura, un solo protocollo. L'importante è che tutti gli attori coinvolti nella realizzazione di quel determinato compito si accordino, preventivamente, sul protocollo da adottare. "Internet è composta da un numero di reti a pacchetti, interconnesse, i cui host possono comunicare tra loro, utilizzando i protocolli Internet. Tra questi protocolli, troviamo IP ( Internet Protocol ), ICMP ( Internet Control Message Protocol ), IGMP ( Internet Group Management Protocol ), oltre ad una gran varietà di protocolli per le applicazioni e per il trasporto dei dati, che fanno affidamento su di essi. Tutti i protocolli Internet utilizzano IP quale meccanismo di base di trasporto dei dati. IP è un protocollo che gestisce singoli datagramma ( pacchetti di dati ), è un protocollo che non crea una connessione da host a host ( connectionless ), ma offre un meccanismo di indirizzamento dei datagramma, di determinazione del tipo di servizio che ha generato il datagramma ( type-of-service ), di frammentazione e riassemblaggio dei dati, di sicurezza. ICMP e IGMP sono considerati parte integrante di IP, sebbene siano, da un punto di vista strutturale, posti nello strato immediatamente superiore a IP. ICMP provvede ad inviare i messaggi di errore, oltre che al controllo di flusso, al reinstradamento dei dati al successivo router di destinazione e ad altre funzioni di controllo e di manutenzione. IGMP mette a disposizione i meccanismi di adesione e di disdetta, da parte dei router e degli host, ai gruppi multicast IP. La consegna affidabile dei dati, invece, è il compito dei protocolli inclusi nel livello di trasporto ( Transport Layer ) della suite di protocolli Internet, quali Transmission Control Protocol ( TCP ), che garantisce la trasmissione punto-punto, con la creazione ed il controllo di una connessione e la ritrasmissione dei datagramma perduti. Una trasmissione senza connessione, al contrario, è il compito del protocollo User Datagram Protocol ( UDP ) " ( RFC 1812: Requirements for IP Version 4 Routers ). Il protocollo TCP ( Transfer Control Protocol ) si occupa del trasporto affidabile dei dati, attraverso una rete, da un computer A ad un computer B. Per trasmissione affidabile, si intende una trasmissione durante la quale il protocollo TCP tiene traccia dei dati inviati e ricevuti, al fine di garantire che tutti i dati abbiano raggiunto la destinazione corretta. Se un pacchetto di dati andasse perduto o arrivasse a destinazione danneggiato, il protocollo TCP ripeterebbe la spedizione. Non sempre si ha bisogno di un trasporto affidabile dei dati. A volte, vuoi per la fretta, vuoi per la mole dei dati che si deve trasmettere, in un ristretto intervallo temporale, ci si può accontentare di una trasmissione il cui fine sia una "consegna con il massimo sforzo", che significa: "fare un tentativo di invio dei dati. Se arrivano, bene. Se non arrivano, va bene lo stesso. Se arrivano in ritardo o danneggiati, va bene lo stesso! I dati persi vengono semplicemente dimenticati, mentre i dati danneggiati vengono eliminati". Questo tipo di trasmissione è la missione di un altro protocollo appartenente alla suite TCP/IP, e, più precisamente, UDP ( User Datagram Protocol ). UDP non fa alcun tentativo per gestire la sessione di comunicazione o per negoziare una ritrasmissione dei pacchetti persi o danneggiati. Provate a pensare alla telefonia tradizionale: spesso, soprattutto nei casi di comunicazioni internazionali, è percepibile il ritardo in cui la voce del nostro interlocutore arriva. Questo ritardo è chiamato: latenza, ed è il periodo di tempo necessario per il trasporto dei dati attraverso un cavo, ancora strettamente legato alla velocità alla quale la corrente elettrica può percorrere tale distanza. Veloce, ma non come la luce! In un simile contesto, un protocollo come UDP, che si preoccupa della sola spedizione dei pacchetti di dati, senza perdere tempo in controlli dispendiosi, è il protocollo più adatto, anche se non il più affidabile. Il protocollo IP fornisce un sistema di indirizzamento numerico, che permette di identificare univocamente tutti i computer collegati a internet, in modo che ogni pacchetto di dati, trasportati da un protocollo di trasporto, quali TCP o UDP, contenga l'indirizzo di destinazione e l'indirizzo di partenza ( indirizzo IP di origine ). Il sistema di indirizzamento IP è diverso dal sistema di indirizzamento usato dal protocollo di rete Ethernet, che, come abbiamo visto, utilizza, come indirizzo di una postazione, il MAC address. Questa differenziazione si è resa necessaria a causa della diversa natura delle reti TCP/IP ed Ethernet: una rete TCP/IP, infatti, è strutturata in modo da poter inviare i dati ad una singola postazione ( Unicast ), mentre una rete Ethernet invia i dati a tutte le postazioni di rete ( Broadcast ), lasciando a ciascuna di esse il compito di selezionare i dati a lei destinati. I protocolli ARP ( Address Resolution Protocol ) e RARP ( Reverse Address Resolution Protocol ) convertono gli indirizzi IP in indirizzi MAC ( ARP ) oppure gli indirizzi MAC in indirizzi IP ( RARP ). Questi due protocolli, oggi, sono ampiamente superati dai protocolli BOOTP e DHCP. Per poter inviare i dati ad una singola postazione, è necessario implementare un qualche meccanismo che permetta l'identificazione della postazione di destinazione: quello che, normalmente, viene definito all'interno di un qualche protocollo di routing ( RIP, BGP, EGP, OSPF, GGP, HELLO, IGRP, EIGRP ). Quando dico "un qualche protocollo di routing", sottolineo, implicitamente, una delle caratteristiche più distintive della suite di protocolli TCP/IP: la sua stratificazione. La trasmissione di dati, attraverso una rete TCP/IP, è suddivisa in una serie ( strati ) di operazioni sequenziali: ciascuna di queste operazioni può essere eseguita in modalità differenti, utilizzando un protocollo ad hoc. La scelta di un protocollo, piuttosto che un altro, all'interno dello stesso strato ( layer, livello ) della comunicazione, non inficia la buona riuscita della comunicazione stessa. Per esempio, per trasmettere pacchetti di dati da una macchina A alla macchina B, dovrò, prima, scegliere uno dei due protocolli di trasporto, TCP o UDP, a seconda delle mie esigenze del momento, poi affidare ogni pacchetto al protocollo IP, così da assegnargli un indirizzo di origine ed un indirizzo di destinazione. Che io scelga TCP, per la sua affidabilità, oppure UDP, per la sua velocità, non ha alcuna rilevanza, sulla buona riuscita della trasmissione. L'importante è che io scelga un protocollo di trasporto, fra i tanti disponibili: TCP, UDP, SPX, NetBEUI/NBF. Da un punto di vista funzionale, una trasmissione TCP/IP viene suddivisa in quattro differenti strati ( layer ):
Ciascun protocollo aggiungerà una serie di informazioni al pacchetto di dati in transito. Il pacchetto di dati originale viene chiamato payload, mentre le informazioni aggiunte da ciascun protocollo vengono incapsulate in un header ( intestazione ). Naturalmente, nel percorrere la stratificazione TCP/IP, per ogni nuovo strato, il payload diventa la somma di: pacchetto di dati originale + header aggiunti dai protocolli precedenti. Vediamo un esempio: se il pacchetto di dati originale contenesse la parola:
per il protocollo TCP, per esempio, il payload sarebbe costituito da quella semplice parola, mentre gli header aggiunti da TCP sarebbero costituiti da una serie di campi, ciascuno dei quali contenente una informazione vitale per il trasporto del pacchetto: porta di origine, porta di destinazione, il numero di sequenza TCP ( un numero progressivo che viene assegnato ad ogni byte di dati trasmesso, in modo da poter tenere sotto controllo i dati inviati, ricevuti e persi ), il numero di conferma TCP ( un numero sequenziale, legato al numero di sequenza TCP, che svolge la funzione di "ricevuta" del pacchetto di dati ), l'offset dei dati ( un campo di 4 bit che contiene la lunghezza dell'header ( intestazione ) TCP, misurata in "parole" di 32 bit, in modo da permettere al computer destinatario di conoscere il punto in cui termina l'intestazione e iniziano effettivamente i dati ), 6 bit di controllo, la dimensione della finestra ( una sorta di buffer, dedicato ai dati in ricezione ), il campo di controllo degli errori ( checksum ), alcuni campi opzionali. I bit riservati agli header TCP, insieme ai bit riservati ai dati originali ( ciao ) verranno, poi, trattati dal protocollo di livello successivo, IP, come payload, al quale il protocollo IP aggiungerà i suoi propri header ( tra i quali, troviamo l'indirizzo IP sorgente e l'indirizzo IP di destinazione ). E così via. Internet è una rete di reti ( singole reti interconnesse tra loro ). Ciascuna di queste reti può utilizzare apparecchiature e protocolli di rete differenti ( Link Layer ), ma, quando interconnessa con l'intera rete Internet, dovrà uniformarsi alla stessa suite di protocolli ( TCP/IP ) utilizzata dalle altre reti. Il punto di connessione fisica tra una rete locale ( Ethernet, per esempio ) e la rete internet è una macchina speciale, chiamata router o gateway. Un router ha installato una scheda di rete per ciascuna rete alla quale è connesso. Come abbiamo già visto, quando un computer deve connettersi con un altro computer, esterno alla propria LAN, dovrà connettersi, via Ethernet, ad un router. All'interno del router, il protocollo IP ispeziona ogni pacchetto di dati in ingresso, allo scopo di identificarne l'indirizzo IP di destinazione. Se il pacchetto proviene dall'esterno, IP dovrà semplicemente verificare se l'indirizzo di destinazione del pacchetto appartenga ad una rete locale direttamente collegata al router. Se l'indirizzo di destinazione è un indirizzo della rete locale, il pacchetto è giunto a destinazione. In caso contrario, IP dovrà effettuare un nuovo instradamento del pacchetto, decidendo, in base alla sua tabella di routing, a quale altra rete inviarlo, identificando l'indirizzo IP del nodo successivo, al quale spedire il pacchetto, affinchè quest'ultimo possa, passando da un nodo ( router ) all'altro, raggiungere la sua destinazione finale. Questo meccanismo è chiamato "routing". Il routing è possibile proprio grazie alla struttura degli indirizzi numerici, o indirizzi IP. Ciò che differenzia un normale computer da un router è proprio la capacità del router di dirottare un pacchetto di dati da una scheda di rete all'altra. In Internet, ogni singola postazione ( host ) deve essere identificata da un indirizzo numerico. O meglio, ogni singola scheda di rete deve essere identificata, in modo univoco, da un indirizzo numerico, chiamato indirizzo IP. Gli indirizzi IP possono essere numeri a 32 bit ( IP versione 4 ) oppure numeri a 128 bit ( IP versione 6 ). Un esempio di indirizzo IP a 32 bit è il seguente:
che è la rappresentazione binaria del numero decimale 1609432440, che è il reale indirizzo IP del computer. Questo indirizzo IP può anche essere rappresentato dai corrispondenti valori dei quattro ottetti di bit che lo compongono:
Un indirizzo IP può contenere tre informazioni distinte: l'indirizzo della rete locale, l'indirizzo di una sottorete della rete locale, l'indirizzo della singola macchina ( host ). Quando la singola macchina (host) è connessa a più di una rete locale, viene definita multihomed e avrà un indirizzo IP per ciascuna scheda di rete (per ciascuna rete locale) alla quale è connessa. Se la rete locale è connessa a Internet, è necessario farsi assegnare un indirizzo di rete univoco da un'organizzazione dedicata: IANA ( Internet Assigned Numbers Authority ): "Nonostante Internet sia conosciuta come una rete globale decentralizzata, ci sono esigenze tecniche per cui diventa necessario un coordinamento globale almeno per alcune sue funzioni chiave. Di questo coordinamento si occupa IANA. Le nostre attvità possono essere raggruppate in tre categorie: la gestione della DNS Root (la gestione dei nomi di dominio di primo livello, la cosiddetta root o radice), il coordinamento del gruppo globale di numeri IP e AS (Autonomous System), attraverso la loro assegnazione ai Regional Internet Registries (RIR):
infine, l'assegnazione di numeri univoci per i protocolli". Se l'indirizzo IP è un indirizzo a 32 bit ( IPv4 ), l'indirizzo di rete occuperà solo un limitato numero di quei 32 bit. Il numero di bit dedicato all'indirizzo di rete è indicato dalla netmask ( maschera di rete ). Una maschera di rete è una sequenza di 32 bit, in cui i bit impostati a 1 indicano i corrispondenti bit dell'indirizzo IP dedicati all'indirizzo di rete. Per esempio, la coppia indirizzo IP/netmask:
indica chiaramente che l'indirizzo IP 95.237.253.120 appartiene alla rete:
in cui i primi 8 bit identificano la rete ( e sono stati assegnati da IANA ), mentre i restanti 24 bit possono essere utilizzati, dall'assegnatario, per indicare una sottorete ed un host, oppure solo un host ( un singolo computer ). La gestione di questa porzione dell'indirizzo, naturalmente, è affidata all'autorità che controlla la rete (assegnatario) e non a IANA. Nell'architettura di indirizzamento Internet, la Internet Engineering Task Force (IETF) e la Internet Assigned Numbers Authority (IANA) hanno dedicato alcuni indirizzi Internet Protocol (IP) a scopi specifici e speciali (Reserved IP addresses). Vediamo alcuni esempi:
Tornando alla gestione delle porzioni di un indirizzo IP dedicate agli host di una rete locale, quanti host potremmo rappresentare, avendo a disposizione 24 bit?
Davvero difficile immaginare una rete locale con più di 16 milioni di computer fisicamente collegati! Ma meno difficile immaginare che una rete locale venga strutturata in più sottoreti, cioè reti scollegate l'una dall'altra, ciascuna composta da host fisicamente collegati tra loro. Un tempo, ciascuna di queste sottoreti sarebbe stata collegata ad un router, per il quale il gestore della rete avrebbe dovuto farsi assegnare, da IANA, un indirizzo IP. Dieci sottoreti, quindi, avrebbero richiesto 10 indirizzi IP. Per evitare un dispendio eccessivo nelle assegnazioni di indirizzi IP, nacque il concetto di IP subnetting (creazione di sottoreti IP). L'intera rete è ancora riconoscibile dal mondo esterno da un solo indirizzo IP. La porzione dell'indirizzo IP riservata agli host (24 bit, nel nostro esempio) può essere, a sua volta, suddivisa, dal gestore della rete, in un secondo numero di rete e in un numero di host. Questo secondo numero di rete rappresenta la sottorete (subnetwork o subnet). L'indirizzo IP della rete principale, quindi, viene interpretato come:
Una rete, quindi, identifica una entità amministrativa, alla quale IANA ha assegnato un numero di rete (network number), la quale, poi, suddivide, a suo piacimento, la propria rete in una o più sottoreti, la cui organizzazione interna è completamente sconosciuta sia a IANA, sia al mondo esterno. La combinazione di subnet number e host number definisce così il local address o porzione locale dell'indirizzo IP. È bene sottolinearlo: l'organizzazione in sottoreti (Subnetting) è completamente trasparente alle reti remote. Un computer (host) appartenente ad una rete locale suddivisa in sottoreti è a conoscenza della struttura in sottoreti della propria rete, mentre un host appartenente ad un'altra rete non lo è. Un host remoto interpreta la porzione locale dell'indirizzo IP di quella rete come un numero di host. La divisione della porzione locale di un indirizzo IP in subnet number e host number è una scelta dell'amministratore della rete locale. Vediamo, ora, un esempio di sottorete: possiamo dedicare il primo bit dei 24 riservati agli host alla identificazione di due sottoreti distinte:
In questo esempio, la rete 95.0.0.0 è stata suddivisa in due sottoreti:
ciascuna delle quali ha a disposizione:
indirizzi di host, grazie ai 23 bit rimasti a disposizione. Naturalmente, utilizzando un solo bit della parte host per identificare le sottoreti, sarà possibile creare solo due sottoreti, pari a:
Una sottorete è una rete locale di computer, collegati tra loro da un solo cavo, interconnessa con una rete locale più grande. Come riportato nella RFC 950, Internet Standard Subnetting Procedure: "Il modello a tre livelli ( Internet, rete locale, sottorete della rete locale ) è utile per i detentori di reti che siano distribuite su più palazzi ( come le Università o le aziende con gli uffici distribuiti in più edifici ), dove, spesso, si rende necessario utilizzare più di un cavo di collegamento per la propria rete locale ( LAN ). Ciascuna LAN verrà quindi trattata come una sottorete. Ci sono più motivi per i quali una organizzazione potrebbe utilizzare più cavi, per coprire, per esempio, un campus:
La divisione di un indirizzo IP in indirizzo di rete, indirizzo di sottorete e indirizzo di host è riconoscibile solo dagli host compresi nella rete locale. Gli host presenti in Internet, ma esclusi dalla rete locale, continueranno a riconoscere solo l'indirizzo di rete e l'indirizzo di host, fallendo nella identificazione delle eventuali sottoreti. Solo l'amministratore di rete può decidere quanti bit dell'originale indirizzo di host siano da dedicare ad una eventuale sottorete, utilizzando, poi, una subnet mask ( maschera di sottorete ), che funziona esattamente come la maschera di rete ( netmask ), per specificare la struttura delle sottoreti. I router attaccati alla rete locale devono essere configurati con la maschera di sottorete di ciascuna sottorete servita ( alla quale sono attaccati ). Nel nostro esempio, l'amministratore di rete ha ricevuto, da IANA, un indirizzo IP di rete ed una maschera di rete pari a:
poi, ha suddiviso la sua rete in due sottoreti, delle quali la maschera di sottorete è:
Per il mondo esterno, l'indirizzo IP:
resterà un indirizzo IP che identifica un host della rete
mentre l'amministratore della rete locale 95.0.0.0 saprà che quell'indirizzo, in realtà, identifica un host della sottorete:
così come l'indirizzo:
identifica un host della sottorete:
IANA, quindi, assegna solo indirizzi IP di rete. Agli albori di internet, gli indirizzi IP venivano suddivisi in tre classi distinte:
La divisione degli indirizzi IP in classi venne presto abbandonata in favore di un nuovo sistema: CIDR: classless inter-domain routing. Per molte aziende una rete di soli 254 host era davvero troppo piccola, mentre avere migliaia di host poteva avere senso solo per pochissime reti locali. Con il sistema rigido delle classi di indirizzi le aziende si ritrovavano molti indirizzi IP inutilizzati. CIDR è proprio fondata sul concetto di sottorete e di subnet mask (maschera di sottorete). La subnet mask dice al router quale parte dell'indirizzo IP indica la rete e quale parte indica gli host. La divisione di una rete locale in sottoreti apre la possibilità ad una gestione ottimale degli indirizzi IP assegnati da IANA. Vediamo un esempio:
è una rete (una volta avremmo detto: di classe C), in cui gli ultimi 8 bit sono riservati ai 256 host. Ipotizziamo che l'amministratore di rete desideri creare 5 sottoreti, di cui tre contengano 50 host ciascuna, mentre due contengano 30 host ciascuna. Per creare 5 sottoreti, avremmo bisogno di tre bit ( su otto ) da dedicare alle sottoreti:
Ma, utilizzando tre bit, creeremmo ben 8 sottoreti differenti, ciascuna delle quali, però, potrebbe contenere solo 32 host ( con i 5 bit rimasti ). Queste otto sottoreti avrebbero una maschera di sottorete ( subnet mask ) pari a:
Come fare? Iniziamo a creare meno sottoreti, usando due soli bit, in modo da aumentare il numero di host potenziali:
Ora abbiamo 4 sottoreti, ciascuna delle quali ha a disposizione 6 bit da dedicare agli host: 64 host per ciascuna sottorete. Queste quattro sottoreti hanno una maschera di sottorete ( subnet mask ) pari a:
Visto che per due sottoreti avremmo bisogno di soli 30 host ciascuna, suddividiamo ulteriormente la quarta sottorete:
Ora abbiamo 3 sottoreti, ciascuna delle quali ha a disposizione 6 bit da dedicare agli host: 64 host per ciascuna sottorete. Due sottoreti, ciascuna delle quali ha a disposizione 5 bit da dedicare agli host: 32 host per ciascuna sottorete, con una maschera di sottorete ( subnet mask ) pari a:
Ci sono due tipi di subnetting (creazione di sottoreti): statico e a lunghezza variabile. Lo static subnetting implica che tutte le sottoreti create all'interno di una stessa rete usino la stessa subnet mask. Facile da implementare, ma esposto al rischio di perdere gran parte dello spazio degli indirizzi, soprattutto nelle reti piccole. Con l'introduzione del variable length subnetting o variable length subnet masks (VLSM), le sottoreti di una stessa rete possono utilizzare maschere di sottorete (subnet masks) differenti. Una sottorete può essere, a sua volta, suddivisa in due parti, semplicemente aggiungendo un bit alla porzione di sottorete della maschera di sottorete. Proprio come abbiamo fatto nel nostro ultimo esempio. Le altre sottoreti della rete non vengono toccate da questo cambiamento. Questo meccanismo permette di non sprecare indirizzi IP, perchè suddivide la rete in modo tale da assegnare a ciascuna sottorete il numero di host di cui necessita. La gestione del variable length subnetting è affidata ai router che interconnettono le sottoreti. I singoli host all'interno della rete continuano ad utilizzare il basic IP routing. Il Native IP routing e RIP (Routing Information Protocol) Version 1 supportano solo lo static subnetting, mentre RIP (Routing Information Protocol) Version 2 supporta il variable length subnetting. Normalmente, gli host conservano la subnet mask in un file di configurazione. A volte, questo non è possibile: per esempio, in un host senza disco fisso. Il protocollo ICMP prevede due tipi di messaggio: address mask request e address mask reply, grazie ai quali un host può ottenere la subnet mask corretta da un server. Una delle funzioni fondamentali eseguite dall'IP layer è lo IP routing (instradamento di pacchetti di dati IP), il meccanismo di base per interconnettere differenti reti fisiche (local network). Un computer può svolgere simultaneamente le funzioni di host normale (computer) e di router. Un router, naturalmente, con solo informazioni parziali di routing (partial routing information). Un router di questo tipo ha informazioni solo su quattro tipi di destinazione:
Per tutte le altre destinazioni, sono ncessari protocolli addizionali che permettono l'implementazione di un router completo (full-function router). Questi tipi di router possono scambiare informazioni con altri router. Se l'indirizzo IP di destinazione non è l'indirizzo IP del router, oppure un indirizzo IP appartenente alla stessa rete locale o sottorete alla quale appartiene il router, il datagramma dovrà essere instradato verso l'indirizzo IP di destinazione, che è esterno alla rete locale. Qualsiasi macchina che sia in grado di accettare pacchetti di dati ( datagramma ) da una rete ed instradarli verso un'altra rete è un router, o gateway. Un router è sempre, almeno, dual-homed, cioè dotato di due interfacce di rete ( o reali, oppure virtuali ): una connessa ad una rete, l'altra connessa ad una rete differente. Prendiamo un esempio, tratto da Policy Routing With Linux - Online Edition by Matthew G. Marsh:
In questo esempio, è molto probabile che il computer C sia un router, visto che ha due indirizzi IP. Lo Indirect routing avviene quando l'host di destinazione non è fisicamente connesso ad una rete alla quale è fisicamente connesso l'host mittente (source host). Il solo modo di raggiungere la destinazione è attraversare uno o più IP gateway, o router. L'indirizzo del primo gateway (first hop) è chiamato indirect route nell'algoritmo di IP routing ed è la sola informazione necessaria all'host mittente per inviare un pacchetto di dati all'host di destinazione:
La scelta dell'instradamento dei pacchetti di dati, chiamata "relaying" o "forwarding", viene fatta sulla base delle informazioni contenute in un database di possibili instradamenti ( route ), conservato nel router stesso o negli host con capacità di rete. Questo database viene anche chiamato tabella di routing, o routing information base (RIBs). Linux kernel 2.2 e 2.4 supportano multiple routing table: le due più comunemente usate, local e main routing tables, più altre 252 routing tables addizionali. I Kernel che supportano multiple routing tables identificano le routing tables con numeri interi compresi tra 0 e 255, memorizzati nel file:
La routing table viene consultata spesso da IP (in un computer molto frequentato questo può significare centinaia di volte al secondo), ma viene aggiornata molto meno spesso, da un routing daemon, (circa una volta ogni 30 secondi). La routing table può essere aggiornata anche quando arriva un messaggio ICMP "redirect" e dal comando:
In una workstation domestica, la tabella di routing sarà molto semplice.
Soprassedendo sulla destinazione link-local (169.254.0.0) che è una classe di indirizzi destinata ad un uso particolare, nel caso DHCP fallisse nell'assegnazione degli indirizzi IP, le altre due righe della tabella dividono il mondo in due categorie: una rete raggiungibile localmente (192.168.1.0/24) e tutto il resto. Se un indirizzo rientra nell'intervallo 192.168.1.0/24, l'host sa che quell'indirizzo è raggiungibile direttamente sul cavo: quindi, basterà inviare i pacchetti di dati al protocollo di rete locale (Ethernet, per esempio). Per tutti gli indirizzi che non rientrano nell'intervallo di indirizzi locali, l'host li invierà all'indirizzo del Gateway di default, che solitamente è un router connesso ad altre reti e router (e a Internet). Non a caso, l'indirizzo del Gateway delle destinazioni locali è pari a 0.0.0.0. La Flag G indica una destinazione non connessa localmente. La tabella di routing è composta da una serie di record, ciascuno dei quali contiene:
Oltre a questi campi, visualizzabili con il comando:
ciascun record della tabella di routing contiene campi addizionali:
Il routing IP, quindi, viene eseguito " hop-by-hop " ( un router dopo l'altro ). Un router IP non conosce mai l'intero percorso che il datagramma dovrà seguire, a meno che, sia il computer mittente, sia il computer di destinazione, si trovino sullo stesso segmento di rete e, quindi, siano connessi direttamente. In caso contrario, un router IP deve solo conoscere l'indirizzo IP del prossimo router, al quale inviare il datagramma, nella convinzione che il prossimo router sia direttamente connesso al computer di destinazione, oppure si trovi molto più vicino al computer di destinazione di quanto non si trovasse il computer mittente. Per stabilire il miglior instradamento possibile, per una determinata destinazione, e, di conseguenza, stabilire quale sia il " next hop ", il router si serve di una serie di protocolli, o algoritmi, quali:
Vediamo ora un ultimo esempio, un pochino più complesso:
Qui possimo identificare quattro schede di rete:
3 reti di classe C connesse localmente:
una piccola subnet:
e due reti raggiungibili via static route attraverso router interni alla rete locale:
Ecco, quindi, la topologia della rete locale. Dall'host che contiene la tabella di routing e che ha 4 schede di rete, i dati possono viaggiare nelle seguenti direzioni:
Negli esempi visti fino ad ora, gli indirizzi IP si riferivano a singoli host. In questo caso, si parla di indirizzi unicast. Le connessioni Unicast specificano una relazione one-to-one tra un singolo host mittente (source) ed un singolo host di destinazione. Esistono anche tre tipi speciali di indirizzi IP, che vengono usati per inviare dati a host multipli:
La RFC 1812, Requirements for IP Version 4 Routers descrive le funzioni svolte da un router. "Un router Internet esegue le seguenti funzioni:
Il sistema globale di interconnessione è composto da un certo numero di reti locali, di tipo WAN ( Wide-Area Network ), alle quali vengono connessi i router di vari Autonomous Systems ( AS ); i computer ( host ) direttamente connessi al sistema globale sono relativamente pochi. Molti computer, infatti, sono connessi a reti LAN locali. Molte organizzazioni hanno gruppi di reti LAN, interconnesse da router locali. Ciascuno di questi gruppi di reti LAN è connessa, in uno o più punti, alla rete globale da uno o più router". In una rete IP di grandi dimensioni, la gran parte dei router conservano una tabella di routing locale, limitata, nella sua azione, ai computer della rete che si trovino all'interno di un determinato raggio, mentre solo pochi router, i cosiddetti core router, conservano tabelle di routing complete, capaci di raggiungere l'intera rete. Quando un router locale non trova alcuna corrispondenza, all'interno della propria tabella di routing, non fa altro che reinstradare i pacchetti di dati verso uno dei core router. "L'architettura corrente di Internet si basa su una serie di premesse, circa il sistema di comunicazioni, le più importanti delle quali, relativamente ai router, sono:
Nel router, le informazioni che devono passare dal livello Link ( Link Layer, il livello in cui operano i protocolli di rete locale, quale Ethernet ) al livello Internetwork ( il livello in cui operano i protocolli di internet ), per ogni pacchetto di dati ricevuto, sono:
Le informazioni, invece, che devono passare dal livello Internetwork ( il livello in cui operano i protocolli di internet ) al livello Link ( Link Layer, il livello in cui operano i protocolli di rete locale, quale Ethernet ), per ogni pacchetto di dati inviato, sono:
Il protocollo IP consulta la tabella di routing per stabilire qual'è il nodo ( host o router ) successivo a cui inviare un pacchetto di dati, destinati ad una rete diversa dalla attuale. Visto che la tabella di routing può essere consultata da IP, è presumibile che ci sia un qualche meccanismo che permetta anche a noi di consultarla. Questo meccanismo si chiama
Questa è la tabella di routing di un computer domestico, connesso ad un router ADSL. Per avere la tabella di routing con i nodi espressi in indirizzi IP, utilizzare l'opzione
Per avere la tabella di routing, comprensiva di tutti i parametri impostati:
Per consultare la cache di routing, utilizzare una delle due opzioni seguenti:
Le reti direttamente connesse al router vengono, automaticamente, scritte nella tabella di routing, non appena vengono installate ed inizializzate le relative schede di rete ( con il comando
Di ciascuna rete o di ciascun host, è possibile specificare alcuni altri parametri:
dove:
Nel nostro esempio, abbiamo aggiunto, nella tabella di routing, un instradamento verso la rete ( net ) esterna 146.1.0.0, con maschera di rete 255.255.0.0, chiedendo a IP di inviare gli eventuali pacchetti di dati, destinati ad essa, al router ( GateWay ) con indirizzo IP 1.1.1.2. Prima di poter inserire questo comando, ovviamente, occorre aver impostato una route statica al gateway 1.1.1.2. Cosa significa " route statica "? Per rispondere a questa domanda, è sufficiente porsi un'altra semplice domanda: cosa accadrebbe al nostro pacchetto di dati, quando il router 1.1.1.2 dovesse essere irraggiungibile, per un qualsiasi motivo? Il pacchetto di dati non potrebbe essere inviato alla sua destinazione, a meno che non si sia impostata una route alternativa, per la rete esterna 146.1.0.0, per esempio:
Route statica, quindi, significa che l'instradamento verso la rete o l'host di destinazione verrà sempre tentato solo sul gateway riportato nella tabella di routing. Il router di destinazione ( gateway ) può essere specificato anche con il nome della scheda di rete:
Per aggiungere un router di default ( Gateway of last resort ), verso il quale instradare tutto il traffico dati destinato ad un IP non contemplato dalla tabella di routing, è possibile eseguire:
Questa riga di comando equivale al comando:
Per essere certi che il vostro sistema sia correttamente configurato, dovete verificare che siano configurate tutte le schede di rete, compresa l'interfaccia di loopback. In caso contrario, provvedete ad aggiungere manualmente quest'ultima interfaccia:
Nel caso non fossero già stati inseriti dal sistema, aggiungete anche i record per la rete locale:
Per eliminare una route dalla tabella di routing:
Il comando:
elimina il gateway di default, quello associato alla rete di destinazione 0.0.0.0. Il comando
dove vengono specificati, oltre ad eventuali opzioni facoltative, un oggetto ( OBJECT ) su cui operare ed un comando ( COMMAND ) da eseguire sull'oggetto ( OBJECT ), precedentemente selezionato. Gli oggetti ( OBJECT ) su cui operare sono:
Per ciascuno di questi oggetti ( OBJECT ), è possibile eseguire un certo numero di comandi ( COMMAND ). Per conoscere i comandi ( COMMAND ) e gli argomenti disponibili per un determinato oggetto ( OBJECT ), eseguire, su quell'oggetto, il comando
L'oggetto designato alla gestione della tabella di routing è l'oggetto
stampa a video la tabella di routing. E' anche possibile scegliere una particolare tabella di routing, se esistente, specificandone l'identificativo:
oppure, richiedere tutti i record presenti nella cache:
oppure, ancora, richiedere la stampa a video di tutte le tabelle di routing presenti:
Oltre alle tabelle di routing mantenute dal kernel, infatti, la tabella
La tabella di routing manipolata dal comando
La tabella di routing
Oltre a selezionare la tabella di routing da utilizzare, il comando
seleziona gli instradamenti che utilizzano la scheda di rete
permette di restringere la ricerca ad un range di indirizzi IP di destinazione, dove:
Quindi, per esempio:
restituirà tutte le destinazioni con prefisso di rete non inferiore a 192.168, mentre:
restituirà tutte le destinazioni con prefisso di rete non superiore a 10.0, includendo, quindi, indirizzi di destinazione quali:
ma, escludendo indirizzi di destinazione quali:
Infine, il comando:
restituirà tutte le destinazioni con prefisso di rete uguale a 10.0/16. Se non altrimenti specificato, il comando
che restituisce l'intera tabella di routing.
|
||||||
I comandi Linux: la rete | Le guide di .bit: contenuto originale |