OSI Upper Layers Infrastructure
Composta di 3 livelli (del modello di riferimento OSI):
Sessione
Presentazione
Applicazione
Per quanto ci riguarda il livello di Sessione fornisce un servizio sostanzialmente equivalente a quello fornito da TCP di internet:
Trasferimento affidabile e trasparente di byte end-to-end tra due processi ovunque localizzati sulla rete.
Gestione "ben educata" della connessione, ed in particolare della fase di disconnessione
Livello di Presentazione
Il servizio di presentazione fornisce gli strumenti per scambiare informazione tra due moduli di una applicazione distribuita in modo tale che il suo significato sia conservato inalterato indipendentemente
dalla codifica utilizzata per rappresentare l'informazione durante il trasferimento
dalla codifica utilizzata per rappresentare localmente l'informazione sui due moduli/End-System
(per i quali possono essere diversi piattaforma HW, sistema operativo, linguaggio di programmazione, sistema di programmazione)
Problemi elementari di rappresentazione:
Elaboratori big-endian vs. elaboratori little-endian
Diversi linguaggi di programmazione utilizzano diverse strutture dati per rappresentare lo stesso tipo di informazione (e.g. anche i numeri interi!)
sizeof(int) puo' differire anche in diversi sistemi di programmazione per uno stesso linguaggio
Regole di allineamento diverse in diversi sistemi di programmazione per uno stesso linguaggio
Sintassi Astratta
Un dialogo applicativo coinvolge strutture dati arbitrariamente complesse (e che evolvono nel tempo: e.g. Mail)
message { envelope { source address { sender id, mail address, ... },
list of destination addresses { ... },
cc { ... }, bcc { ... },
date of submissal { ... },
message priority, acknowledge request }
content { date of compilation { ... },
subject { ... },
text { ... } }
attachments { ... }
... }
Insieme dei tipi di strutture dati coinvolti nel dialogo applicativo tra due moduli di una applicazione distribuita ::= sintassi astratta
Come definire in modo non ambiguo una sintassi astratta?
Come trasferire sulla rete una istanza di tipo di struttura dati di una sintassi astratta (un valore tipizzato) senza perdere informazione?
Risposta 1: Abstract Syntax Notation
Un linguaggio capace di descrivere
Una sintassi astratta
Valori tipizzati appartenenti alla sintasi astratta
Senza introdurre o considerare alcun vincolo machine-dependent e/o di rappresentazione.
"A level of indirection is placed between the application protocol and how a particular (virtual) machine might represent the data exchanged by that protocol.
A protocol specified using an abstract syntax notation is machine independent." (Rose)
In OSI e' definita un'unica abstract syntax notation: ASN.1
Nel mondo Internet esistono diversi linguaggi analoghi: XDR, Corba IDL
N.B. Java si basa su un principio diverso: tutte le macchine virtuali Java utilizzano la stessa rappresentazione dei dati
Risposta 2: Transfer Syntax Notation
Lo scopo di una transfer syntax notation e' di rappresentare in modo non ambiguo i valori dei tipi di strutture dati definiti in una sintassi astratta quando essi sono trasferiti sulla rete.
Applicare una sintassi di trasferimento consiste in
Prendere una struttura dati locale che in qualche modo rappresenta il valore di una struttura dati definita nella sintassi astratta e
Serializzare l'informazione (tipo e valore) in una stringa contigua di ottetti (secondo una particolare regola di codifica, la sintassi di trasferimento)
Che puo' essere trasmessa in rete utilizzando i servizi del livello di Sessione.
(e fare il percorso inverso in ricezione di una stringa contigua di otteti dal livello di Sessione)
Transfer Syntax Notation
Il risultato dell'applicazione della sintassi di trasferimento e' una rappresentazione concreta, che implica convenzioni su;
Bit e byte order
Lunghezza dei campi
Encodifica di quanti di informazione
...
In OSI sono definite diverse transfer syntax notation, ma una sola e' rilevante, BER (Basic Encoding Rules)
BER utilizza un approccio TLV. Un valore tipizzato e' codificato come una tripla
[Tag, Length, Value ]
Dove il campo Tag identifica esplicitamente il tipo di struttura dati di cui si rappresenta una istanza
N.B. XDR definisce sia una abstract syntax notation che una sintassi di trasferimento.
Servizi del Livello di Presentazione
Il Livello di Presentazione combina
La capacita' di convertire informazione in stringhe di ottetti (e viceversa)
Con il servizio di tasferimento affidabile di byte offerto dal Livello di Sessione
per offrire un servizio di trasferimento affidabile di informazione
Il Livello di Presentazione si articola in due tipi di servizi:
Context Management
Syntax Matching
Livello di Presentazione: Context Management
Nel colloquio tra due moduli di una applicazione distribuita possono essere utilizzate simultaneamente diverse sintassi astratte
Ogni sintassi astratta descrive infatti i PDU di un particolare protocollo applicativo
Ad ogni sintassi astratta possiamo poi appicare (in teoria) una diversa sintassi di trasferimento
Lo scopo del Context Management e' di gestire:
Quali sintassi astratte sono usate in un colloquio applicativo
Quale sintassi di trasferimento e' associata a ciascuna sintassi astratta
Ciascuna coppia [1 + 2] e' identificata nel Livello di Presentazione da un Presentation Context
Ogni P-SDU e' associata ad un Presentation Context che identifica univocamento quale e' il protocollo applicativo cui essa e' relativa
Livello di Presentazione: Syntax Matching
Lo scopo del servizio di Syntax Matching e' di mappare avanti/indietro
tra la rappresentazione locale di un valore della sintassi astratta (potenzialmente diversa per ciascun modulo dell'applicazione distribuita) e
la sua rappresentazione concreta sulla rete (comune per tutti i moduli)
Syntax Matching e Sistemi di Programmazione ASN.1
L'utilizzo di una abstract syntax notation formale consente di automatizzare i due processi di mapping impliciti nel servizio di syntax matching
Fase 1, off line: ASN.1 compiler
(definisce il mapping internal form abstract syntax)
input: un modulo ASN.1 che definisce una sintassi astratta
output:
La definizione dei tipi di strutture dati locali (e.g. tramite typedef del C) che devono essere usate per rappresentare i tipi di strutture dati definiti nella sintassi astratta
Una descrizione tabellare dei tipi di strutture dati della sintassi astratta e delle corrispondenti rappresentazioni locali (e.g. tramite variabili const del C)
Syntax Matching e Sistemi di Programmazione ASN.1
Fase 2, on line: ASN.1 run-time system (interprete)
(realizza, valore per valore, il mapping internal form transfer syntax)
input:
La descrizione tabellare dei tipi di strutture dati della sintassi astratta e delle corrispondenti rappresentazioni locali (output 2 della fase 1)
In caso di encodifica (il caso di decodifica e' simmetrico):
una struttura dati locale (e.g. una variabile C) che rappresenta un valore della sintassi astratta, e
l'identita' del relativo tipo di struttura dati ASN.1
output: In caso di encodifica (il caso di decodifica e' simmetrico):
la stringa di ottetti che contiene il PDU applicativo (cioe' il P-SDU) encodificato secondo BER
Livello Applicativo e Applicazioni Distribuite OSIlayer7
Livello Applicativo e Applicazioni Distribuite
Una applicazione distribuita e' costituita da diversi Application Process (AP) che interagiscono tra loro.
Tutti gli AP sono eseguiti nell'ambiente OSI, possibilmente su diversi nodi della rete
Gli aspetti comunicazionali di un AP sono rappresentati dalla sua Application Entity (AE), che e' una istanza del Livello Applicativo
Un AP puo' presentare diversi aspetti comunicazionali, e quindi includere diverse AE
(noi consideriamo solo il caso di AP con una sola AE)
Una AE e' composta da un insieme di Application Service Element (ASE)
Un ASE e' un modulo che realizza una specifica funzionalita' del Livello Applicativo OSI, e.g. il supporto RPC
Ogni ASE e' associato ad una sintassi astratta che definisce il protocollo con cui l'ASE interagisce con il suo pari remoto
AE, ASE, Application Context
Ciascun ASE ha interazioni remote solo con il proprio ASE corrispondente
Ogni ASE dell'AE e' associato ad un diverso Presentation Context, cosi' che ciascun A-PDU puo' essere de/codificato correttamente e consegnato all'ASE appropriato
Due AE che interagiscono tra loro devono essere composte esattamente con gli stessi ASE
In realta', per poter interagire tra loro due AE devono essere istanze di un medesimo Application Context (AC)
Un AC identifica un insieme di ASE piu' l'insieme di regole che governano le loro interazioni:
esso costituisce la ricetta con cui e' strutturato e funziona un AE che ne e' una istanza
regola quindi anche il comportamento dello user element dell'AE, e le sue interazioni con gli ASE e, tramite loro, con lo user element remoto
Ogni AC deve essere registrato presso ISO, che gli assegna un identificatore univoco
Application Context
Quali ASE compongono l'AE
(e quindi quali sintassi astratte vengono utilizzate)
Significato dello user element
Discipline di interazione degli ASE tra loro e con lo user element
(e.g. un ASE puo' fare uso o meno dei servizi di un altro ASE)
Discipline di comportamento degli ASE
(e.g. quali RPC sono chiamabili dall'AE che apre l'associazione e quali dall'altra)
Quale e' la sintassi di trasferimento associata a ciascuna sintassi astratta
Due AE, per interoperare correttamente, devono avere identico AC, cioe' devono essere dello stesso tipo
Indirizzamento di un AE
Ogni AE (e quindi ogni AP) puo' avere un nome (Application Entity Title, AET)
Un AET non e' utilizzabile direttamente per indirizzare l'AE
Per indirizzare una AE (e quindi un AP) si utilizza il suo PSAP: il PSAP di una AE e' univoco sulla rete OSI
Un AET puo' essere tradotto nel corrispondente PSAP da un name server (e.g. X.500)
Struttura di un PSAP
P-SEL S-SEL T-SEL NSAP NSAP NET + N-SEL
(nel mondo IP equivale sostanzialmente alla coppia IP address
+ transport protocol type)
ASE
ASE generici: progettati per essere utilizzabili in diversi application context
ACSE, Association Control Service Element
ROSE, Remote Operations Service Elelment
CCR, Commitment, Concurrency and Recovery
…
ASE specifici: progettati per essere utilizzati in uno specifico application context, anche se puo' capitare che siano utilizzabili in contesti diversi
CMISE, Common Management Information Servce Element
X.400, posta elettronica
X.500, Name Service
FTAM, File Transfer, Access and Management
MMS, Manufacturing Message System
…
ACSE, Association Control Service Element
ACSE e' l'ASE responsabile della gestione dell'associazione tra due AE
Percio' tutti gli application context OSI devono contenere ACSE
Una associazione e' una connessione di livello applicativo tra due AP, che sono indicati come l'initiator e il responder
Durante la creazione dell'associazione ACSE permette anche di
Validare l'application context di initiator e responder
Supportare l'autenticazione delle controparti
Negoziare i profili utilizzati dagli ASE dell'application context
ACSE: servizi e protocollo servizio
primitive
PDU
P-service
A-ASSOCIATE
req/ind
resp/conf
AARQ
AARE
P-CONNECT
A-RELEASE
req/ind,
resp/conf
RCRQ
RCRE
P-RELEASE
A-ABORT
req/ind
ABRT
P-U-ABORT
A-P-ABORT
ind
P-ABORT
Comments