# Livello di sessione

Modello OSI :
| 7. | Livello di applicazione |
| 6. | Livello di presentazione |
| 5. | Livello di sessione |
| 4. | Livello di trasporto |
| 3. | Livello di rete |
| 2. | Livello di collegamento dati Sottolivello LLC Sottolivello MAC |
| 1. | Livello fisico |
In telecomunicazioni il livello di sessione (session layer) è il quinto livello del modello OSI per le reti di calcolatori. Offre i servizi che consentono ad utenti operanti su macchine differenti di colloquiare tra loro attraverso la rete di comunicazione. In particolare, in questo livello vengono definite le regole per aprire e chiudere una connessione logica (Protocolli di connessione) e quelle indispensabili al trasferimento dei dati (Protocolli di comunicazione).
Il compito principale è quindi di coordinare il dialogo tra utenti basandosi sul servizio offerto dal livello di trasporto, offrendo i medesimi servizi offerti dal livello di trasporto (apertura-chiusura collegamento, connessione e trasferimento dati).
In pratica, quando lo strato superiore richiede l'apertura di un collegamento con un destinatario remoto, lo strato di sessione aprirà una connessione logica tra il nodo e la rete, utilizzando il corrispondente protocollo per definire la tipologia del collegamento (half o full-duplex).
In seguito, durante la fase di colloquio, sarà ancora lo strato di sessione che, in base al protocollo di comunicazione, gestirà il controllo del dialogo in modo che la trasmissione sia cadenzata da punti di sincronizzazione intermedi, da ciascun dei quali sia possibile far nuovamente partire la fase di trasferimento dei dati, in caso di errore.
In particolare il livello di sessione offre i seguenti servizi:

## Controllo di dialogo

Compiti:
* Possibilità di intervento su dialogo tra pari;
* Se ci sono errori nella connessione si ripristina la sessione (roll-back), utilizzando punti di sync;
* Gestione attività (start, end, restart, delete, ecc.);
* Eccezioni previste e notificate.

## Gestione recovery

Compito principale è il reset ed il ripristino della sessione tramite i punti di sync.

## Connessione con QoS negoziata

Si negozia tramite package di servizi dette unità funzionali. Inoltre esistono altri concetti, quello di attività e quello di unità di dialogo.

### Attività

Trasferimento con sync autonomo che può essere stoppato e ripreso.

### Unità di dialogo

Fasi in cui si può scomporre l'attività.

### Token

Esiste anche un Token, che può essere di 4 tipi:
* Dati;
* Rilascio (chiudere connessione);
* Sync > (di tipo stop & waiting, ossia dopo aver trasmesso un segmento aspetta l'ack);
* Sync < (all'interno di quello >, fatti in modo da ripristinare da quel punto la sessione in caso di errori).
A seconda dei dati, avremo 4 categorie di dati:
* Regolari (standard);
* Sollecitati (indipendenti da tutte le attività che non richiedono una gestione prioritaria del token);
* Digitati (privi di token);
* Di capacità (si usano per rinegoziare, ossia per modificare i dati. Per farlo invio un dato di capacità e posso farlo a patto di avere un token dati, un token di sync > ed uno di sync <).

## Esempi di software che usano il livello di sessione

* ADSP, AppleTalk Data Stream Protocol
* ASP, AppleTalk Session Protocol
* H.245, Call Control Protocol for Multimedia Communication
* iSNS, Internet Storage Name Service
* L2F, Layer 2 Forwarding Protocol
* L2TP Layer 2 Tunneling Protocol
* NetBIOS, Network Basic Input Output System
* PAP, Printer Access Protocol
* RPC, Remote Procedure Call Protocol
* PPTP Point-To-Point Tunnelling Protocol
* RSerPool, Reliable server pooling
* RTP, Real-time Transport Protocol
* RTCP, Real-time Transport Control Protocol
* SMPP, Short Message Peer-to-Peer
* SCP, Secure Copy Protocol
* SSH, Secure Shell
* ZIP, Zone Information Protocol
* SDP, Sockets Direct Protocol
* SQL, Structured Query Language
* NFS, Network File System