INTRODUZIONE AL CONCETTO DI RETE Il termine rete è nato per indicare in modo generico un collegamento tra due apparecchiature (sorgente e destinazione) attraverso un mezzo trasmissivo per effettuare una trasmissione di informazioni. All’inizio le reti erano costituite da terminali remoti collegati a unità centrali (mainframe) mediante linee telefoniche o telegrafiche; l’uso di terminali remoti per l’elaborazione era noto come teleprocessing; la potenza di elaborazione era concentrata in un punto (architettura centralizzata). Attualmente per rete di calcolatori si intende un insieme di computer indipendenti, cioè che possono lavorare autonomamente,ma collegati tra loro in modo da potersi scambiare informazioni (architettura distribuita). Il collegamento di computer in rete offre maggiore affidabilità e minor costo rispetto all’uso di mainframe e terminali; un fattore importante è la scalabilità, cioè la possibilità di aumentare le risorse della rete in base alle necessità. Le reti permettono tra l’altro: o di condividere risorse tra i computer connessi (funzionalità di rete); o di comunicare tra persone lontane (posta elettronica, videoconferenze, ecc…) o di utilizzare servizi vari come consultazione di informazioni, commercio elettronico e così via; i servizi a cui si può accedere in rete vengono detti servizi telematici (la telematica è una disciplina che nasce dai rapporti tra scienza delle comunicazioni e informatica e si occupa dell’elaborazione a distanza delle informazioni). Di solito vengono usati sistemi di tipo client/server. o I server sono computer su cui girano applicazioni che mettono a disposizione delle risorse o dei servizi; o I client chiedono ai server di accedere a una risorsa o di eseguire un certo lavoro. Il server esegue il lavoro e restituisce la risposta. Ogni computer della rete può essere usato in modo autonomo e deve avere un proprio sistema operativo. Per il collegamento in rete deve inoltre utilizzare un opportuno software di rete. Un’ulteriore evoluzione delle reti sono i sistemi distribuiti; è una rete che usa un sistema operativo in grado di rendere trasparente all’utenza l’esistenza di molteplici computer autonomi; l’utente che utilizza il sistema distribuito non sa dove si trovi in esecuzione il programma o dove si trovino i file utilizzati. CLASSIFICAZIONI In base alla tecnologia di trasmissione le reti possono essere di tipo broadcast o di tipo point to point. Le reti broadcast hanno un unico canale di comunicazione condiviso da tutte le stazioni; un messaggio inviato da una stazione viene ricevuto da tutte le altre. Le reti point to point usano collegamenti individuali tra coppie di stazioni; dal mittente al destinatario il messaggio può attraversare delle stazioni intermediarie. Indipendentemente dalla tecnologia di trasmissione l’invio di un messaggio può essere rivolto: o a una stazione ben precisa (point to point) o a tutte le stazioni (broadcasting) o ad un gruppo di stazioni (multicasting) In base alla dimensione le reti si possono dividere in locali (LAN – Local Area Network), metropolitane (MAN – Metropolitan Area Network) e geografiche (WAN – Wide Area Network). Le reti locali sono reti private all’interno di un singolo edificio o edifici vicini; per la maggior parte usano la tecnologia di trasmissione broadcast, hanno una velocità tra 10 Mbps e 100 Mbps, basso ritardo e basso tasso di errore.
Le reti metropolitane possono coprire un gruppo di uffici o una città e possono essere private o pubbliche. Le reti geografiche coprono una vasta area geografica, una nazione, un continente o l’intero pianeta. I computer che eseguono programmi per utenti (host) sono collegati da una sottorete di trasmissione costituita da linee di trasmissione ed elementi di commutazione noti come router. Reti locali e reti metropolitane possono collegarsi a reti più ampie mediante un router. Il collegamento di due o più reti si chiama internet. La comunicazione tra reti di tipo diverso è un problema noto come internetworking. La forma che assume una sottorete di comunicazione tra le varie stazioni viene detta topologia di rete. Le reti geografiche collegano punti precisi in zone geografiche diverse e non possono quindi generalmente rispettare una disposizione particolare; la topologia di queste reti viene detta a maglia. Nelle reti locali tutte le stazioni sono a breve distanza tra loro e possono quindi essere collegate in modo opportuno, rispettando una particolare disposizione, che può essere a stella, a bus o ad anello. La topologia è importante per aspetti come l’instradamento dei messaggi e la tolleranza ai guasti. LA COMUNICAZIONE POINT TO POINT I CANALI DI COMUNICAZIONE La forma più semplice di comunicazione tra elaboratori può essere schematizzata nel seguente modo: CANALE DI COMUNICAZIONE
TRASMETTITORE
RICEVITORE
Nella figura sono evidenziate 3 componenti: o il trasmettitore, ossia l’entità che invia i dati; o il ricevitore, ossia l’entità che li riceve; o il canale di comunicazione, che rappresenta la connessione tra trasmettitore e ricevitore e permette il trasporto dei dati. La connessione può essere realizzata con collegamenti o di tipo elettrico, utilizzando cavi in rame, o di tipo ottico, utilizzando cavi in fibra ottica, o di tipo elettromagnetico, utilizzando onde radio. Le modalità di comunicazione vengono definite in funzione di come possono variare nel tempo i ruoli di trasmettitore e ricevitore: o Simplex: i ruoli di trasmettitore e ricevitore rimangono rigidamente assegnati per tutta la durata del collegamento. o Half duplex: le entità che comunicano possono scambiarsi i ruoli di trasmettitore e ricevitore, ma i due ruoli non posso essere assunti contemporaneamente. o Full duplex: gli interlocutori possono assumere contemporaneamente i ruoli di trasmettitore e ricevitore, come avviene nella comunicazione telefonica. I protocolli di comunicazione Un protocollo di comunicazione è l’insieme delle regole che permettono la comunicazione tra sistemi; in particolare, il protocollo TCP/IP è il protocollo sul quale si basa il funzionamento della rete Internet. Molti protocolli di comunicazione sono stati standardizzati (open standard, cioè protocolli non posseduti da alcuna compagnia ma totalmente disponibili), garantendo che sistemi conformi a un medesimo standard possano comunicare anche se presentano differenti caratteristiche hardware e software. I principali enti di normativa riconosciuti a livello internazionale, il cui compito è quello di emanare gli standard e renderli ufficiali, sono:
o ISO: è l’acronimo di International Standard Organization. È il più importante ente di normativa a livello mondiale; nel campo delle reti è l’organizzazione che ha emanato lo standard OSI; o ANSI (American National Standard Institute): opera negli Stati Uniti e si occupa di sorvegliare e accreditare le organizzazioni che creano gli standard, pubblicandone i documenti; o IEEE (Institute of Electrical and Electronics Engineers): è l’ente che si occupa di standardizzazione esclusivamente nel campo elettrico ed elettronico, comprese le problematiche relative ai computer e alle reti. Il progetto che ha avuto più successo è il progetto IEEE 802, all’interno del quale viene definito lo standard della rete Ethernet; o ITU-T (International Telecommunications Union – Telecommunications Standardization Sector); o EIA/TIA (Electronic Industries Alliance/ Telecommunication Industry Association); o ETSI (European Telecommunications Standards Institute). All’interno di una comunicazione devono essere definiti protocolli che stabiliscano le caratteristiche di tutto ciò che interviene nel colloquio: dalle specifiche degli apparati hardware, al formato dei dati che vengono trasferiti, alla descrizione puntuale delle varie fasi nelle quali si articola il colloquio tra le entità. Velocità e affidabilità della comunicazione Ogni dispositivo e canale di trasmissione ha un valore massimo di larghezza di banda, ossia la frequenza più elevata con la quale si può passare da un livello di segnale a un altro e si misura in Hz (herz). Esiste una relazione tra la larghezza di banda e il numero massimo di bit che il sistema è in grado di trasmettere nell’unità di tempo: la velocità di trasmissione. La velocità di trasmissione è misurata in bps (bit per secondo, o nei suoi multipli kbps e Mbps). Si parla di velocità di trasmissione nominale quando viene indicato il volume di traffico massimo che il canale può sopportare; si parla invece di velocità di trasmissione reale quando la misurazione avviene in un intervallo di tempo definito: essa, quindi, comprende anche la presenza del cosiddetto “rumore” (interferenze alle quali il segnale è soggetto durante la trasmissione). La velocità di trasmissione determina il tempo di bit, ovvero il tempo necessario per la trasmissione sulla linea di un singolo bit. La velocità di trasmissione e il tempo di bit sono legati dal seguente rapporto di proporzionalità inversa: tempo di bit = 1 / velocità di trasmissione Errori Di Trasmissione Error_rate = bit ricevuti errati / bit trasmessi Gli errori di trasmissione, cioè la ricezione di dati non conformi ai dati inviati, possono essere determinati sia da fattori interni al sistema, come la perdita di sincronizzazione tra trasmettitore e ricevitore, sia da fattori esterni, come l’interferenza di un campo magnetico. Esistono diverse tecniche per il controllo e il recupero dell’errore; le più diffuse sono il controllo di parità orizzontale e il controllo di ridondanza ciclico (CRC) Il controllo di parità orizzontale è utilizzato nella comunicazione seriale e consiste nell’aggiungere un bit di controllo al fine di rendere il numero di bit a 1 trasmessi o sempre pari (parità pari) o sempre dispari (parità dispari); un errore su un bit va quindi ad alterare la parità e pertanto il ricevitore può rilevare il verificarsi di un errore, anche se non è in grado di correggerlo. Quando il ricevitore rileva un errore, il dato viene scartato. Il controllo di parità, che offre il vantaggio di essere semplice da realizzare, non è completamente affidabile in quanto un numero pari di errori non può essere rilevato.
1 101101110 PARITÀ PARI 101101110
1011111110
Bit di parità Il Codice di Ridondanza Ciclico (CRC) si basa su un calcolo polinomiale e per il quale la probabilità che si verifichino sequenze di errori che si compensano è molto bassa; esso viene calcolato, come il controllo di parità, direttamente dall’hardware, risultando così un metodo efficiente e veloce. Oltre alla rilevazione dell’errore, è importante attuare tecniche di recupero dell’errore che permettano di risalire all’informazione originale. La più utilizzata è quella di richiesta di ritrasmissione del dato errato. Esistono anche codici autocorrettivi (come il Codice di Hamming) che non richiedono la ritrasmissione del dato errato, ma non sono molto utilizzati a causa dell’elevato volume di traffico che è necessario generare in più. LA COMUNICAZIONE SERIALE La comunicazione point-to-point mette in comunicazione in modo diretto due interlocutori: questa modalità di comunicazione può essere fisicamente realizzata mediante una linea dedicata, che collega in modo rigido le due entità, oppure mediante una linea commutata, che instaura tra esse una connessione fisica, ma temporanea, che non sussiste più quando la comunicazione termina (un esempio è dato dalla comunicazione telefonica). Una comunicazione point-to-point può essere realizzata utilizzando la porta seriale del personal computer, il cui funzionamento è regolato dal protocollo RS-232. Le porte seriali del pc sono denominate COMx (COM1, COM2, ..) e la trasmissione dei dati avviene secondo una particolare tecnica denominata trasmissione seriale asincrona. Il dispositivo che gestisce la porta seriale è chiamato UART (Universal Asychronous Receiver Transmitter); questa dispositivo memorizza il dato che la CPU trasferisce tramite il Data Bus nel registro di trasmissione e, attraverso un registro di scorrimento (shift register) denominato PISO (Parallel In Serial Out), invia il dato sulla linea trasformando il formato del dato da parallelo (invio di n bit simultaneamente) a seriale (invio di un bit alla volta); si è operata quindi una serializzazione del dato. Al contrario, quando l’UART riceve un dato dalla linea, tramite un registro di scorrimento denominato SIPO (Serial In Parallel Out) i bit ricevuti uno alla volta dalla linea seriale vengono trasferiti alla CPU in formato parallelo attraverso il Data Bus. Invio dei dati Nella trasmissione seriale asincrona l’unità informativa trasmessa è il byte; tra un byte e il successivo la linea si trova in uno stato di idle, cioè di non trasmissione. Questo stato consiste nella trasmissione continua di un livello logico 1 che, come definito nel protocollo RS-232, corrisponde a una tensione negativa, mentre il livello logico zero corrisponde a una tensione positiva. Nel momento in cui il trasmettitore vuole inviare un byte, la linea è commutata per un tempo di bit al livello logico 0. Questo bit viene detto bit di start e segnala al ricevitore l’inizio dell’invio di un dato. Al bit di start seguono i bit del dato, poi eventualmente il bit di parità e infine il bit di stop, che riporta la linea allo stato di idle. I dispositivi di interfaccia seriale permettono l’impostazione di alcuni parametri e l’impostazione di essi è parte integrante del protocollo di comunicazione e deve essere nota a entrambi gli
interlocutori, poiché, in caso di impostazioni differenti, durante la comunicazione si verificherebbero degli errori. Ricezione dei dati I dati possono essere inviati a intervalli non regolari e pertanto non è prevedibile per il ricevitore quando predisporsi alla loro ricezione. Per potersi sincronizzare con i dati che il trasmettitore invia, quando la linea è nello stato di idle il ricevitore la campiona, ossia la esamina per rilevarne il livello logico. Il campionamento avviene per più volte durante un tempo di bit: supponiamo ad esempio che avvenga 16 volte per ogni tempo di bit. Nel momento in cui viene campionato un livello logico a 0, il ricevitore sospende il campionamento multiplo per 8 volte e successivamente ricampiona la linea. Se il nuovo livello logico rilevato è 1, allora si è trattato di un disturbo (spike) e, pertanto, persistendo lo stato di idle, il ricevitore riprende il campionamento multiplo. Questo errore viene detto falso bit di start. Se invece il livello logico rilevato è ancora 0, allora è stato trasmesso un bit di start e il ricevitore può iniziare a campionare il dato una volta ogni tempo di bit. Questa tecnica permette al ricevitore di ricevere ogni bit circa a metà del tempo di bit corrispondente. Dopo aver ricevuto i bit stabiliti, il ricevitore esegue il controllo di parità e verifica la presenza del bit di stop; in caso di errore, viene segnalato nel registro di stato dell’UART o un “parity error” o un “framing error”. Il dispositivo UART può inviare alla CPU una segnalazione affinché possa gestire la condizione di errore. LE ARCHITETTURE DI RETE IL MODELLO OSI La standardizzazione nella comunicazione in rete A partire dagli anni ’70 si comprese l’importanza della condivisione dei dati e delle risorse attraverso le reti di computer; l’ISO creò de gruppi di lavoro per definire uno standard riferito alla comunicazione di dati tra macchine collegate da un mezzo fisico e comunicanti tra loro. Il lavoro portò alla definizione del modello OSI (Open System Interconnection), che costituisce il modello di riferimento per la definizione di una architettura di rete, cioè un insieme di protocolli che rendono possibile la comunicazione in un sistema di computer interconnessi. All’interno di questi protocolli sono definiti tutti i parametri necessari alla comunicazione. Nel modello OSI ha assunto grande importanza la definizione di sistema aperto: Un sistema è un insieme di uno o più computer, programmi, periferiche, terminali, operatori umani, processi fisici, mezzi di trasferimento delle informazioni e così via, che formano un insieme autonomo in grado di eseguire l’elaborazione e /o il trasferimento dell’informazione; un sistema si dice aperto se è in grado di cooperare con altri sistemi, scambiando con essi informazioni, rispettando le norme OSI. Il modello a strati La fondamentale caratteristica del modello OSI è quella di essere un modello a strati o livelli. Ogni livello svolge una funzionalità definita all’interno della pila OSI e comunica sia con il livello immediatamente superiore sia con il livello immediatamente inferiore. La struttura del modello OSI permette un’organizzazione a moduli che offre i seguenti vantaggi: o maggior facilità di progettazione; o separazione degli aspetti relativi alla comunicazione in parti distinte e limitate, che favoriscono la gestione dell’architettura; o maggior comprensione delle funzioni di ogni strato; o libertà nella scelta delle tecniche hardware e software per la realizzazione di ogni livello e quindi semplicità di modifica dei singoli strati; o possibilità di comunicare tra sistemi con caratteristiche hardware e software differenti.
PROTOCOLLI PEER-TO-PEER
Nella figura sono mostrati i 7 livelli OSI: ogni livello comunica con il livello superiore offrendo un servizio, mentre usufruisce dei servizi che vengono offerti dallo strato inferiore. Il flusso di informazioni viaggia dal livello superiore fino a quello inferiore, viene propagato sulla rete e, quando raggiunge la destinazione, percorre la pila OSI dal livello più basso al più alto. Tra i livelli di grado uguale dei due nodi si stabilisce una comunicazione “virtuale” (poiché gli unici livelli connessi fisicamente sono i due livelli inferiori dei nodi comunicanti) definita da un protocollo peer-to-peer. I protocolli peer-to-peer sono realizzati attraverso il processo di incapsulamento/decapsulamento delle informazioni: i dati passanti per ogni livello della pila OSI vengono incapsulati; vengono aggiunte in testa e alla coda del messaggio le informazioni di controllo definite dal protocollo peer-to-peer del livello specifico. Quando giungono a destinazione, viene eseguita l’operazione inversa, cioè il decapsulamento; ogni livello controlla le informazioni proprie del livello e li trasmette al livello successivo. Nella tabella seguente sono descritte le funzionalità dei 7 livelli della pila OSI:
APPLICAZIONE
Applicazioni di rete
PRESENTAZIONE
Rappresentazione dei dati
SESSIONE
Gestione sessione di comunicazione Comunicazione end-to-end
TRASPORTO
RETE
Indirizzamento logico e individuazione del percorso migliore
COLLEGAMENTO DATI
Comunicazione point-topoint e accesso al mezzo fisico
FISICO
Gestione fisica della rete
Consente ai software applicativi di accedere ai servizi di rete. Viene assicurata la leggibilità dei dati da parte del nodo destinatario effettuando la conversione della codifica dei dati. Sono effettuate funzioni di sicurezza volte a permettere la comunicazione solo fra nodi autorizzati. Questa comunicazione può essere gestita da un protocollo orientato alla connessione (connection oriented, e in questo caso viene applicata una tecnica di recupero dell’errore), che fornisce un riscontro della ricezione dei segmenti (le unità dati di questo livello), o da un protocollo non orientato alla connessione (connectionless). Le unità dati di questo livello sono chiamate pacchetti. È gestito l’indirizzamento logico dei nodi tramite gli indirizzi IP. È individuato (attraverso algoritmi di instradamento) il percorso migliore per raggiungere la destinazione. È gestita la frammentazione e ricomposizione dei pacchetti quando la loro dimensione è troppo grande. Le unità dati vengono definite frame. Viene utilizzato il CRC per il controllo degli errori e la comunicazione pointto-point è gestita utilizzando indirizzi MAC. Con tecniche di stuffing è possibile distinguere i caratteri inviati come dati da dati di controllo. Fanno parte di questo livello i metodi di controllo di accesso al mezzo. Vengono trasferiti i bit dell’informazione tra un nodo e il successivo. Sono definite le caratteristiche elettriche, meccaniche e fisiche della trasmissione del segnale sulla rete (cavi, livelli di tensione, velocità di trasmissione).
LA SUITE DI PROTOCOLLI TCP/IP La suite TCP/IP ha molte analogie con il modello OSI, in particolare per il fatto che si presenta anch’essa a strati; i livelli definiti sono però 4. OSI TCP/IP 4. Applicazione Applicazione Presentazione Sessione 3. Trasporto Trasporto Rete 2. Internet Collegamento dati 1. Rete Fisico *corrispondenza fra i livelli OSI e TCP/IP* Il livello di rete Corrisponde ai primi due livelli del modello OSI. Le sue funzionalità sono le seguenti: o Trasmissione e ricezione dal mezzo fisico di sequenze di bit chiamate frame. La dimensione e il formato dei frame variano da un tipo di rete a un altro; o Controllo dell’errore attraverso il CRC; o Identificazione della scheda di rete del mittente e del destinatario.
Riguardo a quest’ultimo, le schede Ethernet (maggiormente utilizzate) hanno cablato al loro interno un indirizzo di 6 byte, detto Indirizzo MAC, che le identifica in modo univoco tra tutte le schede di rete. A ogni costruttore di NIC (Network Interface Card, scheda di rete) sono assegnati dal SASB (Standard Association Standard Board, organizzazione riconosciuta a livello mondiale) uno o più identificativi univoci; l’azienda aggiunge a questi identificativi un numero progressivo, rendendo unico in tutto il mondo l’indirizzo della NIC. Ecco un esempio di indirizzo MAC: 6A-C2-AB-28-77-D9 I primi 3 byte, denominati OUI (Organizational Unique Identifier) sono assegnati dal SASB ai fabbricanti delle schede di rete; gli altri 3 byte, definiti come Verdor Code, sono assegnati in modo progressivo dal singolo costruttore. Il bit meno significativo del primo byte viene denominato I/G (Individual On Group Address); quando ha valore 0 l’indirizzo è unicast (si riferisce a una determinata scheda di rete), quando ha valore 1 l’indirizzo è multicast (si riferisce a un gruppo di schede di rete) o broadcast (si riferisce a tutte le schede collegate alla rete); l’indirizzo broadcast è costituito da tutti 1. Il bit successivo L/U (Local or Universal Address), se è 1 determina un indirizzo assegnato dal SASB, se invece vale 0 indica un indirizzo gestibile localmente. IL PROTOCOLLO IP I principali protocolli compresi nel livello Internet della pila TCP/IP sono: o IP (Internet Protocol); o ARP (Address Resolution Protocol); o ICMP (Intenet Control Message Protocol). Il protocollo fondamentale per lo sviluppo di Internet è stato il protocollo IP; attraverso il suo sistema di indirizzamento è possibile, dato l’indirizzo di un nodo (host), capire a quale rete l’host appartiene. Le funzioni svolte dal protocollo IP sono. o La definizione di un meccanismo di indirizzamento, che definisce indirizzi univoci nell’ambito di tutte le reti interconnesse; o L’instradamento dei pacchetti, ossia la definizione del nodo successivo al quale inviare i pacchetti; o La frammentazione dei pacchetti, quando occorre passare da una rete con dimensione di pacchetto maggiore a una di dimensione di pacchetto inferiore. Il protocollo IP è un protocollo non orientato alla connessione (connectionless): i dati appartenenti a una stessa unità informativa vengono inviati sulla rete separatamente, sono gestiti dagli apparati di rete come entità autonome e inoltre il mittente non ha alcun riscontro della corretta ricezione dei dati che sono stati inviati. *datagramma (formato) del protocollo IP (ogni segmento corrisponde a 4 bit)* *
Gli indirizzi IP Un indirizzo IP è formato da 4 byte e viene rappresentato con la notazione decimale puntata: il valore di ogni byte è letto in base 10 e separato dal successivo da un punto. 192.37.53.48 Un indirizzo IP è classificato come indirizzo logico, poiché uno stesso indirizzo può essere assegnato in tempi diversi a host diversi, senza perdere la caratteristica di univocità. È anche possibile frammentare una rete in sottoreti più piccole; per definire all’interno di un indirizzo quanti bit sono destinati all’host rispetto a quanti sono riservati alla rete, si utilizza una
subnet mask, una maschera di bit in cui il valore 1 corrisponde a un bit dell’indirizzo di rete e il valore 0 corrisponde a un bit dell’indirizzo dell’host. Gli indirizzi IP sono suddivisi in 5 classi a seconda del valore del primo byte: o Classe A: valore del primo byte 1÷126; o Classe B: valore del primo byte 128÷191; o Classe C: valore del primo byte 192÷223; o Classe D: è utilizzata per indirizzi multicast, che identificano cioè gruppi di host; o Classe E: comprende indirizzi riservati non disponibili. Impostazioni dell’indirizzo IP Le impostazioni dell’indirizzo IP associato a un host possono essere effettuate in modo automatico con il protocollo DHCP (Dynamic Host Configuration Protocol, che fornisce un meccanismo per assegnare dinamicamente gli indirizzi IP), oppure manualmente accedendo tramite sistema operativo alla configurazione TCP/IP del computer. La configurazione IP corrente di un host può essere visualizza utilizzando da sistema Windows il prompt dei comandi e digitando ipconfig. L’impostazione manuale dell’indirizzo IP si effettua cliccando su Pannello di controllo / Connessioni di rete / Connessione alla rete locale (LAN) / Protocollo Internet (TCP/IP) / Proprietà. In un sistema Linux, sia per ottenere informazioni sulla configurazione IP che per assegnare un indirizzo IP a un’interfaccia di rete si utilizza il comando ifconfig. Problemi relativi all’indirizzamento IP Alcune stime hanno dimostrato che all’incirca ogni 12 mesi il numero delle reti connesse ad Internet raddoppia, determinando una crescita esponenziale nella richiesta di indirizzi IP. Questo sviluppo ha messo in luce due importanti problematiche: o Esaurimento degli indirizzi IP disponibili, dovuti anche allo spreco di indirizzi IP di fatto non utilizzati (ad esempio, una rete di 50 host alla quale viene assegnato un indirizzo di classe C comporta uno spreco di ben 204 indirizzi); o Raggiungimento della capacità massima delle tabelle di routing: si tratta di strutture memorizzate all’interno dei router, che contengono informazioni relative all’instradamento dei pacchetti. Queste tabelle possono raggiungere una dimensione massima di 60.000 entry circa nei router di nuova generazione. Questi problemi sono stati risolti dal protocollo IPng (IP Next Generation), o IPv6, che ha introdotto le seguenti novità: o Maggiore capacità di indirizzamento: la dimensione dell’indirizzo passa da 4 a 16 byte; non vengono più utilizzati gli indirizzi broadcast e vengono introdotti gli indirizzi anycast, indirizzi che si riferiscono a gruppi di host, ma il pacchetto inviato viene consegnato soltanto al componente del gruppo più vicino al mittente; o Semplificazione e flessibilità dell’intestazione del pacchetto; o Qualità del servizio, con la possibilità di etichettare pacchetti ritenuti di priorità alta; o Autenticazione e privacy, con la possibilità di usufruire di servizi di confidenzialità, dove per confidenzialità si intende la capacità di proteggere i dati scambiati tra mittente e destinatari, anche quando la rete non è sicura. Le subnet mask Il loro ruolo è fondamentale per determinare a quale rete appartiene un host: dato un indirizzo IP e la corrispondente subnet mask, per ottenere a l’indirizzo di rete appartenente è sufficiente mettere in AND questi due valori numerici: 210.135.27.43 AND 255.255.255.0 = 210.135.27.0 indirizzo di rete. Questa operazione è molto importante perché, quando due host devono comunicare, occorre determinare se l’interlocutore si trova sulla rete locale oppure è collegato a una rete remota. Nel primo caso, il risultato dell’operazione di AND fra indirizzo e subnet mask del mittente sarà uguale al risultato dell’operazione di AND del destinatario.
Nel secondo caso (i risultati sono diversi) il mittente, non potendo inviare direttamente il pacchetto poiché l’host si trova su una rete diversa, dovrà inviare il pacchetto a un dispositivo chiamato gateway, che collega la rete geografica e che generalmente è la porta di un router (dispositivo che instrada i pacchetti sulla rete geografica). Le sottoreti Le necessità di definire sottoreti nell’ambito di una rete nasce a fronte di alcuni problemi: o Quando le porte di due router sono collegate tra loro, si costituisce una rete formata da questi due host. Se assegniamo a tale rete un indirizzo di classe C (il tipo più adatto), sprechiamo ben 252 indirizzi che non possono essere più assegnati a nessun altro host; o Se i segmenti di una rete sono realizzati con tecnologie diverse (Ethernet e Token Ring ad esempio), bisogna assegnare indirizzi di rete differenti per parti distinte della rete; ciò comporta costi aggiuntivi e sprechi di indirizzi; o È utile effettuare una segmentazione della rete in modo da ridurre il numero di host raggiunti dalle unità inviate in broadcast. Gli indirizzi da assegnare alle sottoreti sono ricavati “prestando” all’indirizzo della rete parte dei bit destinato all’indirizzo dell’host. La combinazione di bit riservati all’indirizzo della rete con i bit riservati all’indirizzo della sottorete prende il nome di prefisso di rete esteso. PROTOCOLLI DEL LIVELLO INTERNET Il protocollo ARP Il livello fisico delle reti non è in grado di riconoscere gli indirizzi IP, che possono variare nel tempo in riferimento allo stesso host. Il protocollo ARP (Address Resolution Protocol) è in grado di tradurre gli indirizzi IP in indirizzi MAC, che sono riconosciuti dalle schede di rete. All’interno di ogni host è memorizzata una tabella, detta cache ARP (modificata solitamente in modo automatico), che contiene la corrispondenza tra alcuni indirizzi IP di host appartenenti alla rete locale e i corrispondenti indirizzi MAC cablati nelle loro schede di rete. Per evitare che la tabella assuma grandi dimensioni, a ogni entry della tabella è associato un campo TTL (Time To Live), che viene inizializzato a un determinato valore e decrementato a cadenze regolari; quando il TTL assume valore 0, la voce di tabella viene eliminata. Il protocollo ICMP Le principali funzioni del protocollo ICMP (Internet Control Message Protocoll) sono le seguenti: o Verifica della possibilità di connessione tra due host; o Segnalazione a un host mittente dell’eliminazione di un pacchetto a causa della scadenza del TTL; o Segnalazione a un host di rallentare le comunicazioni in modo da evitare il congestionamento della rete; o Segnalazione di reinstradamento delle unità dati per una gestione più efficiente del traffico; o Determinazione della maschera di sottorete associata a un segmento di rete. Analizziamo in dettaglio il primo punto. Quando un utente vuole verificare se un host è raggiungibile attraverso la rete, può dare al sistema operativo il comando PING (Packet INternet Grouper), che ha come parametro l’indirizzo IP dell’host remoto. Questo comando invia sulla rete un certo numero di pacchetti ICMP (solitamente 4) ai quali, se è connesso, il destinatario risponde. Un’altra applicazione che utilizza il protocollo ICMP è il trace route, che permette di verificare la connettività tra due host remoti e inoltre fornisce informazioni su quali sono i nodi intermedi attraversati, in questo caso i router. Il comando da sistema Windows è tracert, mentre da Linux è tracelin.
PROTOCOLLI DEL LIVELLO DI TRASPORTO Il protocollo TCP Il protocollo TCP (Transmission Control Protocol) ha il compito di fornire alle applicazioni un servizio affidabile per il trasferimento dei dati attraverso la rete. Questo protocollo offre un servizio orientato alla connessione (connection-oriented), esso garantisce la consegna e l'ordinamento corretto dei dati grazie all'utilizzo di sequence number e conferme di consegna (si dice infatti che il protocollo TCP è un protocollo “confermato”). Le caratteristiche del protocollo TCP sono le seguenti: o I dati sono ricevuti nello stesso ordine con il quale sono stati inviati e in un’unica sequenza (stream di dati o bytestream);; o La connessione che viene instaurata tra due interlocutori agisce come un circuito virtuale, ossia che fornisce all’applicazione soprastante una percezione del collegamento come se fosse una linea dedicata (cioè una linea riservata esclusivamente all’applicazione); o Il TCP può operare sulle informazione provenienti dalle applicazione sia una frammentazione, quando i dati sono di grandi dimensioni, sia un raggruppamento se i dati sono di piccole dimensioni (buffered transfer), evitando la creazione di un eccessivo numero di segmenti. è il TCP, quindi, ad occuparsi della segmentazione dei dati, lasciando ai protocolli superiori solo il compito di prepararli; o All’interno di una connessione TCP la modalità di comunicazione è full-duplex; tra gli host impegnati nella comunicazione viene simulato un colloquio diretto attraverso un canale che consente lo scambio interattivo delle informazioni. Il protocollo UDP L’UDP (User Datagram Protocol) è un protocollo di trasporto non orientato alla connessione e non confermato. Viene utilizzato quando i dati inviati non necessitano di conferma, o perché la rete è ritenuta sufficientemente affidabile o perché l’applicativo che utilizza il servizio di trasporto sarebbe penalizzato dal punto di vista delle prestazione dalla complessità di un protocollo di trasporto confermato. L’UDP è un protocollo molto semplice e snello, poiché determina un carico di traffico sulla rete inferiore rispetto al TCP, e permette all’applicazione che lo utilizza l’invio di dati in broadcast e multicast. LE APPLICAZIONI DI RETE LA TRASMISSIONE DEI DATI ALL’INTERNO DELLA RETE Ogni risorsa e servizio disponibile su Internet sono identificati dall’indirizzo univoco URL (Uniform Resource Locator), che stabilisce il cammino, o path, associato alla risorsa. Questi indirizzi, in formato testuale, non possono fornire alcuna indicazione ai router, che necessitano dell’indirizzo IP del destinatario per instradare i pacchetti. Occorrono quindi protocolli in grado di tradurre indirizzi testuali in indirizzi IP. Il protocollo DNS Un indirizzo URL si esprime nel seguente modo: servizio://indirizzo ip:porta / path Spesso, la parte dell’URL “indirizzo ip:porta” è sostituita dall’indirizzo DNS (Domain Name Space) dell’host (ad esempio http://www.google.it/univ/home). L’indirizzo DNS del sito web deve essere quindi tradotto nell’indirizzo IP corrispondente: la conversione viene effettuata da host specifici detti DNS server, in cui risiedono tabelle contenenti le corrispondenze indirizzo testuale - indirizzo IP. Il DNS è strutturato secondo una gerarchia che crea livelli differenti di server, in cui si possono distinguere al livello più basso i DNS server locali e a quello più alto i DNS server primari. I server locali sono raggiungibili da un numero limitato di host, mentre i primari risolvono le corrispondenze di un dominio.
I SERVIZI DEL LIVELLO DI APPLICAZIONE Molte applicazioni vengono costruite con la modalità nota come modello client-server. Il server è la parte di applicazione che offre un servizio ed è quindi in attesa di ricevere richieste: quando arriva una richiesta dalla rete il server la esaudisce, pur rimanendo sempre in attesa di altre richieste, poiché un’applicazione server può mantenere più sessioni dati attive contemporaneamente con più client. Un client è la parte di applicazione che invia richieste a un server; è eseguita localmente sul computer dell’utente e può richiamare più servizi di rete, ma sempre uno alla volta. CLIENT 1
SERVER
CLIENT 2
Le applicazioni client-server utilizzano i servizi del protocollo di trasporto. Esso permette di individuare il servizio richiesto dal client attraverso i numeri di porta. Un numero di porta corrisponde all’applicazione client, e un numero di porta diverso individua l’applicazione server. Per distinguere le sessioni che possono essere contemporaneamente instaurate tra un server e più client si utilizza la combinazione “indirizzo IP:porta”, definita come indirizzo socket. Gli indirizzi socket del client e del server corrispondono ai due estremi della connessione e permettono di distinguerla da altre connessioni. Il numero della porta varia da 0 a 65.535; i valori da 0 a 1.023 sono assegnati in modo standard dallo IANA (Internet Assigned Number Authority), con numeri diversi per il TCP e l’UDP, e individuano univocamente i servizi applicativi. IL TRASFERIMENTO DI FILE Il trasferimento di file viene realizzato dai protocolli FTP (File Transfer Protocol) e TFTP (Trivial File Transfer Protocol). Il protocollo FTP realizza un trasferimento affidabile dei dati, utilizzando il servizio di trasporto offerto dal TCP, orientato alla connessione e quindi per sua natura già affidabile. Nel protocollo è definito una parte server, che ha la funzione di deposito dei file al quale si può accedere per scaricare o memorizzare dati, e una parte client, da cui partono le richieste per il server. Il protocollo individua due servizi: o DTP (Data Transfer Process): ha la funzione di trasferimento fisico dei file tra client e server e viceversa. Può avvenire secondo due modalità, definite come attiva e passiva. Nella prima è il server che, dopo esser contattato dal client, dà inizio alla connessione, mentre nella seconda è il client che instaura la connessione. o PI (Protocol Interpreter): permette l’instaurazione di una connessione TCP in cui si realizza lo scambio dei comandi tra client e server: ogni comando inviato da un client produce una risposta da parte del server. Questo protocollo prevede anche l’autenticazione dell’utente che utilizza il servizio attraverso i comandi USER e PASS. Il protocollo TFTP si basa sul protocollo UDP; è molto più semplice del FTP e utilizza pacchetti di lunghezza fissa di 512 byte, ma non è possibile effettuare l’autenticazione dell’utente ed è impossibile muoversi attraverso l’albero della directory. Nonostante ciò, grazie alla sua maggior velocità e agilità rispetto al protocollo FTP, il TFTP può essere molto utile all’interno di LAN sicure e stabili. LA NAVIGAZIONE NEL WEB Il protocollo HTTP (Hyper Text Transfer Protocol), che utilizza come protocollo di trasporto il TCP, gestisce lo scambio di pagine HTML o altri file tra client e server web; il lato client, che è il più complesso, viene implementato dai browser. Per prima cosa il client richiede al server pagine HTML che, dopo essere state ricevute, sono elaborate dal browser; esso provvede a richiedere al server tutti i file necessari per la corretta visualizzazione (immagini, script, ecc) e a visualizzare quindi la pagina completa sul monitor. Il server, ricevuta la richiesta, provvede al recupero del documento e lo spedisce in risposta al client.
La caratteristica principale di questo protocollo è il fatto di essere di tipo request-response: la connessione viene stabilita dal client e chiusa dal server. Il trasferimento della pagina comprende 4 fasi: o Connessione: viene creata una connessione TCP con il server; o Richiesta: il client richiede la pagina web al server con un messaggio di Request; o Risposta: il server invia un messaggio in HTML contenente quanto richiesto dal client oppure un messaggio di errore; o Disconnessione: nelle versioni precedenti del protocollo, a ogni request-response era abbattuta la connessione; nell’ultima, invece, è possibile avere un nuovo scambio requestresponse senza chiudere e ripristinare la connessione. Per ridurre il traffico di rete e velocizzare i trasferimenti più frequenti, sono stati introdotti i Proxy Server, che supportano una memoria cache su memorie di massa. Nella memoria vengono salvate le pagine aperte di recente; quando si vuole accedere nuovamente alle informazioni salvate su cache, non sono necessarie le risorse di rete ma è sufficiente accedere al proxy. LA GESTIONE DELLA POSTA ELETTRONICA Il servizio di mail è uno dei più usati del mondo Internet. Il server di posta funziona come deposito dei messaggi in uscita e in entrata ai client. Il grosso vantaggio del servizio di mail è il fatto che la ricezione di posta avviene da parte del server e quindi il client non perde alcun messaggio qualora non fosse in linea; li scaricherà quando si connette. I server di posta sono costituiti da due servizi distinti: o Server SMTP, che gestisce la posta inviata dal client; o Server POP3 o IMAP, che gestiscono lo scaricamento di posta. 1
Il protocollo SMTP (Simple Mail Transfer Protocol) è completamente testuale. Nell’intestazione di un messaggio di posta sono indicati uno o più destinatari e, se esistono, il messaggio viene trasferito mediante protocollo TCP. Il mail server viene talvolta nominato Mail Exchange, mentre con Mail Delivery Agent si intende il software che copia il messaggio in una casella locale dell’host oppure lo inoltra sulla rete. Per permettere l’invio di file di dati binari, l’SMTP utilizza lo standard MIME (Multipurpose Internet Mail Extensions), la cui estensione su 8 bit permette il trasferimento di file binari come se fossero file di testo. Il MIME permette l’invio di più oggetti nello stesso messaggio, testi con lunghezza totale e di riga illimitata, set di caratteri che comprendono anche lingue non europee e font diversi, e la possibilità di allegare file binari o contenenti immagini, audio, e video.
2
Il protocollo POP3 (Post Office Protocol 3) consente lo scarico e la cancellazione della posta da un mail server, indipendentemente dal momento in cui il messaggio è stato inviato. Utilizza il protocollo TCP. Una sessione POP3 avviene nel seguente modo: connessione con la porta 110 invia i saluti comando risposta chiusura connessione
3
Il protocollo IMAP (Internet Mail Access Protocol) permette di eseguire le elaborazioni di gestione della posta elettronica direttamente sul serve remoto. Rispetto al POP3 presenta maggiore flessibilità e funzionalità più estese ed è quindi destinato a sostituirlo. La principale differenza rispetto al POP3 è la possibilità di connettersi direttamente al server di posta ed
eseguire le operazioni relative, mentre con il POP3 i messaggi vengono sempre scaricati sul computer locale. Il protocollo di trasporto utilizzato è il TCP. IL TERMINALE REMOTO Il servizio di terminale remoto fornisce una modalità standardizzata di comunicazione bidirezionale con un host remoto, consentendo di impartire comandi come se la postazione sulla quale si lavora fosse collegata localmente al sistema geograficamente distante. Il protocollo di questo servizio è Telnet, che utilizza il TCP come protocollo di trasporto. Questo protocollo permette di creare tra i due host che sono messi in comunicazione un ambiente virtuale, detto NVT (Network Virtual Terminal), al cui interno è definito un insieme minimo di funzioni che deve essere obbligatoriamente disponibile e che permette di: o Offrire un ambiente identico ai due interlocutori in cui possono essere negoziate nuove opzioni; o Non richiedere software specifici per la realizzazione del Telnet né dalla parte client né dalla parte server. Il protocollo Telnet, grazie alla sua flessibilità, può essere utilizzato per molteplici scopi, fra cui l’instaurazione di sessioni FTP, SMTP, POP3 e IMAP.