Sei sulla pagina 1di 6

Livello Sessione

Il livello di sessione il 5 livello dal basso del modello ISO/OSI (International Organization for
Standardization/Open System Interconnection). Questo livello il primo (dal basso) di quelli
che competono esclusivamente all'utente, inteso come programma applicativo, ed alle
esigenze relative al dialogo tra applicazioni ed al loro scambio di dati. Mediante il livello di
sessione gli utenti possono stabilire dei collegamenti logici o sessioni di lavoro che consentano
il corretto trasferimento di informazioni. Occorre spiegare la differenza far le funzioni del livello
di trasporto e di quello di sessione. Anche il livello di trasporto si occupa, infatti, del coretto
trasferimento dei dati. La differenza consiste nel fatto che, mentre il livello di trasporto si
occupa di evitare la perdita di dati, il livello di sessione si occupa di evitare che il loro
significato venga deformato.
Facciamo lesempio di una conversazione telefonica. Potremmo dire che il livello di trasporto si
occupa di impedire che cada la linea, di impedire che dei disturbi elettrici sulla stessa rendano
non comprensibile la comunicazione, eccetera. Ma questo non basta a rendere adeguata la
qualit della conversazione. Infatti, se i due utenti che si stanno telefonando, non rispettano il
loro turno per parlare, i loro discorsi si sovrappongono rendendo impossibile la conversazione.
Occorre allora un sistema di sincronizzazione per fare in modo che la conversazione avvenga in
maniera ordinata ed ognuna delle persone coinvolte nella conversazione attenda
pazientemente il proprio turno per parlare. Analogamente occorre che si eviti linterruzione
brusca del collegamento prima che la sessione di lavoro sia terminata. Non banale anche il
problema di riprendere una sessione di lavoro dopo che si interrotta in caso di anomalie
sulla rete. Immaginiamo che un utente stesse per dire allaltro la seguente frase: Ci vediamo
domani, alle 10, in piazza Cavour. E supponiamo che cada la linea quando stata pronunciata
la frase Ci vediamo domani, alle 10, in pia Lutente ricompone il numero ma non
ricomincer certamente la conversazione con la frase zza Cavour. Occorre dunque che la
conversazione ricominci da un punto che abbia un senso logicamente completo, ad esempio
Ti stavo dicendo che ci vediamo domani, alle 10, in piazza Cavour.

Uscendo dallesempio, il livello di sessione si occupa dunque :

di evitare distorsioni sul significato logico dei messaggi costringendo i vari utenti della
sessione di lavoro a scambiarsi i dati rispettando unadeguata alternanza
(sincronizzazione).
Garantire una corretta risincronizzazione in caso di interruzione brusca della sessione di
lavoro in modo che non si riparta da un punto qualunque ma dallinizio di ununit
logicamente completa di dati.

Attivit:

Possiamo chiamare sessione la connessione che questo livello stabilisce tra due S_entit degli
utenti interessati e che viene utilizzata per trasferire, in entrambi i sensi, le informazioni
desiderate. Una volta instaurata una sessione, i suoi utenti, cio le P_entit di livello
presentazione dei due sistemi interconnessi, possono suddividere le informazioni scambiate
raggruppandole in gruppi omogenei, ed in qualche modo autonomi, detti attivit. Ad esempio,
se lo scopo del collegamento trasferire file potremmo associare ad ogni file una singola
attivit, oppure se lo scopo effettuare interrogazioni ad archivi remoti potremmo identificare
per ogni richiesta/risposta una specifica attivit.. Questa suddivisione logica non pretestuosa,
ma finalizzata ad individuare blocchi autonomi della comunicazione in corso che vengono
gestiti con trasferimenti indipendenti, vincolando l'inizio dell'attivit successiva all'effettiva
conclusione della precedente. lo strato di sessione si occupa soltanto di aprire e chiudere
unattivit. In tal modo si evitano probabili sovraccarichi del livello di trasporto e si offre al
livello di presentazione un quadro pi realistico della situazione del collegamento.
Per comprendere il problema facciamo due esempi.
Trasferimento dei file.
Supponiamo che debbano essere trasferiti pi file da un nodo allaltro. Si pone il problema di
indicare la fine di un file e linizio dellaltro. Il problema non semplice, se si ricorre, ad
esempio alla trasmissione di caratteri di controllo questi potrebbero coincidere casualmente
proprio con caratteri che appartengono al contenuto di un file, per cui questo potrebbe essere
interpretato non come un dato ma come la fine di un file. La gestione delle attivit unottima
soluzione alternativa. Prima di iniziare la trasmissione di un file, il livello di sessione indica al
nodo ricevitore che inizia unattivit. Terminata la trasmissione del file il livello di sessione
indica al ricevitore che terminata lattivit. In questo modo il ricevitore sa che terminata la
trasmissione del file e non pu confonderlo con quello successivo.
Le definizioni introdotte dall'ISO identificano la sessione come l'intervallo temporale necessario
ad avviare, eseguire e concludere un collegamento tra due utenti
distinti, mentre un'attivit uno specifico trasferimento con sincronizzazione autonoma
all'interno di una sessione. Quindi, in generale, la durata della sessione implica le fasi di
attivazione e rilascio della connessione ed una o pi attivit svolte sequenzialmente al suo
interno. Il caso di un'attivit relativa a due sessioni si pu verificare solo se l'attivit si
interrompe e la causa del blocco tale da consigliare la sconnessione e la successiva
attivazione di una nuova, in modo da riprendere la stessa attivit su una sessione diversa.

Punti di sincronizzazione:

I punti di sincronizzazione sono delle particolari S_PDU di controllo che svolgono la duplice
funzione di suddividere ulteriormente le attivit, anche senza fornire strumenti di controllo
diretto dell'avanzamento di questi sottoelementi, e soprattutto di mettere a disposizione dei
livelli superiori degli istanti caratterizzati in qualche modo all'interno delle informazioni
scambiate, in grado di essere usati come punti di riferimento sicuri cui l'utente finale pu
ricorrere in caso di anomalie nel programma. Come esempio facciamo riferimento ad un utente
informatico amatoriale che acceda ad una banca dati remota via modem (le cosiddette BBS);
trova un file interessante e ne richiede i l download, cio i l prelievo e scrittura nel suo
calcolatore. Un file consistente richiede molto tempo, specialmente se i l modem utilizzato
offre prestazioni modeste, ed quindi probabile che durante i l trasferimento si verifichino
situazioni anomale (cada la linea telefonica, si riempia i l supporto dove i l file doveva essere
scritto,...). In tal caso tutto quanto era gi stato ricevuto correttamente deve essere
abbandonato perch non sappiamo come specificare al calcolatore remoto da dove ripartire.
L'impiego dei punti di sincronizzazione serve proprio ad intercalare saltuariamente le
informazioni con queste S_PDU, ed offrire un punto da cui ripartire noto ad entrambi gli
interlocutori.

Token di interazione:

II terzo elemento innovativo del livello di sessione sono i cosiddetti token interazione. Si
detto che una sessione un collegamento tra S_entit paritarie, grado di trasferire dati in
modalit bidirezionale; a loro volta in una sessione possono essere scambiate singole attivit,
anche queste con funzionalit bidirezionale. Inoltre anche ai livelli superiori si pu decidere che
la sessione, naturalmente grado di gestire i due versi di flusso, offra servizi full-duplex o half-
duplex. Per regolare la direzione e le modalit di accesso a queste funzionalit (a livello di
S_entit, di attivit e di servizi offerti) i l livello sessione utilizza i token, cio S_PDU opportune,
che consentono al proprietario temporaneo del token (una certa S_entit) di avviare l'eventuale
scelta di flusso desiderata, corrispondente al tipo d i consenso posseduto.

Gestione dei punti di sincronizzazione:

All'interno di una attivit si possono distinguere pi unit di dialogo, anche di durata


consistente: nell'esempio dell'interrogazione di un archivio remoto, se l'attivit pu essere
associata ad ogni singola interrogazione allora per ogni attivit si pu distinguere un'unit di
dialogo relativa alla richiesta ed una per la risposta. All'interno delle singole unit possiamo
inserire e quindi individuare i punti di sincronizzazione, per gli scopi gi descritti, che
distinguiamo tra punti di sincronizzazione minore e maggiore.
Ricordiamo che lo scopo di questi controllo di delimitare le unit di dialogo e
di ripristino in caso di errore. I punti di sincronizzazione minore hanno l'obiettivo di
regolare lo scambio di dati all'interno di un'unit di dialogo e di fornire un pratico sistema
di recupero dei dati: possono essere inseriti in numero qualsiasi purch in zone temporali
interne alle unit e rappresentano l'ultimo istante in cui tutte le informazioni precedenti
sono gi state efficacemente acquisite ed in caso di anomalia si pu riprendere il
collegamento da quel punto. Sono una specie di acknowledge collettivo con possibilit di
recupero successivo.
Un punto di sincronizzazione maggiore ha invece un significato ed un effetto
diverso: viene usato per delimitare le singole unit di dialogo ed ha un effetto stop-and-wait
sul mittente.
Si noti che il livello sessione gestisce i punti di sincronizzazione, ma non svolge la
funzione di memorizzazione del resto dell'unit di dialogo o di attivit per assicurare il
corretto ripristino della comunicazione, che invece demandata ai livelli superiori.
Anche la rimessa in passo del sistema si differenzia a seconda della posizione
temporale in cui avviene il blocco rispetto ai precedenti. Ad esempio, se ci riferiamo
ancora alla figura, se la richiesta di ripristino avviene tra i punti di sincronizzazione minore (24)
e (25), i livelli superiori potranno scegliere di riprenderla comunicazione di uno qualsiasi tra i
punti (21) e (24). Generalmente dovrebbero riprendere dall'ultimo, il (24), ma non detto che
l'applicazione in corso lo ammetta, per cui si potrebbe dover ripartire dall'inizio dell'unit di
dialogo corrente.
Se invece la richiesta di ripristino si localizza temporalmente subito dopo il punto
(25), l'unica possibilit di ripartire dal (25) perch questo un punto di
sincronizzazione maggiore e la sua conferma causa anche la perdita (nei livelli superiori)
delle informazioni pregresse relative ad unit di dialogo precedenti. Un punt di questo
tipo rappresenta, in pratica, una barriera invalicabile per le altre S_PDU e un riferimento
sicuro e irreversibile per il collegamento.

La distinzione fondamentale tra unit di dialogo e attivit che la seconda pu anche essere
interrotta senza limiti di tempo e poi ripresa regolarmente. Questa caratteristica fa diventare
l'attivit un elemento pi vicino all'applicazione, mentre le unit di dialogo rappresentano
un'utilit per la gestione della sessione e quindi pi collegata con la connessione.
La scelta di identificare le singole attivit ed assegnare loro compiti ben precisi ovviamente di
pertinenza dei livelli superiori mentre il livello sessione deve curare solo la loro gestione come
trasferimento, senza alcuna possibilit di decidere 'quando' e 'perch' delle attivit.
Un'ultima osservazione relativa alle attivit che la numerazione dei punti di sincronizzazione
viene azzerata ad ogni inizio di attivit: questo succede in quanto tutta l'attivit in corso viene
memorizzata temporaneamente e viene scartata totalmente solo alla sua fine e quindi non
avrebbe senso usare ancora identificatori numerici relativi a punti che non possono pi essere
utilizzati.