PROGRAMMIAMO
Internet - Livelli di un protocollo
Stratificazione dei protocolli

Nell'ambito delle reti di comunicazione, occorre definire protocolli estremamente precisi e dettagliati che specifichino il funzionamento e la comunicazione fra entità di tipo molto diverso fra di loro, quali dispositivi hardware (computer, router, schede di rete...) e software (processi in esecuzione). Data questa enorme complessità, non è ovviamente possibile né ragionevole definire un unico protocollo che specifichi tutto quanto, ma è senz'altro più conveniente utilizzare più protocolli diversi, ciascuno dei quali regola un singolo aspetto dell'intero processo di comunicazione. Così ad esempio ci saranno protocolli per definire le caratteristiche elettriche dei segnali trasmessi su un cavo ed altri protocolli per specificare come un browser possa richiedere l'accesso a una pagina web.

Allo scopo di suddividere in modo razionale i protocolli, occorre identificare con chiarezza a quali entità in particolare essi si riferiscano, separando in modo preciso le funzioni e i limiti di ognuna di esse. Per esempio, considerando la richiesta di una pagina web da visualizzare su un PC, chi è che effettua tale richiesta? L'utente? Il browser? Il sistema operativo? La scheda di rete? In effetti tutte le risposte precedenti possono essere considerate in qualche modo corrette. E, tuttavia, se vogliamo definire un protocollo o più protocolli adatti allo scopo, è estremamente importante definire con precisione a quali ambiti si applicano. Cercando di essere più concreti e sempre con riferimento all'esempio precedente, è chiaro che il protocollo sarà formulato in modo completamente differente nel caso in cui si riferisca alle azioni che deve fare l'utente per reperire una risorsa in rete oppure ai segnali che, in conseguenza della richiesta dell'utente, devono essere prodotti dalla scheda di rete del PC. Si tratta, in tutta evidenza, di due livelli completamente differenti.

Questo ci porta abbastanza naturalmente all'idea di suddividere l'insieme di protocolli di comunicazione in livelli (detti anche strati o layer in inglese). In informatica in generale un livello viene definito come un modo per organizzare e nascondere i dettagli realizzativi di un particolare insieme di funzionalità, in modo tale che ogni livello si presenti come un sistema autonomo e completamente definito. Per cercare di chiarire meglio il concetto, si consideri la figura seguente che mostra la tipica organizzazione a livelli del software e dell'hardware in un computer:

Senza entrare nei dettagli, l'utente interagisce con il livello del sistema operativo (OS and application), senza doversi preoccupare in alcun modo dei livelli sottostanti. Allo stesso modo il sistema operativo interagisce con l'utente e le sue applicazioni e con il kernel (verso il basso). In questo modo ogni livello è isolato e autonomo rispetto agli altri e ad ogni livello non è necessaria la conoscenza degli altri livelli, ma solo le modalità di interazione con i due livelli adiacenti (quello soprastante e quello sottostante).

Occorre subito sottolineare che questa suddivisione in livelli è un'astrazione, ovvero una rappresentazione simbolica della realtà. In altre parole, in un computer non esiste nulla che possa essere fisicamente identificato come un "livello" completamente distinto e separato dal resto (ad eccezione forse dell'hardware), ma esistono solo degli insiemi di processi in esecuzione che, per comodità di analisi e di progetto, conviene considerare come appartenenti a uno stesso livello. Un livello è dunque, in ultima analisi, un modo comodo per organizzare e suddividere concettualmente una realtà che altrimenti sarebbe troppo complessa da analizzare.

Per fare un esempio completamente diverso, si consideri per analogia la suddivisione dell'atmosfera terrestre in diversi strati:

Anche in questo caso si tratta di una suddivisione di comodo, utile per l'analisi ma che non corrisponde a una reale suddivisione fisica (non c'è nulla che fisicamente separi due strati dell'atmosfera e la separazione non è netta, ma graduale).

Allo stesso modo, tornando a parlare di comunicazioni e di protocolli di comunicazione, la suddivisione in livelli del processo di comunicazione è utile e conveniente in quanto consente di analizzare, progettare e modificare le diverse entità in gioco in modo abbastanza semplice ed efficiente (come vedremo meglio nel seguito). Si tratta insomma di un utile schema concettuale e organizzativo per affrontare la complessità di questo sistema.

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it