Concetti base delle reti
A questo punto del nostro corso su Wireshark, per comprendere pienamente l’analisi di protocollo è necessario capire e assimilare in profondità il modo in cui i computer comunicano fra di loro. È importante quindi conoscere i fondamenti, i principi, i concetti che sottostanno al funzionamento delle reti. Esamineremo quindi in questa terza lezione i fondamenti dei protocolli di rete, il modello di riferimento OSI con cenni sulla suite di protocolli TCP/IP e delle Request for Comments (RFC).
Le modalità di comunicazioni nelle reti di computer
Una rete di calcolatori, per comunicare tra loro, utilizza una tecnica di trasmissione chiamata commutazione di pacchetto (packet switching). Si distingue dalla commutazione di circuito (circuit switching), che è una tecnica di comunicazione tipicamente usata nelle comunicazioni telefoniche.
Reti a commutazione di circuito (circuit switching)
In una rete a commutazione di circuito, il trasmittente compone il numero del destinatario, la rete elabora il numero mettendo su un collegamento fisico tra mittente e destinatario, il destinatario risponde; se accetta la connessione, i due possono comunicare avendo a disposizione un canale trasmissivo fisico dedicato; quando uno dei due chiude la comunicazione, la connessione viene interrotta.
Questa modalità di comunicazione non si rivela molto efficiente perché i canali trasmissivi vengono tenuti impegnati per tutto il tempo della comunicazione anche quando non vengono trasmesse informazioni. Inoltre, non è possibile utilizzare la rete per trasmettere informazioni provenienti da sorgenti differenti. È poco robusta perché la trasmissione risiede nel collegamento e se questo cade bisogna cominciare la trasmissione da capo.
Reti a commutazione di pacchetto (packet switching)
In una rete a commutazione di pacchetto, l’informazione da trasmettere viene suddivisa dal mittente in blocchi o pacchetti di dati di dimensione limitata. Ad ognuno di questi blocchi viene aggiunta una serie di dati che contengono le informazioni necessarie affinché possano essere inoltrati alla loro destinazione finale. I pacchetti, così formati, vengono inviati individualmente attraverso la rete senza che sia stato stabilito un canale trasmissivo e una volta arrivati a destinazione vengono riassemblati dal destinatario nella loro forma originale.
Nel luglio del 1961 Leonard Kleinrock, un visionario scienziato del M.I.T. (Massachusetts Institute of Technology) pubblica “Information flow in large communication”, il primo articolo sulla teoria del “packet switching”; successivamente, nel 1964, pubblica il libro “ Communication net”, descrivendo il funzionamento di una rete basata sul packet switching.
Questa rivoluzionaria modalità di comunicazione cambia completamente il modo di intendere le comunicazioni, perché si rivela molto più efficiente del sistema precedente. Infatti, i canali trasmissivi vengono utilizzati solo per il tempo strettamente necessario al passaggio dei pacchetti. Inoltre, poiché ogni pacchetto porta con sé la sua identificazione, una rete può trasportare nello stesso tempo pacchetti provenienti da sorgenti differenti. È molto robusta perché la trasmissione non consiste nei collegamenti come nel sistema precedente, ma consiste nel pacchetto dei dati. Il pacchetto correttamente formato con l’indirizzo sorgente e di destinazione, una volta spedito, è come se vivesse di vita propria, con un solo traguardo da perseguire: arrivare a destinazione. E per fare questo può eseguire tutti i percorsi che vuole, utilizzando una varietà di mezzi differenti per giungere alla sua destinazione finale.
Per poter essere inviati e ricevuti correttamente questi pacchetti di dati devono seguire delle regole.
I protocolli di rete
I protocolli di rete sono delle regole formali di comunicazione, cioè regole e convenzioni pre-definite che indicano quale è il formato, la temporizzazione, la sequenzializzazione, il controllo del flusso, il controllo e la correzione degli errori, la segmentazione, la cifratura, la compressione/decompressione dei dati nella trasmissione/ricezione da parte di un dispositivo di rete.
La fedeltà a queste regole pre-definite, i protocolli, garantisce che macchine molto diverse tra loro che compongono le reti possano comunicare correttamente usando lo stesso linguaggio.
Per la creazione dei protocolli, le regole per l’utilizzo di una rete, è preposta tutta una serie di organizzazioni e comitati:
- IEEE (Institute of Electrical and Electronic Engineers)
- ANSI (American National Standards Institute)
- TIA (Telecommunications Industries Association)
- ITU (International Telecommunications Union)
- IETF (Internet Engineering Task Force)
- IANA (Internet Assigned Numbers Autority)
- ICANN (Internet Corporation for Assigned Names and Numbers)
Le specifiche di queste regole pre-definite, per essere valide per tutti, devono essere dei modelli unificati, degli Standard di Internet. Standard, è il massimo grado che possono raggiungere delle proposte di regole per Internet e sono chiamate Request for Comment (RFC), le quali vengono vagliate dall’IETF (Internet Engineering Task Force) e dai suoi Working Group (gruppi di lavoro formati da esperti). I tre gradi sono: Proposed Standard, Draft Standard, Standard (STD). Le proposte scartate diventano Historic Protocol. Mentre gli Standard non più attuali ed aggiornati da nuove RFC Standard diventano Obsolete. Le Request for Comments (RFC), numerate progressivamente in modo univoco (la prima RFC viene scritta nell’aprile 1969 da Steve Crocker membro del Network Working Group e tratta dell’host-to-host protocol), vengono pubblicate e mantenute liberamente disponibili su un database on-line http://www.rfc-editor.org/, fondato dalla Internet Society (http://www.isoc.org).
Tutti i protocolli che vengono utilizzati per il funzionamento di Internet sono pubblicati nelle RFC anche se non tutte le RFC specificano Standard.
Il problema della complessità ed eterogeneità delle comunicazioni
Storicamente, il problema della efficiente trasmissione dei dati in una rete di computer è stata una operazione tecnicamente molto complessa, ma una volta che i problemi tecnici fossero stati risolti, prometteva nuove opportunità e grandi guadagni, poiché trovava la soluzione all’innato bisogno dell’uomo di comunicare in maniera efficiente.
La soluzione a questo problema avrebbe portato alla scoperta vera e propria di un nuovo gigantesco mercato mondiale: il mercato delle comunicazioni digitali. Copiosi flussi di danaro avrebbe incassato chiunque fosse riuscito a monopolizzare con uno standard proprietario questo mercato.
La competizione tecnologica scatenata tra grandi aziende per accaparrarsi questo nuovo mercato portò le stesse aziende di comunicazione alla creazione di differenti metodi e tecnologie di trasmissioni proprietarie, con hardware e software di rete che però erano quanto di più eterogeneo e incompatibile potesse esserci. Ogni azienda tendeva a creare il proprio protocollo, la propria tecnologia, il proprio standard per farsi padrone del mercato delle comunicazioni.
Questa guerra commerciale creava difficoltà, incompatibilità nel trasmettere dati da un sistema ad un altro. La eterogeneità dei sistemi di rete causava ingenti danni economici. Inoltre, la possibilità che un sistema proprietario potesse imporsi come standard poteva limitare i guadagni, le comunicazioni, le scoperte e i miglioramenti tecnologici, le libertà di tutti gli uomini. Questi problemi e le prospettive di grandi guadagni misero in moto i meccanismi internazionali per trovare adeguate soluzioni. L’idea era quella di definire un modello di riferimento accettato da tutti e che per tutti fosse libero.
Il modello di riferimento ISO/OSI
Nel 1978 l’ISO (International Standard Organization), il principale ente di standardizzazione internazionale, pubblicò una serie di specifiche che descriveva l’architettura di rete per la connessione di dispositivi eterogenei. Il documento originale faceva riferimento a sistemi reciprocamente aperti, nel senso che tutti potevano fare uso degli stessi protocolli e degli stessi standard per scambiare informazioni.
Quasi contemporaneamente un altro ente internazionale, il CCITT, noto anche come International Telegraph and Telephone Consultative Committee, emanazione dell’ITU (International Telecommunications Union) facente parte dell’ONU che ha stabilito molti standard internazionali per le comunicazioni di dati (a seguito di una riforma nel 1993 ha cambiato nome ed è attualmente conosciuto come ITU-T [International Telecommunication Union – Telecommunication Standardization Bureau] ), in maniera del tutto autonoma ed indipendente, realizzò un documento che aveva lo stesso obiettivo di definire uno standard unificato, una architettura comune per i sistemi di rete.
Nel 1983, avendo questi due documenti molti punti in comune, vennero dai due enti internazionali fusi assieme in un unico documento che doveva diventare per tutti il modello di riferimento standard per le telecomunicazioni.
Nel 1984 l’ISO pubblicò questo documento (The Basic Reference Model for Open Systems Interconnection) con il nome di “standard ISO 7498“, mentre il CCITT lo pubblicò come “standard X.200“. Nonostante i due enti internazionali avessero pari dignità e il documento pubblicato fosse identico per tutti e due, il nome che è passato per questo modello standard è quello di “modello ISO/OSI”. La versione del 1984 è divenuto uno standard internazionale di riferimento per la progettazione e la configurazione per gli ambienti di rete.
Questo modello di riferimento descrive in che modo hardware e software interagiscono lavorando assieme su più livelli per permettere la comunicazione. Il modello ISO/OSI è di aiuto per le attività di risoluzione dei problemi, perché mette a disposizione uno standard di riferimento astratto che descrive il corretto funzionamento dei vari componenti che, interagendo tra loro, permettono la comunicazione.
Il modello OSI però, non è servito per lo sviluppo pratico dei protocolli di internet (per l’implementazione è stato preferito il modello TCP/IP per l’alta affidabilità e robustezza, sviluppato dal DoD, Dipartimento della Difesa Statunitense, definito nella RFC 1155). Il modello standard OSI viene usato come modello base per descrivere e spiegare il funzionamento dei protocolli di rete. A questo modello di riferimento standard si rimanda sempre quando si parla di comunicazione di rete.
La complessità del processo di comunicazione
Il processo di comunicazione in una rete di computer è molto complesso. Questo processo deve garantire il corretto funzionamento su una molteplicità di tecnologie, sistemi di trasmissione che operano su Sistemi Operativi diversi. Tutti devono utilizzare un comune linguaggio standardizzato, delle regole comuni, chiamate protocolli di comunicazione. Questi protocolli di comunicazione devono fornire dei servizi, risolvere diversi problemi complessi come:
- Il controllo di flusso: la generazione di comunicazioni dal sistema ricevente che istruisca il sistema mittente ad una accelerazione o ad un rallentamento della sua trasmissione dei dati.
- Il riconoscimento del pacchetto: la trasmissione di un messaggio di accusa di ricevuto da parte di un sistema ricevente verso il sistema trasmittente che dichiari la ricevuta dei dati.
- La scoperta degli errori: l’uso di codici da parte del sistema trasmittente per verificare che i dati spediti non siano stati danneggiati durante la trasmissione.
- La correzione degli errori: la ritrasmissione dei dati che sono andati persi o sono stati danneggiati durante la trasmissione.
- La segmentazione: la divisione di lunghi flussi di dati in flussi più piccoli e compatti (pacchetti) per un trasferimento più efficiente.
- La cifratura dei dati: una funzione che usa chiavi crittografiche per proteggere i dati trasmessi attraverso una rete.
- La compressione dei dati: un metodo per ridurre la grandezza dei dati trasmessi attraverso una rete eliminando nella trasmissione informazioni ridondanti.
Risolvere tutti questi problemi contemporaneamente in modo monolitico e fornire tutti questi servizi alla comunicazione è stato di una difficoltà e complessità progettuale insuperabile.
I benefici di dividere il processo di comunicazione in più livelli
Storicamente, l’umanità ha spesso trovato la soluzione ai problemi complessi suddividendo gli stessi, in problemi più piccoli e relativamente semplici, più facilmente risolvibili. Per risolvere il problema della comunicazione tra reti di calcolatori è stata pertanto escogitata una architettura modulare a livelli. L’architettura a livelli ha molti vantaggi. Il principale è la separazione delle funzioni, cioè ogni livello ha la sua specifica funzione da espletare. Questo oltre a semplificare la progettazione dei protocolli di comunicazione, agevola il suo uso e rende più semplice spiegare il modo in cui lavorano. La progettazione viene semplificata dal fatto che ogni livello interagisce solamente con il livello immediatamente sopra e sotto di esso.
Questa architettura modulare assegna ad ogni livello un determinato e preciso compito o servizio da espletare. Una volta che quel livello fornisce un servizio per la comunicazione, quello specifico per quel livello e che le sue interfacce sono state identificate, ogni livello può essere progettato in maniera indipendente dagli altri.
Un’architettura a più livelli
L’architettura modulare del modello di riferimento OSI (Open Systems Interconnection) struttura la comunicazione di rete in base a sette livelli. Ogni livello riguarda attività, dispositivi o protocolli specifici. Essendo i livelli sovrapposti uno sull’altro a formare una pila, questa architettura viene anche chiamata “pila protocollare” o “stack protocollare”. La figura sotto illustra l’architettura a più livelli del modello OSI.
Questa architettura modulare prevede una suddivisione tra i vari livelli delle funzioni e dei servizi che interessano i dati trasferiti da un computer ad un altro tramite i media (cavi, onde radio ecc) di rete. Il modello OSI definisce le modalità con cui ogni livello comunica e interagisce con i livelli immediatamente precedente e successivo. Per esempio, il livello Sessione comunica e interagisce con i livelli Presentazione e Trasporto.
Ogni livello fornisce un servizio o un’operazione che prepara i dati per l’invio sulla rete verso un altro computer . I livelli più bassi, il primo e il secondo, definiscono i supporti fisici della rete e sui cavi. I livelli più alti definiscono le modalità con cui le applicazioni accedono ai servizi di comunicazione (interfaccia utente). Più alto è il livello, più complesso è il task.
I livelli sono separati da elementi detti interfacce. Tutte le richieste vengono passate da un livello al successivo tramite l’interfaccia. Queste interfacce servono a fare interagire in modo prevedibile i vari livelli. Ogni livello utilizza come base gli standard e le attività del livello inferiore.
Continua a leggere, clicca sotto sulle pagine seguenti.