16-Reti e Internet

16-Reti e Internet

Introduzione

{gspeech style=2}

Internet è sicuramente un autentico prodigio tecnologico, secondo alcuni il manufatto più sofisticato mai prodotto dall’attività umana, al tempo stesso semplice ed elegante dal punto di vista concettuale e progettuale: il mezzo finale di comunicazione, capace di veicolare, riassumere e assimilare quelli già esistenti e di ricondurre a sé ogni possibile, futura modalità comunicativa.
Uno strumento unico per comunicare con il mondo intero, già oggi – tramite una dotazione tecnologica minima e alla portata di tutti – e sempre di più in un domani che vedrà la digitalizzazione di tutte le informazioni. Uno strumento della cui versatilità e flessibilità al momento non si scorgono i limiti.
Come e forse più che negli anni ’80, che con l’affermarsi del personal computer hanno visto la tecnologia informatica entrare in tutte le case e rivoluzionare tutti i settori produttivi e la stessa vita quotidiana, Internet è destinato a sconvolgere – come già sta facendo – la nozione stessa di comunicazione, con conseguenze sociali di vasta portata.
Un fenomeno ormai non solo tecnologico, quindi, ma culturale e antropologico, che affonda le sue radici in un passato recente che secondo la scala dei tempi tecnologico–informatici a cui ci hanno abituati gli ultimi decenni è già preistoria.

LE ORIGINI: ARPANET
Nel 1969 diviene operativa una prima versione di un progetto militare statunitense commissionato dal Dipartimento della Difesa all’agenzia governativa ARPA (Advanced Research Projects Agency).
Lo scopo del progetto è la creazione di una struttura informativa che permetta lo scambio tra i vari organi della difesa nazionale (centri di ricerca, Pentagono, basi militari, Casa Bianca, ecc.) e il cui funzionamento non dipenda da nessuno dei suoi singoli nodi, contrariamente alle reti di comunicazione tradizionali, come quella telefonica o telegrafica: in caso di avaria (o di attacco nemico) a un nodo della rete, le comunicazioni devono essere possibili tra tutti i centri ancora operativi. Un ulteriore elemento di affidabilità sarebbe stato introdotto dal supporto del collegamento, non più unicamente su linea dedicata, ma su normali linee telefoniche, un’idea relativamente rivoluzionaria per l’epoca.

Prima di allora, gli scambi di informazioni avvenivano infatti secondo la tecnica del Circuit Switching (“commutazione di circuito”), in genere implementata collegando ciascun computer a linee dedicate, al di fuori degli standard elettronici e telefonici commerciali e spesso costosissime. L’adozione della linea telefonica, su cui viaggiano contemporaneamente numerosi segnali, ciascuno relativo a comunicazioni diverse, porta alla scelta e allo sviluppo definitivo di una nuova tecnica di trasmissione dati, detta Packet Switching (“commutazione a pacchetto”).
Nella commutazione a pacchetto i dati da trasmettere vengono organizzati in moduli indipendenti (i pacchetti), ciascuno dei quali porla con sé l’indirizzo del mittente, quello del destinatario, nonché l’ordine di trasmissione, in modo da consentire alla macchina ricevente di ricostruire l’esatta sequenza in cui i pacchetti costituiscono il messaggio: una specie di mappa stradale, insomma, con tanto di orario e di indicazioni di coincidenze. Un approccio innovativo alla trasmissione dei dati, che trasforma la vecchia nozione di rete – molto simile a un circuito ferroviario rigidamente organizzato in binari unici, in cui nessun treno può superare o dare la precedenza ad un altro – in una sorta di autostrada con un grande numero di corsie, in cui le auto (i messaggi) sfrecciano indipendentemente le une dalle altre, dandosi il passo o superandosi, comunicandosi la cosa in tempo reale.

Nel settembre del 1969 entrano così in funzione quattro IMP (Interface Message Processor): quattro macchine su cui girano programmi che per la prima volta implementano il protocollo di comunicazione della nuova rete, cioè l’insieme dei messaggi di domanda/risposta a cui devono attenersi i nodi della rete stessa per dialogare tra loro. Questi nodi sono dislocati presso l’Università della California di Los Angeles (UCLA), Io Stanford Research Institute (SRI), l’Università della California di Santa Barbara (UCSB) e l’Università dello Utah. La nuova rete viene battezzata ARPAnet e consente la connessione di un massimo di 256 nodi diversi, ma soddisfa alle caratteristiche richieste al progetto: robustezza, flessibilità ed eterogeneità.

UNA RETE A PROVA DI BOMBA
Robustezza significa che il funzionamento generale della rete, cioè la possibilità di inviare dati da un suo nodo a un qualsiasi altro, è indipendente dall’esistenza di un determinato percorso tra il nodo di partenza e quello di arrivo e richiede solo che un tale cammino esista. La rete, in altre parole, è in grado di autoriconfigurarsi senza interventi di operatori: se uno o più dei suoi nodi cessano di funzionare (o di esistere), i dati raggiungeranno la loro destinazione seguendo un qualche altro percorso.
La flessibilità implica la possibilità di ampliamento/modifica della rete con impiego minimo o nullo di risorse e/o cambiamenti alla configurazione software/hardware di nodi già esistenti. In teoria (e in larga parte anche in pratica), per aggiungere un nuovo nodo alla rete è sufficiente dotarlo di un software che implementa i protocolli di rete e connetterlo a un qualunque altro nodo giù esistente.
L’eterogeneità è quella delle risorse (hardware: macchine e calcolatori; software: sistemi operativi e programmi) che è possibile “mettere in rete”, cioè rendere disponibili o in grado di dialogare tra loro, al di là delle differenze fisiche o di architettura logica. In altre parole, una Rete di questo tipo libera dai vincoli storici imposti dall’esistenza di più costruttori di macchine e dal vincolo – probabilmente utopistico – di uno standard unico.

DA ARPANET A INTERNET
Il successo della nuova rete è immediato, almeno nella comunità ristretta di militari, tecnici e scienziati che da subito inizia a utilizzare ARPAnet per le proprie necessità: trasmissione di file, documenti e – già dal 1970 – corrispondenza personale, la tanto celebrata posta elettronica.
Nel frattempo, la filosofia di ARPAnet (quella della trasmissione a pacchetti nell’ambito di una rete non gerarchica) fa proseliti e viene adottata da altre reti. Contemporaneamente, superando una storica riluttanza degli amministratori di rete a rendere disponibili le proprie risorse all’esterno, si afferma il concetto di internetworking, cioè la condivisione di risorse tra reti fisicamente distinte. I computer sono ormai stati introdotti in ogni aspetto dell’attività produttiva, organizzativa e aziendale e un’unica Rete sarebbe del tutto inadeguata a soddisfare le esigenze informative di società e persone. Inoltre, un’unica, colossale rete planetaria avrebbe una complessità (e quindi anche una vulnerabilità) proibitiva, anche dal punto di vista dei costi di mantenimento e di aggiornamento.
Il progetto dell’ARPA viene assorbito dal Defense Advanced Project Research Agency (DARPA) che riprende e aggiorna lo sviluppo dell’originario software di protocollo del controllo di Rete, NCP (Network Control Protocol). Il nuovo nato, che risponde a mutate esigenze di comunicazione tra reti eterogenee, si articola nel protocollo di controllo della trasmissione TCP (Transmission Control Protocol) e nel protocollo Internet IP (Internet Protocol), da allora collettivamente noti come TCP/IP.
Il lavoro di conversione ai nuovi protocolli inizia subito e ben presto ARPAnet viene collegata a PRNET (Packet Radio Net) e a SATNET (Packet Satellite Net). Ben presto, la crescita di ARPAnet diventa però così tumultuosa che il Dipartimento della Difesa decide di scinderla in due reti: una prende il nome di MILNET e viene adibita a scopi militari, mentre l’altra mantiene il nome di ARPAnet e l’obiettivo originario di supporto alla ricerca e allo sviluppo scientifici. Già negli anni ’80 la “ARPA Internet” è universalmente conosciuta come “Internet” e nel 1990 viene disattivato l’ultimo dei nodi originari di ARPAnet.

Collegamento in rete locale dei Personal Computer
La crescente diffusione e semplicità d’uso dei personal computer ha fatto sì che un numero sempre maggiore di attività potessero trovare un naturale supporto nella adozione di questi strumenti. Da un utilizzo prettamente individuale, sì è quindi passati a considerare delle architetture basate su personal quali possibili alternative all’uso diretto del calcolatore centrale nella automazione di interi settori operativi (ad esempio nel campo dell’office automation, delle attività amministrative, ed anche nel controllo di processi industriali).
Nell’ottica di una riduzione dei costi di impianto e di una necessaria unicità del patrimonio informativo del settore, ha assunto un sempre maggiore rilievo l’esigenza da parte di più utenti di condividere risorse hardware ed informazioni. La disponibilità di sole stazioni di lavoro autonome e scorrelate le une dalle altre crea, infatti, significativi disagi in un qualsiasi ambiente. Si pensi, ad esempio, alla necessità di trasmissione messaggi fra utenti: in mancanza di un canale di comunicazione diretto, l’unica possibilità, da parte del mittente, è quella di stamparlo, fotocopiarlo e quindi consegnarlo manualmente ai destinatari. Si pensi a più operatori responsabili della raccolta di ordini da parte di clienti: tutti hanno bisogno di accedere all’unico archivio contenente lo stato delle giacenze di magazzino. In mancanza di un collegamento fra le stazioni di lavoro, si corre il rischio di esaurire le scorte e di assicurare al cliente la disponibilità di prodotti invece non esistenti.

Sebbene siano stati proposti sul mercato sistemi operativi (es. XENIX) in grado di permettere il collegamento di più terminali ad un solo personal computer, la limitata potenza elaborativi di tali elaboratori (in particolar modo dei primi modelli, basati su processori ad 16 bit, a frequenze di clock ridotte), ha fatto sì che questi siano sempre stati utilizzati essenzialmente come stazioni di lavoro mono utente. Anche il sistema operativo OS/2, che pur opera sui nuovi modelli basati su processori più potenti, mantiene inalterata questa caratteristica: pur essendo multi task (permettendo cioè l’esecuzione contemporanea di più attività), non prevede tuttavia il collegamento di altri terminali.
Stanti queste limitazioni, il modo più efficiente per integrare in un unico contesto più utenti consiste nella implementazione di una rete locale o LAN (Local Area Network), e cioè di un sistema in grado di collegare fra loro diversi personal computer, ognuno dei quali oltre a conservare le proprie capacità autonome di calcolo, è in grado di condividere con altri un patrimonio comune di risorse hardware ed informazioni.
La condivisione di risorse hardware si ha quando più utenti possono utilizzare gli stessi dispositivi, ad esempio una stampante, un plotter o un disco di memoria. La condivisione di informazioni si presenta quando diversi utenti possono accèdere contemporaneamente agli stessi programmi, dati o messaggi. Le prime reti locali introdotte sul mercato erano particolarmente valide nella condivisione di risorse hardware, mentre si presentavano poco efficienti nell’accesso contemporaneo ad informazioni. L’evoluzione tecnologica ha quindi fatto sì che i principali fattori di inefficienza (la velocità di comunicazione ed il tempo di accesso a disco) venissero rapidamente superati, fino a rendere attualmente le reti locali una strategia affidabile anche per quelle applicazioni in cui la condivisione di dati e la circolarizzazione di messaggi rappresentano una esigenza prioritaria.

Classificazione delle reti
Il compito fondamentale di una LAN (Local Area Network) è collegare fisicamente più PC tra loro e spesso anche con un mainframe o un minicomputer. Questo compito viene assolto con molti materiali diversi: cavi intrecciati, fibre ottiche, linee telefoniche, addirittura luce infrarossa e segnali radio.
I modi di collegamento logico fra PC non sono molti meno dei diversi tipi di collegamento fisico. Ogni configurazione (o topologia) di rete deve comunque svolgere le stesse funzioni di base. La situazione più comune incontrata da una rete è l’invio di un messaggio da un PC a un altro. Può trattarsi di una richiesta di dati, della risposta alla richiesta di dati avanzata da un altro PC, oppure di un’istruzione per eseguire un programma memorizzato sulla rete.
I dati o il programma richiesti dal messaggio possono essere memorizzati su un PC utilizzato da un collaboratore pure collegato alla rete, oppure su un server, un PC specializzato. Un server di solito è un PC dalle prestazioni elevate con un disco rigido molto capiente che non è usato in modo esclusivo da uno degli utenti della rete, ma esiste solo per servire tutti gli altri PC in rete, fornendo loro un luogo comune in cui archiviare dati che può darsi debbano essere nuovamente estratti il più rapidamente possibile. Analogamente, una rete può avere dei print server, che tutti sulla LAN possono utilizzare per la stampa. Un print server è un PC collegato a una stampante, oppure una stampante intelligente che può essere collegata alla rete senza l’intermediazione di un PC.
Se una rete non ha un server dedicato, è una rete paritetica, ovvero peer-to-peer. In una rete paritetica, ogni singolo PC funge da server per gli altri PC (i suoi “pari”) sulla rete ed è “client” di tutti gli altri PC che fungono da server.
La rete deve ricevere richieste di accesso dai singoli PC (i nodi) collegati alla rete, e deve avere un modo per gestire richieste simultanee di servizi. Una volta che un PC ha guadagnato accesso ai servizi della rete, la rete deve poter inviare un messaggio da un PC all’altro, in modo che vada solo al nodo a cui è destinato e non finisca su qualche altro nodo che non se lo aspetta. E la rete deve svolgere tutto questo lavoro il più rapidamente possibile, distribuendo i suoi servizi con la massima equità possibile fra tutti i nodi della LAN.
Una LAN tipica si estende su una piccola area come singolo edificio o un piccolo quartiere, operando a velocità comprese fra 1 Mbps e 100 Mbps. Questo tipo di rete viene generalmente utilizzata per collegare tra loro personal computer operanti all’interno di un’azienda, lo scopo della rete è duplice perché da una parte consente lo scambio di dati ad alta velocità tra le singole stazioni e dall’altra permette ai singoli utenti l’accesso a quelle risorse hardware (stampanti laser, plotter ecc.) che per il loro costo elevato non rappresentano la dotazione usuale di un PC.
Senza l’uso di ripetitori si può arrivare a coprire un massimo di 500 metri di collegamento, mentre usando tali apparecchiature si arriva, al massimo, ad una estensione pari a 2 km.

La stazione di lavoro
Le stazioni di lavoro permettono l’accesso alla rete. Nella maggior parte dei casi sono costituite da personal computer, anche se, talvolta, può essere utile adottare sistemi con caratteristiche speciali.
L’hardware di una stazione di lavoro può essere suddiviso in due blocchi, come indicato nella figura a). Il personal computer ha la classica struttura delle applicazioni monoutente, mentre l’interfaccia di rete è costituita da una scheda specializzata, inserita sul bus di espansione. La connessione di rete è un cavo che collega la stazione di lavoro con un altro nodo.
La struttura del software nel nodo è indicata in figura b). Il programma applicativo ed il sistema operativo sono normalmente gli stessi usati in contesti monoutente; fra i due livelli viene ad inserirsi un modulo, detto software di rete, che si occupa di gestire l’interfacciamento fra il programma applicativo e la rete, anche facendo uso di funzioni specializzate del sistema operativo. A tale proposito, il DOS, a partire dalla versione 3.0, ha nel suo interno funzioni di supporto per le attività basilari di interazione con la rete. Il software di rete analizza le richieste che coinvolgono la rete e le trasmette ad essa, mentre lascia al sistema operativo tutto quanto di esclusiva pertinenza locale della stazione di lavoro (es. lettura sul disco, visualizzazione, ecc.). Il software di rete, inoltre, si occupa anche di analizzare lo stato della rete, intercettando eventuali messaggi destinati alla stazione di lavoro ed interpretando le azioni appropriate. Estensioni aggiuntive al DOS, basate su protocolli standard, sono poi in grado di fornire all’applicazione interfacce più evolute per l’accesso alle risorse condivise.

Tre topologie di rete (quella a bus, quella token–ring o ad anello con gettone e quella a stella) rappresentano le configurazioni della maggior parte delle LAN.

Rete a bus
Tutti i nodi di una rete a bus o Ethernet sono collegati alla LAN come rami di una linea comune (bus). Ogni nodo ha un indirizzo univoco. La scheda di rete dei vari nodi controlla che non vengano trasmessi altri segnali sulla rete; quindi invia il messaggio ad un’altro dispositivo quale stampante o un altro PC. Il segnale viene inviato in ambedue le direzioni, affinché raggiunga tutti gli altri nodi della rete.
Poiché le informazioni viaggiano tutte su una stessa linea, per evitare collisioni o sovrapposizioni di segnale, vi sono dei protocolli di comunicazione che stabiliscono dei criteri per regolare il traffico dei dati.

Rete token ring
Tutti i nodi di una rete token ring (ovvero “ad anello con gettone”) sono collegati allo stesso circuito che ha la forma di un anello. Un gettone (che è costituito da un breve messaggio di “disponibile”) circola continuamente nell’anello e viene letto dalle schede di rete dei vari nodi.
Un computer che vuole inviare un messaggio “afferra” il gettone mentre passa, gli cambia il messaggio in “in uso” e vi attacca l’informazione che vuole inviare e chi la deve ricevere. In questa maniera può circolare in ogni istante una sola informazione. Ciascun nodo esamina il gettone quando lo raggiunge, per vedere se contiene il suo indirizzo, se questo coincide con l’indirizzo che identifica il nodo, questi fa una copia dell’informazione e rispedisce in circolo l’anello. L’informazione torna così al mittente che lo elimina e riporta il gettone al suo segnale originario di “disponibile”. Poiché la resistenza elettrica presente in qualsiasi circuito cancellerebbe gradatamente il gettone e l’informazione che gli è stato affidato, ogni nodo ha un ripetitore che rigenera il gettone per conservare integri i dati. Il neo di questo tipo di rete è che non si presta all’aggiunta di nuovi nodi.

Rete a stella
In una rete a stella i nodi sono collegati a linee distinte che però conducono tutte alla stessa stazione centrale (HUB). Un nodo invia alla stazione centrale un’informazione che comprende anche l’indirizzo del nodo di destinazione, i dati e il codice di correzione degli errori.
La stazione di commutazione interroga regolarmente a turno ciascuno dei nodi collegati. Aprendo e chiudendo i commutatori a turno, la stazione impedisce il verificarsi di collisioni fra messaggi.
Per evitare la possibilità che uno dei nodi monopolizzi la rete, la stazione di commutazione permette il passaggio attraverso i commutatori solo di una piccola parte di un messaggio alla volta. Altri messaggi sono messi in lista d’attesa finché la stazione torna ad accudirli. Nelle reti di questo tipo il vantaggio fondamentale deriva dalla centralizzazione delle risorse e dall’assenza del problema del reistradamento del flusso dati verso gli altri nodi della rete. L’intera rete però dipende dal livello di affidabilità del nodo centrale.

I protocolli
Conformemente al particolare protocollo utilizzato, variano le modalità secondo cui il cavo di connessione viene condiviso dai diversi utenti ed i messaggi vengono trasmessi fra i vari nodi. Il problema principale che il protocollo di rete deve risolvere è la modalità secondo la quale l’unico cavo di collegamento viene condiviso fra i diversi nodi, ognuno dei quali può richiederne l’uso in momenti imprevedibili. I protocolli più diffusi sono quelli basati sul “passaggio del gettone” e sulla “collisione”.
In un sistema a “passaggio di gettone” (token passing) la topologia della rete è ad anello e le informazioni viaggiano di nodo in nodo. I messaggi sono accodati l’uno all’altro, e l’ultimo messaggio (il gettone) ha una codifica speciale per indicare il termine della sequenza. Ogni nodo analizza la sequenza e legge i messaggi a lui indirizzati, marcandoli come letti. Provvede inoltre ad eliminare dal gruppo quei messaggi da lui stesso inviati, in quanto si presuppone che abbiano già compiuto un giro dell’intero anello e quindi abbiano già raggiunto il destinatario. Eventuali nuovi messaggi sono aggiunti al termine della sequenza.
Un protocollo a collisione (Carrier Sense Multiple Access Collision Detection o CSMA/CD) si basa su criteri completamente differenti: ogni nodo analizza continuamente la rete ed aspetta a trasmettere finché il canale non è libero. Se due o più nodi impegnano il canale contemporaneamente, avviene una collisione che è riscontrata dai trasmittenti, ciascuno dei quali aspetta un intervallo di tempo casuale prima di tentare nuovamente.
Il protocollo CSMA/CD è uno dei più diffusi nella realizzazione di reti di personal computer, anche per la sua facilità di installazione e riconfigurazione, che può avvenire mediante semplice aggiunta di un nodo sul bus, senza bisogno di complesse ristrutturazioni del sistema. L’efficienza di tale protocollo è molto buona nel caso di uso non particolarmente intenso, mentre tende a decrescere con l’aumentare dei numeri dei nodi ed il volume di traffico, a causa del tempo che viene perso a seguito di collisioni.

Il vantaggio del protocollo a passaggio di gettone è il suo determinismo temporale: ogni nodo ha la possibilità di inviare un messaggio entro un prefissato e costante intervallo di tempo. Tale caratteristica può essere particolarmente importante in quelle applicazioni in cui il tempo di risposta è un fattore critico. Le prestazioni di questo protocollo degradano più lentamente a fronte di un aumento del carico di lavoro del sistema, in quanto questo non determina gli aumenti dei tempi morti dovuti alle collisioni.
D’altra parte, un certo tempo è comunque necessario al messaggio per giungere a destinazione, in quanto deve essere intercettato ed analizzato da tutti i nodi che si trovano sul percorso fra il mittente ed il destinatario. Inoltre la configurazione della rete e la sua variazione risultano molto più critiche: l’interruzione di un nodo determina il fermo dell’intero sistema mentre l’aggiunta di un nodo richiede la riconfigurazione di tutta la rete.
Fra i diversi protocolli di rete disponibili non è possibile individuare quello ottimo in assoluto. La scelta dello specifico prodotto da utilizzarsi dovrà quindi essere valutata caso per caso, a fronte di una analisi dalle particolari esigenze operative della applicazione, sulla base di parametri quali il numero di stazioni di lavoro, le esigenze di condivisione delle risorse hardware e le frequenze previste nell’accesso concorrente alle informazioni comuni.
Sotto il profilo metodologico, riteniamo inoltre opportuno sottolineare come una rete presenti esigenze di ottimizzazione ben diverse da quelle di un sistema multiterminale. Tali esigenze, diverse a seconda del particolare protocollo adottato, devono essere tenute presenti durante la fase di progetto delle applicazioni, sia per quanto riguarda la distribuzione dei dati sui diversi nodi, sia sotto il profilo delle tecniche di ingegneria del software da adottarsi nei programmi operativi. Il sottovalutare tali caratteristiche, specialmente nel caso di applicazioni con un significativo numero di utenti ed un elevato volume di dati, può portare ad un degrado delle prestazioni complessive del sistema, tale da renderlo praticamente inutilizzabile per fini inizialmente previsti.

Gli standard ed i protocolli TCP/IP
Il notevole numero di produttori hardware e software, e diverse evoluzioni che hanno avuto le reti nei vari contesti organizzativi, fanno sì che attualmente non esista ancora uno standard universalmente accettato fra i protocolli di gestione. Di conseguenza la compatibilità fra i prodotti forniti da Case diverse è ancora un aspetto particolarmente delicato, che impone una accurata verifica prima di eventuali acquisti diversificati.
Le principali formalizzazioni nella proposta di standard per le reti locali sonò state effettuate dalla International Standard Organization (ISO), e dall’Institute of Electrical and Electronic Engineers (IEEE).

L’ISO ha definito il modello OSI (Open Systems Interconnect), mediante il quale vengono descritti i diversi componenti di una rete, classificati in sette livelli distinti:

  • Il livello 1 (o livello fisico) identifica la connessione alla rete: i cavi e le interfacce hardware, sotto il profilo dei collegamenti meccanici, impedenze elettriche e tensioni.
  • Il livello 2 (o collegamento dati) definisce come le informazioni sono inserite nella rete e come sono individuati gli errori di trasmissione. In particolare si ha la traduzione di indirizzi logici della rete (IP nel caso Internet) in indirizzi fisici che identificano univocamente il computer. Nel caso di computer in rete locale l’indirizzo IP viene convertito nel numero della scheda di rete dell’elaboratore. Il protocollo definito in IEEE 802 è noto come ARP (Address Resolution Protocol). L’altra funzionalità espletata da questo strato è la gestione di canali trasmissivi condivisi. Qui viene anche controllata la correttezza delle sequenze di bit trasmesse, dette frame (trame) e l’effettivo arrivo a destinazione dell’informazione. Può infatti accadere che per disturbi elettrici, cadute temporanee di linea insorgano errori nei bit delle trame oppure interi frame vengano perduti a causa di collisioni. I due strati, fino ad ora considerati, garantiscono un flusso di informazione tra i livelli di rete affidabile in quanto immune da errori di due calcolatori direttamente connessi; le problematiche di una rete a più calcolatori vengono risolte più in alto. Per quanto riguarda l’effettiva realizzazione in Internet le funzionalità appena descritte sono risolte dalla scheda di rete, dal modem, dai collegamenti ADSL o ISDN od infine dai collegamenti su linea dedicata dei server.
  • Il livello 3 (o rete – Livello IP in Internet) stabilisce le modalità di indirizzamento dei messaggi, sia nell’ambito della stessa rete che fra reti diverse. Le informazioni da scambiare vengono suddivise in pacchetti dal protocollo di trasporto e devono essere convogliate nelle rete per giungere a destinazione. In questo livello viene definita la struttura degli indirizzi di rete e le regole con cui ogni singolo nodo decide di smistare i pacchetti. A differenza della rete telefonica, che instaura un collegamento a circuito virtuale, cioè rende attivo un canale univoco per la trasmissione di informazione che fa sì che la voce sia trasmessa lungo lo stesso percorso durante tutta la comunicazione, nel caso di reti informatiche si utilizza la tecnica della commutazione di pacchetto, che consiste nel far prendere ad ogni singolo nodo intermedio la decisione sulla via da far seguire ai pacchetti. Deduciamo che i pacchetti corrispondenti ad una singola comunicazione possono viaggiare lungo percorsi diversi. Ciò è dovuto alla necessità di dover implementare applicazioni di rete ad elevata sicurezza.
  • Il livello 4 (o trasporto – Livello TCP in Internet) definisce i criteri di suddivisione di lunghi messaggi in frammenti di dimensioni minori, tali da poter essere gestiti dai livelli inferiori. In ricezione provvede alla operazione inversa, ricomponendo il messaggio sulla base dei singoli frammenti. Crea i pacchetti, apre e chiude effettivamente la connessione tra server e client (socket). Inoltre, visto che l’informazione elementare viaggia su percorsi diversi, non si ha garanzia di un arrivo delle sequenze nello stesso ordine con cui sono state trasmesse, i pacchetti vengono numerati e memorizzati temporaneamente nel ricevente fino a che non sono tutti giunti. A questo punto vengono riordinati e consegnati al livello successivo. Un particolare pacchetto fa da delimitatore che indica la fine del messaggio. In questo modo contando i pacchetti arrivati e confrontando il risultato con il numero del delimitatore a livello TCP si può stabilire quando il flusso informativo è correttamente arrivato a destinazione. Quando si prosegue nella analisi delle funzionalità nel modello OSI, si arriva a questo punto a considerare ciò che vediamo fare ai nostri client ed ai server sul calcolatore remoto.
  • Il livello 5 (o sessione) gestisce i criteri logici di collegamento fra i due nodi di rete che stanno scambiandosi dati, mediante il ripristino della comunicazione a seguito di errori, gestisce la fase di connessione tra client e server. Vengono qui definite le regole con cui si contatta il calcolatore remoto, si negozia un servizio, si gestisce la connessione e la si chiude.
  • Il livello 6 (o presentazione) definisce i criteri di visualizzazione dei messaggi e di conversione fra il set di caratteri riconosciuto dalle stazioni di lavoro e quello utilizzato nella trasmissione.
  • Il livello 7 (o applicazione) definisce le modalità di elaborazione dei dati scambiati.

Al livello 5 di questa classificazione si colloca il NETBIOS della IBM, una interfaccia software fornita sulle reti IBM PC Network e Token–Ring. NETBIOS è divenuta di fatto uno standard, in tale ottica è supportata da molti produttori di rete, garantendo la trasportabilità di applicazioni.
In Internet gli ultimi tre livelli sono gestiti dai browser, dai client di posta, dai client di chat o di newsgroup ed infine dai client ftp (scaricamento di file), per quanto riguarda il lato utente, e dai corrispondenti server per l’altro lato.

I protocolli TCP/IP
I protocolli TCP/IP (Trasmission Control Protocol/Internet Protocol) rappresentano uno standard internazionale “de facto” per il supporto sia di reti locali di tipo Ethernet e Token Ring, sia di reti geografiche.
La spinta per lo sviluppo del protocollo TCP/IP venne data dalle nuove esigenze nate dallo sviluppo e dall’integrazione di reti diverse, che si trovavano nella necessità di comunicare: reti via satellite, reti via radio a commutazione di pacchetto e naturalmente ARPAnet. Il lavoro di progettazione e sviluppo di TCP/IP è il primo e il miglior esempio di quella che un po’ pomposamente viene chiamata “metodologia lnternet”: molto semplicemente, quando c’è bisogno di qualcosa, la si fa, la si collauda “nel mondo reale” e una volta che e stata ottimizzata la si generalizza, definendo uno standard.
I nuovi protocolli vennero utilizzati per ARPAnet a partire dal 1° gennaio 1983, che per alcuni costituisce la data ufficiale di nascita di Internet: la maggior affidabilità ed efficienza di TCP/IP rispetto al suo predecessore NCP furono la causa principale della migrazione di tutte le principali Reti a commutazione di pacchetto verso il nuovo protocollo, che si impose in breve come lo standard di riferimento.

CHE COS’È TCP
Il Protocollo di Controllo della Trasmissione (Transmission Control Protocol) è la prima interfaccia software verso la Rete e colloquia principalmente con le applicazioni di livello superiore, quelle a diretto contatto con l’utente. Di concerto col sistema operativo, TCP soddisfa un gran numero di esigenze dei programmi applicativi, che basano i propri protocolli interni su servizi messi a disposizione da TCP: è il caso del Protocollo per il Trasferimento di File (FTP), del protocollo semplice per il trasporto di posta elettronica (Simple Mail Transfer Protocol, STMP) o di una sessione di TELNET (simulazione di terminale remoto). Quando avviamo i singoli applicativi che implementano queste funzioni (come Eudora, nel caso della posta elettronica), essi si preoccupano in primo luogo di stabilire una comunicazione col software che implementa protocolli TCP (come Winsock Trumpet o MacTCP) e che da quel momento è disponibile all’applicazione.
Tra le funzioni per cui un programma applicativo che ha necessità di colloquiare in Internet può rivolgersi a TCP, vi sono la sua gestione dei dati orientata alla connessione, il trasferimento dei dati, il controllo del flusso di trasmissione e il trasferimento fullduplex (bidirezionale simultaneo). Una caratteristica di TCP che non tutti i programmi sfruttano, ma che è incorporata nella definizione dello standard del protocollo, è quella di specificare livelli di sicurezza e di priorità per la connessione.
Questo per quanto riguarda il colloquio fra TCP e Io strato superiore. Lo standard non comprende infatti alcuna specifica per quanto riguarda le comunicazioni con Io strato inferiore, sottintendendo che questo è in grado di scambiare informazioni con TCP in modo asincrono.

CHE COS’È IP
Il protocollo Internet si occupa di fornire tutti i servizi necessari alla gestione del traffico tra l’utente e la (sotto)rete sottostante, nonché – installato sui server di rete e sui gateway – tra le varie sottoreti attraverso cui i dati transitano per arrivare a destinazione. Si tratta di un cosiddetto “protocollo senza connessione” che non prevede alcun controllo sull’integrità e sulla completezza dei dati dalla partenza alla destinazione e che deve perciò appoggiarsi a un protocollo di livello superiore, come appunto TCP. Questo significa anche che IP è un protocollo relativamente semplice e “ignorante”: occupandosi esclusivamente della confezione e dello smistamento dei pacchetti (o “datagrammi”), nonché del loro instradamento/ricezione, esso possiede ben pochi indizi sul funzionamento della Rete o delle reti sottostanti, il che rende queste ultime relativamente indipendenti da IP stesso.

L’ indirizzamento in rete
In Internet è fondamentale distinguere chiaramente alcune nozioni che vengono spesso confuse. Un nome è un identificatore alfanumerico (cioè una sequenza di caratteri e cifre) che indica una certa entità, quali un computer, un programma, una persona, una rete, indipendentemente dalla loro dislocazione fisica. Un indirizzo è un altro identificatore che fornisce informazioni di natura molto più approfondita e specifica a proposito di una certa risorsa, quali la sua posizione fisica o logica nella Rete. Un percorso è l’insieme delle informazioni e delle modalità da seguire necessarie al reperimento di una posizione fisica (sia essa un indirizzo o meno).
Non è in realtà una distinzione difficile, anche perché si basa sul modello postale/telefonico che tutti conosciamo e che in effetti costituisce ancor oggi l’idea alla base della maggior parte delle sottoreti che afferiscono a Internet.
Nella pratica, l’utente utilizza di solito un nome per identificare il destinatario di una certa comunicazione; un name server (o server di nomi) risale dal nome all’indirizzo dei destinatario, indirizzo da cui si ricostruisce il percorso fisico attraverso un protocollo di routing.
Si tratta di un’impostazione che consente una grande elasticità nella gestione delle risorse di rete, permettendo a sistemisti e amministratori di sistemi di riconfigurarle e di ottimizzarle senza che ciò tocchi in alcun modo gli utenti finali.

L’indirizzo IP
Anche se l’utente finale ha a che fare solitamente col nome della risorsa di rete a cui vuole accedere (per esempio, un altro computer di rete), la prima cosa di cui si incarica il name server residente sull’host dell’utente è la sua traduzione in un indirizzo IP, cioè l’indirizzo di rete comprensibile agli strati successivi di software che implementano i protocolli di trasmissione. Le reti TCP/IP implementano indirizzi a 32 bit che codificano la rete di appartenenza della risorsa (indirizzo di rete) e l’host che la supporta (indirizzo di host). La struttura dell’indirizzo IP è quindi: indirizzo IP = indirizzo di rete + indirizzo di host, a cui i 32 bit disponibili possono essere riservali in più modi, secondo la ripartizione in classi riportata in figura.

Essi si dividono in 5 classi distinte: classe A, classe B, classe C, classe D e classe E.

  • Classe A: è rappresentata dagli indirizzi IP compresi tra 1.0.0.0 e 127.255.255.255. Il primo byte identifica la rete, mentre i tre byte successivi identificano l’host. In questo modo si possono ottenere 128 reti costituite ciascuna da 16.777.216 host. Tantissimi? In verità no, vista la crescita esponenziale di Internet.
    Gli indirizzi di classe A riservano 24 bit all’indirizzamento di rete e 7 all’indirizzamento dell’host. Questo significa che permettono di indirizzare 27=128 reti (in realtà 126, perché i valori 0 e 127 sono riservati) e 224=16.777.216 host (in realtà, 16.777 124). Siccome non sono tanti, vengono riservati a grandi organizzazioni governative o multinazionali.
  • Classe B: è rappresentata dagli indirizzi IP compresi tra 128.0.0.0 e 191.255.255.255. In questo caso, la rete è identificata nei primi due byte, mentre i due successivi fanno riferimento agli host per un totale di 16.384 reti composte da 65.536 host.
    Gli indirizzi di classe B riservano 14 bit all’indirizzamento di rete e 16 all’indirizzamento dell’host. Questo significa che permettono di indirizzare 214=16.384 reti e 216=65.536 host. Nel loro insieme i primi due ottetti identificano la rete e gli altri due il calcolatore al suo interno.
  • Classe C: utilizzata per le reti più piccole, è composta dagli indirizzi compresi tra 192.0.0.0 e 223.255.255.255. In questo caso, l’host è identificato solo dall’ultimo byte mentre i primi tre rappresentano la rete. Pertanto, è possibile gestire 2.097.152 reti composte da 256 host.
    Gli indirizzi di classe C riservano 21 bit all’indirizzamento di rete e 8 all’indirizzamento dell’host. Questo significa che permettono di indirizzare 221=2.097.152 reti e 28=256 host. La rete è individuata dai primi tre ottetti, il singolo calcolatore invece solo dall’ultimo.
  • Classe D: è composta dagli indirizzi compresi tra 224.0.0.0 e 239.255.255.255. Tutti questi indirizzi sono utilizzati per operazioni multicast. In una rete multicast tutti i membri di un gruppo ricevono le medesime informazioni.
  • Classe E: primo ottetto superiore a 239. Non sono utilizzati e vengono mantenuti per possibili usi futuri.

In formato binario, un indirizzo IP (di classe C, per esempio) avrà un formato del tipo:

11000001 11001111 00000010 00011111

dove è stata evidenziata la suddivisione nei 4 byte (gruppi di 8 bit che Io costituiscono. Di solito i byte vengono rappresentati in forma decimale e separati da un punto. Così. il nostro indirizzo diventa:

193.207.2.31

una forma già molto più familiare ai frequentatori di Internet. In questo formato, 193.207.2 è l’identificatore di rete della risorsa, mentre 31 l’indirizzo dell’host.

Le reti di classe A, B e C possono essere suddivise in sottoreti. Tale operazione, denominata Subnetting, viene effettuata sia per facilitare le operazioni di routing e di gestione degli indirizzi che per evitare sprechi nell’utilizzo degli indirizzi.
La suddivisione di una rete in due o più sottoreti si esegue attraverso la netmask, che stabilisce quali indirizzi IP possono essere usati nelle sottoreti.
Per la classe A, la subnet mask deve essere impostata a 255.0.0.0. Per la classe B, deve essere settata a 255.225.0.0. Per la classe C, che è la classe che sicuramente ci interessa di più, la subnet deve essere impostata a 255.255.255.0.
Quindi, se gli indirizzi disponibili vanno da 192.0.0.0 a 223.255.255.255 e la nostra rete di classe C possiede, ad esempio, un indirizzo IP 192.234.24.0, la maschera di sottorete dovrà essere impostata a 255.255.255.192. Per quanto riguarda le due sottoreti, alla prima può essere assegnato come gateway l’indirizzo IP 192.234.24.0 (e alle macchine che la compongono gli indirizzi dal 192.234.24.1 al 192.234.24.126), mentre alla seconda può essere assegnato come gateway l’indirizzo IP 192.234.24.128 (e alle macchine che la costituiscono gli indirizzi dal 192.234.24.129 al 192.234.24.254). In questo modo, nonostante si possieda un solo indirizzo IP che identifica una rete composta al massimo da 256 host, è possibile creare virtualmente altre due reti.
Una piccola precisazione: all’interno di una rete locale connessa a Internet si può assegnare tranquillamente un determinato range di indirizzi IP privati che non vengono messi a disposizione dagli ISP al momento della connessione. Tali indirizzi vanno dal 10.000 al 10.254.254.254, dal 172.16.0.0 al 172.31.254.254 e dal 192.168.0.0 al 192.168.254.254.
Quest’ultimo range è il più utilizzato nelle LAN e lo ritroveremo spesso nelle trattazioni pratiche della sezione. Anche in questo caso è importante ricordare che i primi tre byte designano la rete e l’ultimo byte indica l’host.

È in atto la definizione di una nuova versione del protocollo, l’IPv6, che aumenterà il numero di bit utilizzati per ciascun indirizzo evitando problemi di saturazione.
Come minimo, se ci si vuole collegare direttamente ad Internet bisogna acquistare un indirizzo di classe C con tutti i suoi 255 possibili valori. Per questo se anche abbiamo solo 3 calcolatori, la connettività diretta ad Internet fornisce un ventaglio di 256 indirizzi. Se da una macchina della rete parte una richiesta per una risorsa Internet la prima cosa che viene fatta è usare la cosiddetta maschera di rete per scoprire se la richiesta è inerente ad una macchina locale o fa riferimento ad una risorsa esterna. Per una rete di classe C la maschera di rete è 255.255.255.0 e cioè i primi tre ottetti ad uno e l’altro a 0. Con la maschera si risale alla parte di indirizzo IP corrispondente alla rete. Basta un AND logico bit a bit con la maschera di rete da eseguire sull’indirizzo IP del chiamante e del chiamato per vedere se la richiesta è interna od esterna.

Nell’esempio di figura, supponiamo che A della rete 1 voglia connettersi a F della Rete 2. Per quanto detto l’indirizzo IP della prima macchina potrebbe essere:
194.99.247.0 e cioè:

11000010 . 01100011 . 11110111 . 00000000
194 . 99 . 247 . 0

Effettuando l’AND bit a bit con la maschera di rete 255.255.255.0 si ottiene:

Indirizzo IP della macchina A:
11000010.01100011.111101 11.00000000
Maschera di rete:
11111111.11111111.11111111.00000000

Indirizzo della rete del chiamante:
11000010.01100011.11110111.00000000

Per la seconda macchina potremmo avere un indirizzo IP pari a:
198.35.64.1 e cioè:

11000010 . 00100011 . 01000000 . 00000001
198 . 35 . 64 . 1

Indirizzo IP della macchina F
11000010.00100011.01000000.00000001

Maschera di rete
11111111.11111111.11111111.00000000

Indirizzo della rete del chiamato
11000010.00100011.01000000.00000000

Si sono supposti indirizzi di classe C per entrambe le reti. Essendo due indirizzi distinti. si riconosce che il servizio richiesto fa riferimento ad una risorsa che non è locale. Se la richiesta fosse locale entra in gioco ARP che nella macchina chiamante genera l’indirizzo della scheda di rete della risorsa locale. Nel nostro caso invece nella rete del chiamante è necessario un elemento che non avevamo ancora preso in considerazione: il router. È l’elemento che garantisce l’accesso esterno alla rete. In analogia alla comunicazione telefonica, la richiesta di telefonata arriva dall’apparecchio alla centrale telefonica che la smista ad un’altra centrale e così via fino a che può essere stabilito il collegamento diretto. I router sono l’equivalente delle centrali telefoniche. Quindi il router della rete A sarà collegato ad almeno un altro router (ad esempio dell’ISP, ovvero Internet Service Provider, che fornisce accesso Web alla Lan). Quest’altro router a sua volta sarà collegato ad altri è così via fino alla destinazione richiesta. Ogni volta che l’informazione viene smistata su un nuovo tratto, eventualmente, si dovrà avere una traduzione del flusso di informazione binaria nel protocollo di collegamento dati adatto al nuovo mezzo trasmissivo. Bisogna sempre presente che queste varie tratte potrebbero essere in parte via etere, cioè segnali radio, in parte sistemi satellitari, in parte fibra ottica. I codici di trasmissione su questi vari dispositivi sono in generale diversi. Nel caso in cui il router in uscita abbia accesso in più nodi, svolgerà un ulteriore compito: decidere il tragitto più conveniente.

Facciamo un esempio ipotetico ma che chiarisce i problemi che si affrontano nella pratica.
La rete, in base alla struttura degli indirizzi IP può essere suddivisa in zone. In base al prefisso la rete telefonica è divisa in distretti. Le centrali telefoniche sanno che quando compongo 02 intendo chiamare nel distretto di Milano. Gli indirizzi IP vengono assegnati anche in base alla collocazione geografica della rete. In base a ciò ogni singolo router interno alla zona riconosce se si fa riferimento ad una richiesta interna alla zona in cui esso risiede od esterna. In base a ciò sa quale percorso tentare per raggiungere la destinazione. In particolare le richieste esterne passano attraverso un router centrale di zona. Nel nostro caso essendo attiva una richiesta per una zona esterna bisognerà passare attraverso un router di frontiera passando o dalla zona C o dalla zona B. Intuitivamente potete capire come ci si può collegare tra le due estremità della comunicazione.

Ogni nodo di questa rete sa ricavare dagli indirizzi le informazioni necessarie per muoversi nella direzione corretta. Solo che a volte i percorsi possibili possono essere molteplici e dunque ne va scelto uno. In base a considerazioni di velocità delle linee, di distanza dei collegamenti, della quantità di traffico presente il singolo nodo prende la decisione. Si parla di routing statico o routing dinamico. È statico quando il singolo nodo ha una tabella di corrispondenze tra indirizzi e possibili destinazioni con relativo percorso, fissata una volta per tutte, o raramente modificata. Il routing è dinamico quando il nodo modifica in funzione dello stato attuale dei collegamenti la tabella dei percorsi. Tenete presente che la decisione sul percorso da adottare avviene nodo per nodo e non una volta per tutte. Ciò permette al singolo router di aspettare una conferma di ricezione del messaggio spedito su una linea. Se per qualsiasi ragione la conferma non arriva entro un determinato tempo si può ritrasmettere il messaggio su un’altra linea. Se ciò non risultasse possibile si avvisa chi ci ha chiamato che a sua volta tenterà un’altra direzione.
La figura rappresenta questo meccanismo.

Con questo modo distribuito della gestione degli indirizzi IP, è possibile garantire un flusso affidabile di informazione binaria tra due calcolatori. La parte di trasporto (TCP), oltre a introdurre il concetto di porta e quindi di servizio richiesto al server, si occupa del riordino dei pacchetti con cui vengono codificati i comandi dei livelli sovrastanti. Se tutto ha funzionato a dovere abbiamo instaurato una connessione virtuale tra client e server. L’analisi che abbiamo effettuato prevede che esplicitamente i due computer che scambiano informazioni abbiano corrispondenti indirizzi IP permanenti. Nel caso il client effettui una connessione via modem a 56 kbp/s, la sequenza di azioni generate dalle apparecchiature di rete è in parte diversa. In questo caso l’utenza domestica non ha associato alcun indirizzo. Dopo la composizione del numero di telefono dell’ISP (Internet Service Provider, Fornitore di Servizi Internet) a cui l’utente fa riferimento, viene attivata una connessione sulla quale è possibile una comunicazione con un particolare protocollo PPP (Point to Point Protocol), che garantisce una trasmissione seriale tra utente e ISP. Il client può trasmettere il proprio login e la propria password in modo che il fornitore di accesso possa controllare l’identità dell’utente. Se l’accesso è possibile il calcolatore dell’ISP fornirà dal ventaglio di indirizzi da lui gestibile un indirizzo IP, temporaneo per quella connessione, al client. Ad ogni connessione via modem di questo tipo è associato un indirizzo di volta in volta diverso. Si parla in questo caso di indirizzi IP dinamici. Il calcolatore client a questo punto potrà trasformare le richieste dei protocolli applicativi in pacchetti IP, che incapsulati in trame PPP vengono trasmesse al calcolatore dell’ISP. Da qui in avanti la gestione del routing avviene come visto sopra in quanto il fornitore d’accesso ha una connessione permanente.

Abbiamo fino ad ora considerato come avviene un collegamento e come viene gestito a basso livello, secondo uno schema di riferimento che potrebbe essere quello di figura.
Tutto ciò rappresenta una sorta di scatola nera che all’utente terminale è nascosta. Il nostro accesso ad Internet viene tradotto nei termini di azioni all’interno di questa gerarchia, ma siamo ancora lontani da ciò che facciamo con il nostro programma client. Dobbiamo almeno salire ancora due gradini. Il primo è quello dei protocolli applicativi. Per capire come essi siano strutturati, può essere proficuo utilizzare un semplice software: telnet. Si tratta di un programma accessibile dalla linea di comando del sistema operativo in uso, sia esso Linux o Windows, che permette di gestire a livello di protocolli applicativi le connessioni Internet. Se eseguiamo il programma fornendogli un indirizzo web ed un numero di porta accediamo all’utilizzo dei comandi ad esempio dell’HTTP o del POP3, che sono i protocolli per le pagine Web e per la posta elettronica.

 Supponiamo di lanciare telnet nel seguente modo:

telnet www.virgilio.it: 80

Ciò fa sì che venga aperta la connessione sulla porta 80 del server di Virgilio. Sul calcolatore di quel sito è funzionante in maniera permanente un software in attesa di richieste per la connessione. A questo punto sulla videata telnet compare un messaggio di conferma, se il collegamento ha avuto luogo con successo, e possiamo mandare in esecuzione i comandi del protocollo http. Rammentiamoci che chi sta in ascolto sulla porta 80 per default accetta colloqui per la richiesta di pagine web cioè richieste http. Basterà digitare:

Get /

ed avremo in risposta la spedizione del codice che descrive la pagina. Questo particolare codice è scritto in un opportuno linguaggio, detto HTML (Hyper Text Markup Language). Dopo aver ricevuto il codice vedremo un messaggio che ci informa della chiusura della connessione. Una volta che ci ha spedito la pagina il server tronca la comunicazione, che dovrà essere ripristinata ad ogni richiesta. In questo modo comunque il server si libera rendendo il suo programma disponibile alle prossime richieste.

Volendo possiamo con telnet effettuare anche letture di posta elettronica. Digitiamo:

telnet www.libero.it: 110

supponendo che libero.it sia il sito che ospita la vostra posta elettronica. Si attiva il server di posta in ascolto sulla porta 110. Ora si digiti:

user nomeutente
password vostra password

ed il server da l’accesso ai vostri messaggi di posta fornendovi un numero e la grandezza del messaggio in byte. Si dovrebbe vedere una cosa del genere:

Messages:  
1 576
2 342
3 678
4 2345

per leggere il messaggio digitare:

retr 2

A questo punto il testo del messaggio scorrerà sulla finestra del vostro computer.
Tutti i protocolli di livello applicativo della suite Internet hanno le caratteristiche che possiamo intuire dai brevi esempi visti. Sono una serie di comandi testuali codificati in ASCII standardizzati a livello internazionale. Ovviamente lavorare a sola riga di comando sarebbe scomodo ed altresì non permetterebbe la visualizzazione grafica. Dunque la nostra interfaccia finale saranno gli Explorer o gli Outlook del caso. Questi programmi non fanno altro che tradurre i comandi impartiti in modo interattivo dalla propria interfaccia grafica, in stringhe di testo corrispondenti alla sintassi dei propri protocolli, riproponendo in stile grafico i risultati ottenuti dall’esecuzione delle richieste. Abbiamo citato due protocolli di livello applicativo in Internet (http e POP). Consideriamone altri, associati ai servizi principali di Internet.

E–Mail
La spedizione e la ricezione dei messaggi di posta elettronica è uno degli strumenti più utili. Vi sono differenti protocolli a seconda del tipo di servizio richiesto. Per la posta in uscita è utilizzato l’SMTP (Simple Mail Transfer Protocol) che è attivo sulla porta 25 dei server di posta. Per scaricare in un secondo tempo dal server al proprio hard disk i messaggi si possono usare due protocolli: il POP (Post Office Protocol), attivo sulla porta 110, ed il più recente e flessibile IMAP  (Internet Message Access Protocol), sulla porta 143.

FTP
La sigla sta per File Transfer Protocol. Il suo scopo è il trasferimento di file da e verso un server. È attivo di default sulla porta 21. È usato quando si scaricano informazioni sul proprio disco e quando si pubblicano dei dati sul server. Ha la caratteristica di poter riprendere connessioni interrotte e prima di chiudere la connessione si attende conferma dell’arrivo dei dati, realizzando così un sistema che garantisce la correttezza e completezza dell’informazione scaricata. Ricordatevi che in HTTP, dopo avervi spedito la pagina, il server chiude immediatamente la comunicazione.

IRC
Tramite la porta 6667 si ha accesso al mondo dell’Internet Relay Chat, cioè una rete di server connessi con lo scopo di mettere in comunicazione gli utenti sparsi nel mondo che hanno modo di comunicare in tempo reale privatamente o in gruppi detti canali.

Newsgroup
Attivo sulla porta 119 troviamo NNTP (Network News Transfer Protocol) che gestisce i servizi Usenet. Si tratta di messaggi di posta elettronica spediti non da una persona ad un’altra, ma indirizzati da parte di un gestore del servizio ad una serie di utenti registrati.

Telnet
Sulla porta 23 troviamo attivo un server per questo servizio. Con un client telnet un utente si può collegare ad un calcolare remoto ed accedervi come se fosse in locale previe opportune autorizzazioni. In pratica è possibile impartire su una macchina comandi del suo sistema operativo pur essendo fisicamente da un’altra parte.

Altri aspetti di Internet
Dobbiamo ancora approfondire alcuni aspetti importanti nella gestione della rete. Innanzi tutto ci interessa chiarire meglio il concetto di elaborazione distribuita utilizzando un modello
clientserver. Si tratta del modello in cui distinguiamo tre entità:
il client: è il programma usato dall’utente per usufruire di un certo servizio;
il server: è un programma residente su un computer in grado di svolgere il servizio richiesto dal client;
il mezzo di comunicazione: sarà Internet, una rete locale, possiamo anche contemplare il caso limite in cui server e client siano sulla stessa macchina.
Possiamo schematizzare l’architettura delle applicazioni di questo tipo con lo schema in figura.

La richiesta di servizio viene generata dal client (1). Il server è di solito diviso in due ben delimitate porzioni software, un’interfaccia ed un modulo per l’espletamento dei servizi. Il primo dei due moduli acquisisce la richiesta e la converte per il modulo di elaborazione (2). La richiesta è fornita al modulo di elaborazione (3). Il servizio è soddisfatto (4). Viene generata la risposta (5). La risposta è convertita nella sintassi del client (6). La risposta viene spedita (7). Questo modello è molto generale e descrive altrettanto bene l’accesso ad un database remoto, i servizi in Internet e svariate altre applicazioni.

La sempre più frequente adozione di questo schema è legata ad alcuni fatti:

  • indipendenza tra l’interfaccia utente di un programma e la sua parte computazionale; in questo modo si può vedere la stessa pagina con diversi browser, oppure gestire la posta con il programma preferito. Si tratta in questo caso di poter utilizzare diversi client con un unico server;
  • possibilità di soddisfare più richieste: in questo modello è importante capire come la parte di interfaccia attivi l’elaborazione ma si rimetta subito all’ascolto di altre eventuali richieste. In questo modo potrà ascoltare altri utenti anche mentre viene effettuato il primo servizio richiesto eventualmente mandando in esecuzione un’altra copia del modulo di elaborazione;
  • possibilità di usare un client con più server distribuendo l’elaborazione su più macchine in modo da snellire i tempi di risposta. Pensate a tutti quei portali che da browser, oltre ai servizi web, vi offrono motori di ricerca, caselle di posta ed altro;
  • possibilità di proteggere, a livello di interfaccia, gli accessi (login, password e relative operazioni concesse).

DNS
Altro aspetto interessante che dobbiamo affrontare per aumentare la nostra consapevolezza sul funzionamento della rete riguarda la gestione dei nomi di dominio. In precedenza avevamo discusso come l’ossatura della rete si basi sugli indirizzi IP. Noi siamo abituati fortunatamente, essendo più comodo, ad usare nomi simbolici, gli URL, per richiedere servizi web. Si pone dunque il problema di come sia possibile la conversione di nomi in indirizzi. La sigla DNS (Domain Name Server) indica il modo in cui avviene la risoluzione degli indirizzi. Si tratta di un sistema gerarchico e distribuito per poter gestire la sempre crescente quantità di nomi. Gerarchico si riferisce alla struttura dei nomi stessi. I suffissi .it, .com, .mil, e così via indicano la tipologia di rete in cui si trova il sito a cui fa riferimento il nome di dominio. Distribuito, invece, indica che l’elenco dei nomi non è concentrato in un unico luogo; diversi server si dividono le informazioni per convertire un nome di computer in un indirizzo IP. Nella definizione di un collegamento permanente alla rete, ad ogni macchina è associato l’indirizzo IP di un name server di riferimento. Alla richiesta di un servizio Internet, per prima cosa si accede al server di nomi di dominio associato alla macchina richiedente. Questa, ricerca nel proprio database la presenza del nome simbolico invocato. Se non presente, tale macchina ha le informazioni necessarie per collegarsi ad un altro server di nomi (root name server) in grado di reperire l’indirizzo IP. Supponiamo, ad esempio, di richiedere un servizio su un dominio del tipo .com e che il nostro name server gestisca solo domini .it. Girerà allora la richiesta ad un name server opportuno per i domini .com e troverà in questo modo l’indirizzo IP desiderato che potrà essere restituito alla nostra macchina che ora è in grado di richiedere la connessione. I vari domini di primo livello hanno propri name server dedicati. In questa tabella consideriamo alcuni dei principali nomi di dominio di primo livello.

Proxy server
Abbiamo parlato di server web, server di posta, server di nomi e così via. Resta ancora da considerare una tipologia di server che può capitare di specificare allorquando si configuri un collegamento web. Si tratta dei proxy server. Il problema del traffico sulla rete può a volte diventare notevole rallentando le prestazioni. Una strategia per far fronte a ciò è quella di replicare presso un calcolatore parte delle pagine a cui si accede frequentemente da una data postazione o azienda. Se il nostro collegamento ad Internet è filtrato da un proxy server, le nostre richieste di servizi Internet sono fatte innanzitutto al proxy che cerca nella sua memoria locale le pagine richieste. Se presenti vengono restituite direttamente, altrimenti viene inoltrata la richiesta alla risorsa indicata effettivamente dall’URL. Il proxy è dunque una memoria cache non locale al nostro calcolatore. Richiedendo un aggiornamento dal browser si può comunque accedere alla pagina sulla macchina remota, qualora si abbia motivo di ritenere essa sia stata modificata dall’ultimo accesso. Il proxy server fa da filtro agli accessi esterni ad Internet.

Firewall
Ci sono altre categorie di filtro usate nell’accesso ad Internet; si tratta dei firewall. Un firewall è un calcolatore che si frappone tra la rete interna e la rete esterna, facendo oltretutto da router. Tali macchine si occupano della gestione della sicurezza, del logging e dell’accounting.
Il firewall funziona separando fisicamente il traffico della rete interna da quella esterna. Il transito dei pacchetti viene governato da una serie di regole che stabiliscono permessi di accesso dentro la rete aziendale e di uscita. Tipicamente il firewall blocca alcuni tipi di socket, rifiutando a determinati utenti interni alcuni servizi in uscita, e bloccando alcune porte verso le macchine aziendali. Se l’azienda ha bisogno solo di vedere Internet, ma non di pubblicare informazioni verrà bloccato qualsiasi accesso dall’esterno all’interno. Per logging si intende la registrazione dei vari tipi di accesso da e verso l’esterno della rete. Infine l’accounting è la registrazione della quantità di traffico generata dai vari utilizzatori in termini di quantità di byte trasferiti. Gli ISP in questo modo possono far pagare agli utenti una cifra proporzionale all’utilizzazione. Per concludere questa presentazione di Internet, citiamo infine un ultimo protocollo non utilizzato direttamente dai programmi applicati, ma piuttosto da router, server e firewall. Si tratta dell’ICMP (Internet Control Message Protocol), che serve per la diagnostica della rete, cioè il rilevamento di errori e malfunzionamenti, e per il monitoraggio della velocità della trasmissione in Internet. Consideriamo solo i due comandi fondamentali utili a questo scopo:
ping indirizzo
Ping funziona spedendo un pacchetto ICMP, detto echo request, ed aspettandosi un pacchetto echo replay. Inoltre ottiene come risposta anche il tempo necessario al trasferimento del pacchetto tra chiamante e ricevente. Tale comando viene utilizzato per testare il funzionamento di una tratta di rete. Simile, ma più completo è il comando:

traceroute indirizzo (Sistemi Linux e Unix)
tracert indirizzo (Sistemi Windows)

Esso registra il percorso necessario per trasferire i pacchetti da un’origine ad una destinazione. Presenta un elenco dei router intermedi visitati con il tempo necessario per ogni tratta. Chiaramente può servire nel monitoraggio e nella configurazione delle tabelle di routing nel caso di smistamento dinamico dei pacchetti.

{/gspeech} 

Esercizi
1. Si provi ad effettuare un collegamento con una sessione Telnet ad un qualsiasi sito web sperimentando il comando GET.

2. Si provi ad effettuare un collegamento con una sessione Telnet ad un qualsiasi sito web in cui avete in precedenza registrato una casella di posta elettronica provando a leggere un messaggio.

3. Si provi ad effettuare un ping verso un qualsiasi sito prestando attenzione alle informazioni restituite dall’operazione.

4. Si provi ad effettuare un traceroute verso un qualsiasi sito prestando attenzione alle informazioni restituite dall’operazione.

5. Si provi a ricercare nelle risorse del sistema le informazioni relative alla configurazione del proprio collegamento Internet.

6. Si navighi nel menù del proprio browser facendo attenzione alle varie funzionalità di personalizzazione offerte e ricercando nella guida del vostro sistema operativo il significato e la definizione dei termini che non vi sono chiari.

 Esercizi

1. Si elenchino i vari livelli in cui è sud-divisa la pila ISO/OSI descrivendo brevemente la funzionalità di ogni strato.

2. Si elenchino i vari livelli in cui è suddivisa la pila Internet descrivendo brevemente la funzionalità di ogni strato e la corrispondenza con i livelli OSI.

3. Si definiscano i concetti di LAN, MAN e WAN.

4. Si descrivano le strutture di una rete ad anello, di una rete a bus e di una rete token ring.

5. Che cos’è un router?

6. Che cos’è un server?

7. Che cos’è un client?

8. Che cos’è un modem?

9. Che cosa indica la sigla ISP?

10. Che cos’è un browser?

11. Si definisca il concetto di protocollo.

12. A che cosa serve il protocollo PPP?

13. A che cosa serve il protocollo HDLC?

14. A che A che cosa serve il protocollo POP?

15. A che cosa serve il protocollo SMTP?

16. A che cosa serve il protocollo IMAP?

17. A che cosa serve il protocollo IRC?

18. A che cosa serve il protocollo TCP?

19. A che cosa serve il protocollo IP?

20. A che cosa serve il protocollo FTP?

21. A che cosa serve il protocollo HTTP?

22. A che cosa serve il protocollo NNTP?

23. A che cosa serve il protocollo ICMP?

24. A che cosa serve il protocollo ARP?

25. Quali dei precedenti sono protocolli di livello applicativo?

26. Si definisca la struttura di un indirizzo IP spiegando anche il concetto di classe di indirizzo.

27. Che cos’è e a che cosa serve la maschera di rete?

28. Come viene tradotto un URL nel corrispondente indirizzo Ip?

29. Che cosa si intende col termine numero di porta?

30. Si descriva il concetto di socket.

31. In cosa consiste la tecnica della commutazione di circuito?

32. In quale contesto tecnologico viene utilizzata?

33. In cosa consiste la tecnica della commutazione di pacchetto?

34. In quale contesto tecnologico viene utilizzata?

35. Si descriva la tipica struttura di un’applicazione client–server su Internet.

36. Si indichino le funzionalità tipiche di un proxy server.

37. Si indichino le funzionalità tipiche di un firewall.

Commento all'articolo