Applicazioni distribuite OSI

Slides:



Advertisements
Presentazioni simili
Informazioni di base sul funzionamento
Advertisements

1 LABORATORIO DI INFORMATICA Network Management 8. Transport Mapping Claudio Salati Copyright © 2001 by Claudio Salati ALMA MATER STUDIORUM - UNIVERSITA'
I dati: tipi e strutture U.D. 9 pag 334 L.S. Tron 4TC a.s. 2006/07.
Programmazione con socket
Web Services.
Java Enterprise Edition (JEE)
Massa Laura Mela Enrica
1 Semantica Operazionale di un frammento di Java: lo stato.
Gestione del processore
Frontespizio Economia Monetaria Anno Accademico
Alma Mater Studiorum - Universita' di Bologna Sede di Cesena
1 Reti di Calcolatori Esercitazione 5 Implementazione del TFTP tramite RPC Copyright © by D. Romagnoli & C. Salati Alma Mater Studiorum - Universita'
1 LABORATORIO DI INFORMATICA Network Management 2. Applicazioni distribuite OSI e applicazione di System Management Claudio Salati Copyright © 2001 by.
1 LABORATORIO DI INFORMATICA Network Management 3. Il linguaggio ASN Introduzione, Object Identifier, Esempio Claudio Salati Copyright © 2001 by.
I modelli di riferimento OSI e TCP/IP
3-1 User Datagram Protocol: UDP Crediti Parte delle slide seguenti sono adattate dalla versione originale di J.F Kurose and K.W. Ross (© All.
Come programmare servizi di rete?
Distributed Object Computing
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
1 Capitolo 2: Semplificazione, Ottimizzazione e Implicazione.
A.S.E.6.1 ARCHITETTURA DEI SISTEMI ELETTRONICI LEZIONE N° 6 Complemento a MComplemento a M Rappresentazione di numeri con segnoRappresentazione di numeri.
A.S.E.5.1 ARCHITETTURA DEI SISTEMI ELETTRONICI LEZIONE N° 5 Rappresentazione di numeri con segnoRappresentazione di numeri con segno –Modulo e segno (MS)
Programmazione su Reti
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
Realizzazione e caratterizzazione di una semplice rete neurale per la separazione di due campioni di eventi Vincenzo Izzo.
eliana minicozzi linguaggi1a.a lezione2
Memorie Condivise Distribuite
Architettura del World Wide Web
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
I protocolli TCP/UDP prof.: Alfio Lombardo.
1 Implementazione di Linguaggi 2 Implementazione di Linguaggi 2 Federico Bernardi Type checking 2° parte Type checking 2° parte - Equivalenza di type expressions.
La partita è molto combattuta perché le due squadre tentano di vincere fino all'ultimo minuto. Era l'ultima giornata del campionato e il risultato era.
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
JavaScript: Array JavaScript: Array.
Cos’è un problema?.
Università di Trieste Calcolatori Elettronici a.a Omero TuzziL01, Basi 1 Sommario: 1. Concetto di bit. 2. Indirizzi di memoria. 3. Ordinamento.
RETI E INTERNET.
Corso di Laurea in Ingegneria Gestionale
Strutture di controllo in C -- Flow Chart --
4 Cosa è una rete? ã Punto di vista logico: sistema di dati ed utenti distribuito ã Punto di vista fisico: insieme di hardware, collegamenti, e protocolli.
Corso di PHP.
Corso di Informatica per Giurisprudenza Lezione 7
La sicurezza può essere fornita in ciascuno degli strati: applicazione, trasporto, rete. Quando la sicurezza è fornita per uno specifico protocollo dello.
> Remote Authentication Dial In User Service
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
ISOIVA (LOCALE) TO ISOIVA (WEB) RIPARTIZIONE INFORMATICA UFFICIO APPLICATIVI AMMINISTRATIVI 13/04/2011 UNIVERSITÀ DEGLI STUDI DI FERRARA 1.
Gestione Informatica dei Dati Aziendali
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
Il modello di riferimento OSI
21 marzo 2002 (ri-)Avvisi: Giovedi 28 marzo la lezione e sospesa. Nuovo indirizzo di Spedire messaggi e esercizi solo.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
L’architettura a strati
Distributed System ( )7 TCP/IP four-layer model.
RETI DI CALCOLATORI Domande di riepilogo Prima Esercitazione.
Creato da Riccardo Nuzzone
Greco Rodolfo 2002 Application Trasport Network Phisic HTTP IP UDPTCP DNS SNAP MAC ARP L’utente fa una richiesta di pagina.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Livello di trasporto Protocolli TCP e UDP.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
1: Introduction1 Stratificazione protocollare (Protocol “Layering”) Le reti sono complesse! r Molti elementi: m host m router m link fisici dalle caratteristiche.
Servizi Internet Claudia Raibulet
Strato di accesso alla rete (network access layer); comprende le funzioni che nel modello OSI sono comprese negli strati fisico, di collegamento e parte.
Sistemi e Tecnologie della Comunicazione
ARCHITETTURA DI RETE Protocollo: insieme di regole che governano le comunicazioni tra i nodi di una rete. La condivisione di queste regole tra tutte gli.
Applicazione Presentazione Sessione Trasporto Rete Data link Fisico OSI Processo / Applicazione Trasporto Rete- Internet Interfaccia di.
INTERNET PROTOCOL SUITE FACOLTA’ DI INGEGNERIA Corso di Laurea Specialistica in Ingegneria delle Telecomunicazioni Docente: Prof. Pasquale Daponte Tutor:
1 Il livello transport. Concetti fondamentali - Canale logico e canale fisico 2 Quando un segnale deve essere trasmesso, viene inviato su un Canale, cioè.
Transcript della presentazione:

Applicazioni distribuite OSI Alma Mater Studiorum - Universita' di Bologna Sede di Cesena II Facolta' di Ingegneria Reti di Calcolatori Applicazioni distribuite OSI Vedi: M.T. Rose, The open book, Prentice Hall, sez. 10 (intro e 10.4), pagg. 379-380 e 420-440. ITU-T, Rec. X.219 - Remote Operations: Model, Notation and Service Definition. Copyright © 2006-2013 by Claudio Salati Lez. 6

OSI Upper Layers Infrastructure Composta di 3 livelli (del modello di riferimento OSI): Livello 5 - Sessione Livello 6 - Presentazione Livello 7 - 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. Setup di un’unica connessione a fronte di due richieste di apertura di connessione incrociate. Gestione "ben educata" della connessione, ed in particolare della fase di disconnessione (disconnessione ordinata).

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 e sistema di programmazione) Problemi elementari di rappresentazione dell'informazione: Elaboratori big-endian vs. elaboratori little-endian Diversi linguaggi/sistemi di programmazione utilizzano diverse strutture dati per rappresentare lo stesso tipo di informazione (e.g. anche i numeri interi!) Il valore di sizeof(int) puo' differire anche in diversi sistemi di programmazione per uno stesso linguaggio Regole di allineamento in memoria delle strutture dati diverse in diversi sistemi di programmazione per uno stesso linguaggio

Informazione vs. sua encodifica concreta Interi rappresentati con 4 byte Trascuriamo la differenza big-endian vs. little-endian Rappresentazione concreta del numero intero senza segno 1093: binaria: 0000 0000 0000 0000 0000 0100 0100 0101 BCD: 0000 0000 0000 0000 0001 0000 1001 0011 Rappresentazione concreta del numero intero con segno -1093: complemento a 2: 1111 1111 1111 1111 1111 1011 1011 1011 complemento a 1: 1111 1111 1111 1111 1111 1011 1011 1010 segno+BCD: 1000 0000 0000 0000 0001 0000 1001 0011 Rappresentazione concreta del numero intero con segno 1: complemento a 2: 0000 0000 0000 0000 0000 0000 0000 0001 complemento a 1: 0000 0000 0000 0000 0000 0000 0000 0001 Rappresentazione concreta del numero intero con segno - 1: complemento a 2: 1111 1111 1111 1111 1111 1111 1111 1111 complemento a 1: 1111 1111 1111 1111 1111 1111 1111 1110

Informazione vs. sua encodifica concreta Booleani rappresentati alla C, come un intero (su 4 byte) tutti a 0, se FALSE almeno 1 bit !=0 se TRUE alla Pascal, come 1 byte 0000 0000 se FALSE 0000 0001 se TRUE

Sintassi Astratta Un dialogo applicativo coinvolge strutture dati (informazioni) 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 un tipo di struttura dati della 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 sintassi astratta (purtroppo, non sempre) 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 (piu' o meno) analoghi: XDR, Corba IDL, XML schema, . . . N.B. Java si basa su un principio diverso: tutte le macchine virtuali Java utilizzano la stessa rappresentazione concreta delle informazioni. Ma l’approccio Java funziona solo stando all’interno del mondo Java!

“Senza vincoli machine-dependent o di rappresentazione” Approccio OSI (e un po’ anche C) Il range degli interi varia (in matematica e considerando tutti i possibili linguaggi di programmazione, attuali e futuri) da - a +, e quindi i valori interi che dobbiamo poter trasferire in rete devono poter essere di lunghezza variabile. Questo ci rende indipendenti dalla sizeof(int) di ogni particolare sistema di programmazione, ma cosa succede se dobbiamo trattare un valore intero di dimensione maggiore di quella supportata dal nostro sistema di programmazione? Approccio Java/XDR Anziche’ considerare un solo tipo intero, consideriamo una famiglia (finita) di tipi interi, ciascuno corrispondente ad un sub-range diverso degli interi della matematica. Ogni tipo avra’ sizeof() diversa ma fissa, e sceglieremo dei subrange corrispondenti a sizeof() effettivamente significative nei sistemi di programmazione reale, e.g. sizeof()=1, 2, 4, 8. Diversi sistemi di programmazione dovranno attrezzarsi per gestire tutti questi diversi sottotipi. Anche questa strategia ci rende indipendenti dalla sizeof(int) dei particolari sistemi di programmazione ed e’ piu’ semplice ed efficiente.

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 (rappresentazione concreta locale dell’informazione) rappresenta un valore di un tipo di struttura informativa definito nella sintassi astratta. Serializzare l'informazione tipizzata (tipo e valore? E’ veramente necessario trasferire esplicitamente l’informazione di tipo?) in una stringa contigua di ottetti (secondo una particolare regola di codifica, la sintassi di trasferimento). Trasmettere in rete al pari remoto la stringa di ottetti (encodifica) utilizzando i servizi del livello di Sessione/Trasporto. (e fare il percorso inverso al momento della ricezione di una stringa contigua di otteti dal livello di Sessione/Trasporto)

Transfer Syntax Notation Il risultato dell'applicazione della sintassi di trasferimento e' una rappresentazione concreta (di rete), 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. XDR definisce sia una abstract syntax notation che una transfer syntax notation (quest’ultima non e’ TLV: in particolare non trasmette mai esplicitamente sulla rete l’informazione di tipo).

PDU TCP (segmento)

Transfer Syntax Notation: esempio TCP Tutti i diversi PDU TCP sono varianti di un’unica struttura dati. In ricezione la protocol entity TCP conosce a priori la struttura dell’informazione che riceve. Come facciamo a sapere che una certa coppia di byte del segmento TCP rappresenta un valore di tipo “numero di porta”? Lo devo sapere a priori. In un segmento TCP le prime due coppie di byte rappresentano la porta mittente e quella destinazione. Quale e’ la rappresentazione concreta di rete di un numero di porta nel protocollo TCP? Binaria (unsigned) 16 bit (2 byte) Big-endian Anche XDR si basa sull’ipotesi che i tipi di dato atomici come interi e reali hanno una sintassi di trasferimento di lunghezza fissa.

XDR: Problema (finto) XDR definisce sia una abstract syntax notation che una sintassi di trasferimento. La transfer syntax notation XDR non e' di tipo TLV. Non contiene l'indicazione esplicita del tipo del valore. Non contiene l'indicazione esplicita della lunghezza dell'encodifica (quando cio’ e’ possibile). Contiene solo la parte content (V) di una codifica TLV. Ricevendo la stringa di bit 0000 0000 0000 0000 0000 0000 0000 0001 come fa il ricevente a discriminare se ha ricevuto il valore intero 1 (con o senza segno?) oppure il valore booleano TRUE? In XDR bisogna che il ricevitore conosca a priori il tipo del valore di cui riceve la encodifica di rete! Se so che mi sto aspettando un valore booleano allora so decodificare il valore ricevuto come TRUE.

Accordi a priori Detti anche: shared knowledge. Non c’e’ niente di strano nel fatto che una protocol entity ricevente conosca a priori la struttura dell’informazione che deve ricevere. TCP sa che deve ricevere un segmento TCP, di cui conosce a priori la struttura. UDP sa che deve ricevere un datagram UDP, di cui conosce a priori la struttura. IP sa che deve ricevere un datagram IP, di cui conosce a priori la struttura. Consentono di semplificare i programmi di rete perche’ riducono le informazioni che devono essere scambiate e gli accordi che devono essere presi esplicitamente (dinamicamente). Controesempio: quale dei 5 protocolli devono utilizzare due protocol entity di trasporto connection oriented OSI? Forse che e’ anche per questo che l’OSI e’ stato un fallimento?

Transfer Syntax Notation: esempi Valore booleano TRUE in BER e' rappresentato come un (content) byte !=0 in XDR: N.B.: tipo e lunghezza non sono trasportati esplicitamente 0000 0000 0000 0000 0000 0000 0000 0001 Valore booleano FALSE e' rappresentato come un (content) byte ==0 0000 0000 0000 0000 0000 0000 0000 0000   00 1 tag: BOOLEAN length content   00 1 tag: BOOLEAN length content

Transfer Syntax Notation: esempi Valore intero con segno 263 in BER in XDR: Consideriamo il tipo int su 32 bit: 0000 0000 0000 0000 0000 0001 0000 0111 Valore intero con segno -1 1111 1111 1111 1111 1111 1111 1111 1111 tag: INTEGER length -------- content ------- 00 2   2   0000 0001 0000 0111   00 2 1 1111 1111 tag: INTEGER length content

Servizi del Livello di Presentazione OSI 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 La funzionalita’ di conversione dell’informazione da/verso stringhe di ottetti si articola in: Context Management in internet non esiste, quando necessario e’ implementato a Livello 7 o addirittura a Livello Utente Syntax Matching esiste anche in internet, vedi XDR, IDL, XML Schema, … In realta’ il Servizio di Presentazione puo’ appoggiarsi anche al Servizio di Trasporto connectionless.

Livello di Presentazione OSI: 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 concreta locale (potenzialmente diversa per ciascun modulo dell'applicazione distribuita) di un valore della sintassi astratta e la sua rappresentazione concreta sulla rete (comune per tutti i moduli, e detta quindi "canonica")

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

Sistemi di programmazione ASN.1

OSI: 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

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 Service Element X.400, posta elettronica X.500, Name Service FTAM, File Transfer, Access and Management MMS, Manufacturing Message System

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

Internet: Livello Applicativo e Applicazioni Distribuite La struttura del Layer Applicativo e delle applicazioni distribuite nel mondo internet e’ simile (ma non uguale!) a quella del mondo OSI. La differenza principale e’ che di norma ogni ASE internet utilizza un proprio PSAP, e che ogni PSAP e’ mappato su un proprio socket (TSAP). In realta’ il Layer di Presentazione non e’ nemmeno realizzato come un vero e proprio layer ma solo come un insieme di funzioni capaci di svolgere il syntax matching per un certo protocollo applicativo. Non esiste quindi nemmeno un vero e proprio PSAP e un ASE si affaccia alla rete direttamente su un TSAP. Lato server, e’ quindi un TSAP che identifica un servizio. Nel caso di AE costituiti da piu’ di un ASE la funzione di context management e’ svolta da un equivalente del modulo user element.

Internet: Livello Applicativo e Applicazioni Distribuite In realta’ molte applicazioni internet sono costruite senza l’utilizzo esplicito dei servizi dei Layer di Presentazione e di Applicazione. Non e’ che le funzionalita’ fornite dai Layer di Presentazione e di Applicazione non siano presenti. E’ solo che le funzionalita’ fornite dai Layer di Presentazione e di Applicazione sono annegate all’interno dell’applicazione utente. I PDU applicativi sono descritti direttamente in termini di rappresentazione concreta di rete tramite mappe di byte o come sequenze di stringhe di caratteri. Non ne viene fornita una sintassi astratta, e il Layer di Presentazione non e’ isolato (se non a livello di programmazione) dal Layer di Applicazione e dall’applicazione utente. Vedi per contrasto gli esempi di architettura implementativa canonica, basata sui principi di layerizzazione OSI, rappresentati dalle esercitazioni 2 e 3.

Internet: Livello Applicativo e Applicazioni Distribuite User Application ASE.1 ASE.2 ASE.n Presentation Layer.1 Presentation Layer.2 Presentation Layer.n . . . TSAP.1 TSAP.2 TSAP.n Transport Layer

Esempio: applicazione di network management Due AP principali, Manager e Agent AE per il dialogo tra Manager-Agent: ASE SNMP ASE FTP (upload e download di log file, codice eseguibile, …) Altri AE/ASE presenti su Manager SMTP, per informare gli operatori di problemi rilevati: verso mail server FTP (upload e download di log file, codice eseguibile, …): verso file server HTTP per interfaccia uomo-macchina: verso browser

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     NSAP T-SEL S-SEL P-SEL NSAP  NET + N-SEL (nel mondo IP equivale sostanzialmente alla coppia IP address + transport protocol type)

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

servizio primitive PDU P-service ACSE: servizi e protocollo servizio primitive PDU P-service A-ASSOCIATE req/ind resp/conf AARQ AARE P-CONNECT A-RELEASE req/ind, RCRQ RCRE P-RELEASE A-ABORT ABRT P-U-ABORT A-P-ABORT ind   P-ABORT

ROSE, Remote Operations Service Element ROSE fornisce i meccanismi di base per supportare RPC Fornisce l'equivalente delle istruzioni CALL (RO-INVOKE) e RETURN (RO-RESULT) in ambiente distribuito Le generalizza in modo analogo a quanto fa Unix per il supporto della programmazione concorrente con le system call fork() e exit() / wait() Consente quindi di avere Procedure non confermate Chiamate non bloccanti Esecuzione concorrente da parte di un chiamante di piu' procedure chiamate (nota che cio' rende necessario potere individuare quale e' la procedura chiamata che e' terminata:  ogni chiamata e' battezzata con un invokeID univoco) Ritorni differenziati di successo e di errore

ROSE Semantica RPC supportata da ROSE: exactly-once Nei sistemi di programmazione distribuita name binding e type checking sono effettuati dinamicamente Non e' ROSE che e' responsabile di name binding e type checking, ma il cliente di ROSE, chi usa RO-notation per definire i prototipi delle RPC che vuole implementare RO-notation fornisce un linguaggio per scrivere lo header file di un modulo distribuito basato sui servizi di ROSE La definizione dell'interfaccia di una operazione remota tramite RO-notation e' puramente sintattica (signature) La semantica dell'operazione remota (il corpo della procedura che implementa l'operazione remota) e' de/scritta in linguaggio convenzionale (e.g. C)

ROSE: Remote Operations Model (X.219) Operations invoked by one AE (the invoker) are performed by the other AE (the performer). Operations may be classified according to whether the performer of an operation is expected to report its outcome: in case of success or failure a result reply is returned if the operation is successful, an error reply is returned if the operation is unsuccessful; in case of failure only no reply is returned if the operation is successful, an error reply is returned if the operation is unsuccessful; in case of success only a result reply is returned if the operation is successful, no reply is returned if the operation is unsuccessful; not at all neither a result nor an error reply is returned, whether the operation was successful or not.

ROSE: Remote Operations Model (X.219) Operations may also be classified according to two possible operation modes: synchronous, in which the invoker requires a reply from the performer before invoking another operation; asynchronous, in which the invoker may continue to invoke further operations without awaiting a reply. The following Operation Classes are defined: Operation Class 1: Synchronous, reporting success or failure (result or error). Operation Class 2: Asynchronous, reporting success or failure (result or error). Operation Class 3: Asynchronous, reporting failure (error) only, if any. Operation Class 4: Asynchronous, reporting success (result) only. Operation Class 5: Asynchronous, outcome not reported.

ROSE: Remote Operations Model (X.219) The Operation Class of each operation has to be agreed between application entities (e.g. in an Application Protocol Recommendation). In some cases it is useful to group operations into a set of linked-operations which is formed by one parent-operation and one or more child-operations. The performer of the parent-operation may invoke none, one, or more child-operations during the execution of the parent-operation. The invoker of the parent-operation is the performer of the child-operations. A child-operation may be a parent-operation of another set of linked-operations in a recursive manner.

ROSE: Linked operations (X.219)

servizio primitive PDU P-service ROSE: servizi e protocollo servizio primitive PDU P-service RO-INVOKE req / ind ROIV P-DATA RO-RESULT RORS RO-ERROR ROER RO-REJECT-U RORJ RO-REJECT-P ind

ROSE: servizio RO-INVOKE (X.219) The RO-INVOKE service is used by one ROSE-user (the invoker) to cause the invocation of an OPERATION to be performed by the other ROSE-user (the performer). This service is a non-confirmed service.

ROSE: servizio RO-INVOKE (X.219) Operation-value is the identifier of the operation to be invoked. Argument is the argument of the invoked operation. Invoke-ID identifies the request of a RO-INVOKE service and is used to correlate this request with the corresponding replies or the invocation of linked child-operations. Parameter name Request Indication Operation-value M M (=) Operation-class U Argument C (=) Invoke-ID Linked-ID Priority

ROSE: servizio RO-INVOKE (X.219) Operation-class defines whether a synchronous or an asynchronous reply is expected and the nature of the expected reply, i.e. result and/or error or none. If Linked-ID is present, the invoked operation is a child-operation and the parameter identifies the invocation of the linked parent-operation. The value is that of the Invoke-ID parameter of the RO-INVOKE indication primitive of the parent-operation. Priority defines the priority assigned to the transfer of the corresponding APDU with respect to the other APDUs to be exchanged between the AEs. The lower the value, the higher the priority. If several APDUs with the same priority are awaiting transfer, they are transferred "first in, first out".

ROSE: servizio RO-RESULT (X.219) The RO-RESULT service is used by a ROSE-user to reply to a previous RO-INVOKE indication in the case of a successfully performed operation. This service is a non-confirmed service.

ROSE: servizio RO-RESULT (X.219) Operation-value is the identifier of an invoked and successfully performed operation. The value is that of the corresponding RO-INVOKE indication primitive. This parameter shall be present only if the Result parameter is present. Result is the result of an invoked and successfully performed operation. Invoke-ID identifies the corresponding invocation. The value is that of the corresponding RO-INVOKE indication primitive . Parameter name Request Indication Operation - value C C ( = ) Result U Invoke - ID M M ( = ) Priority

ROSE: ritorni di errore RO-REJECT-P generato dal provider ROSE in caso di ricezione di un PDU malformato RO-REJECT-U generato dal cliente ROSE (e.g. CMISE) per indicare che ha riscontrato un errore di protocollo nella gestione della RPC e quindi, ad es. non ha potuto mettere in esecuzione la procedura richiesta. Ad es. fallimento nel name binding fallimento nel type checking RO-ERROR generato dall'applicazione finale che non e' riuscita a portare a termine con successo l'esecuzione dell'RPC (perche', ad es., non e' riuscita ad aprire un file indicato). La procedura remota e' pero' stata messa correttamente in esecuzione, ed ha eseguito fino al termine

ROSE: servizio RO-ERROR (X.219) The RO-ERROR service is used by a ROSE-user to reply to a previous RO-INVOKE indication in the case of an unsuccessfully performed operation. This service is a non-confirmed service.

ROSE: servizio RO-ERROR (X.219) Error-value identifies the error that occurred during the execution of the operation. Error-parameter provides additional information about the error . Invoke-ID identifies the corresponding invocation. The value is that of the corresponding RO-INVOKE indication primitive . Parameter name Request Indication Error-value M M ( = ) Error-parameter U C ( = ) Invoke-ID Priority

ROSE: servizio RO-REJECT-U (X.219) The RO-REJECT-U service is used by a ROSE-user to reject a request (RO-INVOKE indication) of the other ROSE-user if it has detected a problem. The RO-REJECT-U service may also be used by a ROSE-user to reject a reply (RO-RESULT indication, RO-ERROR indication) from the other ROSE-user. This service is a non-confirmed service.

ROSE: servizio RO-REJECT-U (X.219) Reject-reason specifies the reason for rejection as follows: Vedi pagina seguente Invoke-ID identifies identifies the corresponding invocation. The value is that of the rejected RO-INVOKE indication, RO-RESULT indication, or RO-ERROR indication primitive. Parameter name Request Indication Reject-reason M M ( = ) Invoke-ID Priority U

ROSE: servizio RO-REJECT-U (X.219) Reject-reason: possibili valori: Invoke-problem: user-reject of an RO-INVOKE indication with values: duplication-invocation unrecognized-operation mistyped-argument resource-limitation initiator-releasing unrecognized-linked-ID linked-response-unexpected Return-result-problem: user-reject of an RO-RESULT indication with values: unrecognized-invocation result-response-unexpected mistyped-result Return-error-problem: user-reject of an RO-ERROR indication with values: error-response-unexpected unrecognized-error unexpected-error mistyped-parameter

ROSE: servizio RO-REJECT-P (X.219) The RO-REJECT-P service is used to advise a ROSE-user of a problem detected by the ROSE-provider. This service is a provider-initiated service. The related service structure consists of a single service-primitive.

ROSE: servizio RO-REJECT-P (X.219) Invoke-ID identifies the corresponding invocation. Returned-parameters contains the parameters of the RO-INVOKE request, RO-RESULT request, RO-ERROR request or RO-REJECT-U request primitives, if the corresponding APDU could not be transferred by the ROSE-provider. This parameter and the parameter Reject-reason are mutually exclusive. Reject-reason specifies the reason for rejection as follows General-problem: provider-reject of an APDU with values: unrecognized-APDU mistyped-APDU badly-structured-APDU Parameter name Indication Invoke-ID O Returned-parameters Reject-reason